The IOC allows software to configure the pins based on the requirements of the application. The software can configure different characteristic settings for any or all of the I/O pins. All of the following features, except for output driver (output enable set in the GPIO:DOE31_0 or GPIO:DOE47_32 registers), are controlled in the IOC:IOCFGn registers:
- Drive Strength (IOC:IOCFGn.IOSTR)
- Configures the drive strength and maximum current of an I/O pin. All I/O pins support 2 mA and 4 mA, while five pins support up to 8 mA. By setting IOC:IOCFGn.IOSTR to 0x0, the drive strength is automatically updated based upon inputs from the battery monitor, BATMON, to maintain the set drive strength level at different battery voltages.
- Pull (IOC:IOCFGn.PULL_CTL)
- Configures a weak pull on an I/O pin. The following can be set: pullup, pulldown, or no pull. See the data sheet for specific pullup and pulldown resistance.
- Slew Control (IOC:IOCFGn.SLEW_RED)
- Sets normal or reduced slew rate on an I/O pin.
- Hysteresis (IOC:IOCFGn.HYST_EN)
- Enables or disables input hysteresis on an I/O pin.
- Open-Source or Open-Drain Configuration (IOC:IOCFGn.IOMODE)
- Configures the pin as normal, open source, or open drain; all of these can be set to either inverted or normal (noninverted).
- Interrupt and Edge Detection (IOC:IOCFGn.EDGE_IRQ_EN and IOC:IOCFGn.EDGE_DET)
- Enables interrupt triggered by edge detection on I/O pin. The following modes are supported:
- Rising edge
- Falling edge
- Trigger on both rising and falling
- No edge detection
- Input Driver (IOC:IOCFGn.IE)
- Enables or disables the I/O input driver.
- Output Driver (Depends on specific peripheral mapped to pin)