Search code examples
ioarmkernelprocessorgpio

Explanation of pad control functions in a Freescale processor?


Reading the MCIMX50 Application Processor Reference Manuals on page 1368 (Section 33.3) there is a list of the different possible control functions of the processors pads.

The list is:

  • SRE (1 bit slew rate control).
  • DSE (2 bits drive strength control).
  • ODE (1 bit open drain control).
  • HYS (1 bit hysteresis control).
  • PULL_KEEP_CTL (4 bits pull up/down and keeper controls)
  • PUS (2 bits pull up/down configuration value)
  • PUE (1 bit pull/keep select)
  • PKE (1 bit enable/disable pull up, pull down or keeper capability)
  • DDR_MODE_SEL (1 bit ddr_mode control)
  • DDR_INPUT (1 bit ddr_input control)

Can someone explain what each one of these are, preferably in an educative manner with links to additional information?

Thanks in advance.


Solution

  • SRE (1 bit slew rate control) - How fast the pin state changes from 0 to 1, since rapidly changing states takes more power & emits RF spikes, slowing it down if you can helps EMC. We run most of our GPIO pins at low slew rate apart from SPI & I2C which need to be fast.

    DSE (2 bits drive strength control). - How much current the IO pin will source/sink, again a power-saving / EMC thing as it's generally bad practice to hang loads directly from micro pins.

    ODE (1 bit open drain control). - Whether the pin pulls down to 0V for a low output or goes "open drain" (disconnected/floating), this is useful for some things like I2C where parts take it in turns to hold lines low or high.

    HYS (1 bit hysteresis control). - Look up Hysteresis on wikipedia, should tell you all you need to know.

    Pullups/downs etc. - basically whether the pin has an internal resistor connected to +v or 0v to stop things floating to some random/undesired value, usually used when the pin is an input.

    DDR_MODE_SEL (1 bit ddr_mode control) - Probably Data Direction Register, in other words is the pin an input or output

    DDR_INPUT (1 bit ddr_input control) - Not sure, the micro reference manual should give you some clue to this and all the others.

    Hope this helps!