NOTICE: The Processors Wiki will End-of-Life on January 15, 2021. It is recommended to download any files or other content you may need that are hosted on processors.wiki.ti.com. The site is now set to read only.
Optimizing OMAP35x and AM/DM37x OFF mode PAD configuration
Introduction[edit]
OMAP35x and AM/DM37x have the ability to configure each I/O pad in 2 different modes: active mode and OFF mode, using the CONTROL_PADCONF_ registers in the System Control Module. In normal operating mode, the active mode configuration is valid.
In active mode, you can configure:
- the multiplexing mode for each pad (ie, which signal do you want to route to each pin)
- pull types (pull up or pull down) for each signal (only applicable if signal is an input)
- INPUTENABLE=0 (signal is output only), INPUTENABLE=1 (signal is bi-directional)
In low power situations, you can configure an alternative configuration for each I/O. This allows you to change the state of each I/O to optimize for power, because in many cases, board level voltages and states have changed in OFF mode. In OFF mode, you can configure:
- whether or not you want to enable the OFF mode configuration in OFF mode (OFFENABLE)
- configure as input or output (OFFOUTENABLE)
- configure pull up or down (OFFPULLUDENABLE and OFFPULLTYPESELECT). Note: only valid if signal is an input in OFF mode.
The following are guidelines for optimizing OFF mode and low-power active (called "standby" below) mode pad configurations (PADCONF). Each pin must be carefully considered, depending on its connection on the board, to avoid any potention leakage current.
Note: All configurable CONTROL_PADCONF_ registers need to be considered when attempting to optimize for low power consumption. This even applies to signals that are not associated with your package. To avoid any leakage current situation, you should step through every CONTROL_PADCONF register to ensure they are configured to a valid state. Use the table below as a guideline.
Guidelines[edit]
If the signal | Configure OFF mode pad configuration to | Configure Active standby mode pad configuration to |
is a no connect |
Input with pull down: OFFENABLE=1 OFFOUTENABLE=1 OFFOUTVALUE=don't care OFFPULLUDENABLE=1 OFFPULLTYPESELECT=0
|
Safe mode (or input) with pull down:
MUXMODE = 7 (or other if input) PULLTYPESELECT = 0 PULLUDENABLE = 1 INPUTENABLE = 1
|
is connected to an external component but not used and not driven. Also, no external pull ups (with active voltage during OFF or standby mode) or pull downs on this signal. | Input with pull down:
OFFENABLE=1 OFFOUTENABLE=1 OFFOUTVALUE=don't care OFFPULLUDENABLE=1 OFFPULLTYPESELECT=0 |
Safe mode (or input) with pull down
MUXMODE = 7 (or other if input) PULLTYPESELECT = 0 PULLUDENABLE = 1 INPUTENABLE = 1
|
is connected to an external pull up with an active voltage during OFF or standby mode | Disable OFF mode configuration:
OFFENABLE=0 |
Safe mode (or input) with no pull
MUXMODE = 7 (or other if input) PULLUDENABLE = 0 INPUTENABLE = 1
|
is connected to an external pull down. |
Disable OFF mode configuration: OFFENABLE=0 |
Safe mode (or input) with no pull
MUXMODE = 7 (or other if input) PULLUDENABLE = 0 INPUTENABLE = 1
|
needs to be driven low in OFF or standby mode (to keep another component shutdown, for example) |
Output a 0 in OFF mode: OFFENABLE=1 OFFOUTENABLE=0 OFFOUTVALUE=0
|
Output 0 using GPIO module (or keep appropriate peripheral module active) |
needs to be driven high in OFF or standby mode (to keep another component shutdown, for example) |
Output a 1 in OFF mode OFFENABLE=1 OFFOUTENABLE=0 OFFOUTVALUE=1 |
Output 1 using GPIO module (or keep appropriate peripheral module active) |
is being driven low/high by an external component in OFF or standby mode (or needs to be used as a wakeup event or interrupt) | Disable OFF mode configuration:
OFFENABLE=0 This will leave the active mode configuration intact during OFF mode |
Input mode with no pull
MUXMODE = various setting depending on application PULLUDENABLE = 0 INPUTENABLE = 1 |
More Tips[edit]
- When checking for external pull up, ensure that the voltage that the signal is pulled up to is active during OFF or standby mode. Typically, this is the 1.8V rail.
- OFF mode configuration bits override the active mode configuration when the device is in OFF mode. When you disable the OFF mode configuration (with OFFENABLE=0), then the active mode configuration take effect in OFF mode. If it is an input, the pad is isolated and the pull remains active. For an output, the value from active mode is latched before going into off mode, to drive the same value in off mode.
- Signals in which OFF mode does not apply
- all SDRC signals
- all JTAG signals
- I2C4, SYS_32K, SYS_NRESWARM,SYS_OFF_MODE, SYS_CLKOUT1
- GPIOs which are used as interrupt inputs into the device during OFF mode should be handled as follows:
- If the interrupt line will be driven high/low during OFF mode, configure to disable OFF mode (OFFENABLE=0). This will keep the active pad configuration valid for OFF mode
- If the interrupt line will not be driven high/low during OFF mode, configure OFF mode for input pull down.
- Identify signals that you want to hold external components in shutdown or power down modes. These signals should be setup to output high or low during OFF mode to keep those components in low power mode (alternatively, in standby mode, you will want to drive this signals using the GPIO module). Similarly, signals that gate clocks may also want to be held high or low.
- Generally, all I2C1-3 signals can be configured for OFF mode disabled, as these signals will typically have an external pull up on them. If you are not using an I2C port, configure OFF mode as input pulled down. For I2C4, which does not have OFF mode capabilities, configure for safe mode (MUXMODE = 7) if not using it.
- Ensure receive signals (eg, MCBSP_RX, MCSPI_SIMO/SOMI) are not being driven by external components during OFF or standby mode.
- SYS_BOOT pins, which are usually connected to pull up/down, should have their OFF mode disabled (OFFENABLE=0)