Functions | |
void | IOCPortConfigureSet (uint32_t ui32IOId, uint32_t ui32PortId, uint32_t ui32IOConfig) |
Set the configuration of an IO port. More... | |
uint32_t | IOCPortConfigureGet (uint32_t ui32IOId) |
Get the configuration of an IO port. More... | |
void | IOCIOShutdownSet (uint32_t ui32IOId, uint32_t ui32IOShutdown) |
Set wake-up on an IO port. More... | |
void | IOCIOModeSet (uint32_t ui32IOId, uint32_t ui32IOMode) |
Set the IO Mode of an IO Port. More... | |
void | IOCIOIntSet (uint32_t ui32IOId, uint32_t ui32Int, uint32_t ui32EdgeDet) |
Setup interrupt detection on an IO Port. More... | |
void | IOCIOPortPullSet (uint32_t ui32IOId, uint32_t ui32Pull) |
Set the pull on an IO port. More... | |
void | IOCIOHystSet (uint32_t ui32IOId, uint32_t ui32Hysteresis) |
Configure hysteresis on and IO port. More... | |
void | IOCIOInputSet (uint32_t ui32IOId, uint32_t ui32Input) |
Enable/disable IO port as input. More... | |
void | IOCIOSlewCtrlSet (uint32_t ui32IOId, uint32_t ui32SlewEnable) |
Enable/disable the slew control on an IO port. More... | |
void | IOCIODrvStrengthSet (uint32_t ui32IOId, uint32_t ui32IOCurrent, uint32_t ui32DrvStrength) |
Configure the drive strength source and current mode of an IO port. More... | |
void | IOCIOPortIdSet (uint32_t ui32IOId, uint32_t ui32PortId) |
Setup the Port ID for this IO. More... | |
static void | IOCIntRegister (void(*pfnHandler)(void)) |
Register an interrupt handler for an IO edge interrupt. More... | |
static void | IOCIntUnregister (void) |
Unregisters an interrupt handler for a IO edge interrupt. More... | |
void | IOCIntEnable (uint32_t ui32IOId) |
Enables individual IO edge detect interrupt. More... | |
void | IOCIntDisable (uint32_t ui32IOId) |
Disables individual IO edge interrupt sources. More... | |
static void | IOCIntClear (uint32_t ui32IOId) |
Clears the IO edge interrupt source. More... | |
static uint32_t | IOCIntStatus (uint32_t ui32IOId) |
Returns the status of the IO interrupts. More... | |
void | IOCPinTypeGpioInput (uint32_t ui32IOId) |
Setup an IO for standard GPIO input. More... | |
void | IOCPinTypeGpioOutput (uint32_t ui32IOId) |
Setup an IO for standard GPIO output. More... | |
void | IOCPinTypeUart (uint32_t ui32Base, uint32_t ui32Rx, uint32_t ui32Tx, uint32_t ui32Cts, uint32_t ui32Rts) |
Configure a set of IOs for standard UART peripheral control. More... | |
void | IOCPinTypeSsiMaster (uint32_t ui32Base, uint32_t ui32Rx, uint32_t ui32Tx, uint32_t ui32Fss, uint32_t ui32Clk) |
Configure a set of IOs for standard SSI peripheral master control. More... | |
void | IOCPinTypeSsiSlave (uint32_t ui32Base, uint32_t ui32Rx, uint32_t ui32Tx, uint32_t ui32Fss, uint32_t ui32Clk) |
Configure a set of IOs for standard SSI peripheral slave control. More... | |
void | IOCPinTypeI2c (uint32_t ui32Base, uint32_t ui32Data, uint32_t ui32Clk) |
Configure a set of IOs for standard I2C peripheral control. More... | |
void | IOCPinTypeAux (uint32_t ui32IOId) |
Configure an IO for AUX control. More... | |
The Input/Output Controller (IOC) controls the functionality of the pins (called DIO). The IOC consists of two APIs:
For more information on the AON IOC see the AON IOC API.
A DIO is considered "software controlled" if it is configured for GPIO control which allows the System CPU to set the value of the DIO via the GPIO API. Alternatively, a DIO can be "hardware controlled" if it is controlled by other modules than GPIO.
The API functions can be grouped like this:
Configure all settings at the same time:
Configure individual settings:
Handle edge detection events:
Configure IOCs for typical use cases (can also be used as example code):
|
inlinestatic |
Clears the IO edge interrupt source.
The specified IO edge interrupt source is cleared, so that it no longer asserts. This function must be called in the interrupt handler to keep the interrupt from being recognized again immediately upon exit.
Definition at line 807 of file ioc.h.
void IOCIntDisable | ( | uint32_t | ui32IOId | ) |
Disables individual IO edge interrupt sources.
This function disables the indicated IO edge interrupt source. Only the sources that are enabled can be reflected to the processor interrupt; disabled sources have no effect on the processor.
void IOCIntEnable | ( | uint32_t | ui32IOId | ) |
Enables individual IO edge detect interrupt.
This function enables the indicated IO edge interrupt sources. Only the sources that are enabled can be reflected to the processor interrupt; disabled sources have no effect on the processor.
ui32IOId | is the IO to enable edge detect interrupt for. |
|
inlinestatic |
Register an interrupt handler for an IO edge interrupt.
This function does the actual registering of the interrupt handler. This function enables the global interrupt in the interrupt controller; specific IO interrupts must be enabled via IOCIntEnable(). It is the interrupt handler's responsibility to clear the interrupt source.
pfnHandler | is a pointer to the function to be called when the IOC interrupt occurs. |
Definition at line 702 of file ioc.h.
|
inlinestatic |
|
inlinestatic |
Unregisters an interrupt handler for a IO edge interrupt.
This function does the actual unregistering of the interrupt handler. It clears the handler to be called when an IO edge interrupt occurs.
Definition at line 729 of file ioc.h.
void IOCIODrvStrengthSet | ( | uint32_t | ui32IOId, |
uint32_t | ui32IOCurrent, | ||
uint32_t | ui32DrvStrength | ||
) |
Configure the drive strength source and current mode of an IO port.
The drive strength of an IO is configured by a combination of multiple settings in several modules. The drive strength source ui32DrvStrength
is used for controlling drive strength at different supply levels. When set to AUTO the battery monitor (BATMON) adjusts the drive strength to compensate for changes in supply voltage in order to keep IO current constant. Alternatively, drive strength source can be controlled manually by selecting one of three options each of which is configurable in the AON IOC by AONIOCDriveStrengthSet().
Each drive strength source has three current modes: Low-Current (LC), High-Current (HC), and Extended-Current (EC), and typically drive strength doubles when selecting a higher mode. I.e. EC = 2 x HC = 4 x LC.
ui32IOId | defines the IO to configure. |
ui32IOCurrent | selects the IO current mode.
|
ui32DrvStrength | sets the source for drive strength control of the IO port.
|
void IOCIOHystSet | ( | uint32_t | ui32IOId, |
uint32_t | ui32Hysteresis | ||
) |
Configure hysteresis on and IO port.
This function is used to enable/disable hysteresis on an IO.
ui32IOId | defines the IO to configure. |
ui32Hysteresis | enable/disable input hysteresis on IO. |
void IOCIOInputSet | ( | uint32_t | ui32IOId, |
uint32_t | ui32Input | ||
) |
Enable/disable IO port as input.
This function is used to enable/disable input on an IO.
ui32IOId | defines the IO to configure. |
ui32Input | enable/disable input on IO. |
void IOCIOIntSet | ( | uint32_t | ui32IOId, |
uint32_t | ui32Int, | ||
uint32_t | ui32EdgeDet | ||
) |
Setup interrupt detection on an IO Port.
This function is used to setup the interrupt detection on an IO.
ui32IOId | defines the IO to configure. |
ui32Int | enables/disables interrupt generation on this IO port. |
ui32EdgeDet | enables/disables edge detection events on this IO port. |
void IOCIOModeSet | ( | uint32_t | ui32IOId, |
uint32_t | ui32IOMode | ||
) |
Set the IO Mode of an IO Port.
This function is used to set the input/output mode of an IO.
ui32IOId | defines the IO to configure. |
ui32IOMode | sets the port IO Mode. |
void IOCIOPortIdSet | ( | uint32_t | ui32IOId, |
uint32_t | ui32PortId | ||
) |
Setup the Port ID for this IO.
The ui32PortId
specifies which functional peripheral to hook up to this IO.
void IOCIOPortPullSet | ( | uint32_t | ui32IOId, |
uint32_t | ui32Pull | ||
) |
Set the pull on an IO port.
This function is used to configure the pull on an IO.
ui32IOId | defines the IO to configure. |
ui32Pull | enables/disables pull on this IO port. |
void IOCIOShutdownSet | ( | uint32_t | ui32IOId, |
uint32_t | ui32IOShutdown | ||
) |
Set wake-up on an IO port.
This function is used to set the wake-up mode of an IO.
ui32IOId | defines the IO to configure. |
ui32IOShutdown | enables wake-up on LOW/HIGH by this IO port. |
void IOCIOSlewCtrlSet | ( | uint32_t | ui32IOId, |
uint32_t | ui32SlewEnable | ||
) |
Enable/disable the slew control on an IO port.
This function is used to enable/disable slew control on an IO.
ui32IOId | defines the IO to configure. |
ui32SlewEnable | enables/disables the slew control on an output. |
void IOCPinTypeAux | ( | uint32_t | ui32IOId | ) |
Configure an IO for AUX control.
Use this function to enable AUX to control a specific IO. Please note, that when using AUX to control the IO, the input/output control in the IOC is bypassed and completely controlled by AUX, so enabling or disabling input in the IOC has no effect.
ui32IOId | is the IO to setup for AUX usage.
|
Definition at line 746 of file ioc.c.
void IOCPinTypeGpioInput | ( | uint32_t | ui32IOId | ) |
void IOCPinTypeGpioOutput | ( | uint32_t | ui32IOId | ) |
void IOCPinTypeI2c | ( | uint32_t | ui32Base, |
uint32_t | ui32Data, | ||
uint32_t | ui32Clk | ||
) |
Configure a set of IOs for standard I2C peripheral control.
ui32Base | is the base address of the I2C module to connect to the IOs |
ui32Data | is the I2C data line
|
ui32Clk | is the I2C input clock
|
Definition at line 714 of file ioc.c.
void IOCPinTypeSsiMaster | ( | uint32_t | ui32Base, |
uint32_t | ui32Rx, | ||
uint32_t | ui32Tx, | ||
uint32_t | ui32Fss, | ||
uint32_t | ui32Clk | ||
) |
Configure a set of IOs for standard SSI peripheral master control.
ui32Base | is the base address of the SSI module to connect to the IOs |
ui32Rx | is the IO to connect to the SSI MISO line.
|
ui32Tx | is the IO to connect to the SSI MOSI line.
|
ui32Fss | is the IO to connect to the SSI FSS line.
|
ui32Clk | is the IO to connect to the SSI Clock output line.
|
Definition at line 590 of file ioc.c.
void IOCPinTypeSsiSlave | ( | uint32_t | ui32Base, |
uint32_t | ui32Rx, | ||
uint32_t | ui32Tx, | ||
uint32_t | ui32Fss, | ||
uint32_t | ui32Clk | ||
) |
Configure a set of IOs for standard SSI peripheral slave control.
ui32Base | is the base address of the SSI module to connect to the IOs |
ui32Rx | is the IO to connect to the SSI MOSI line.
|
ui32Tx | is the IO to connect to the SSI MISO line.
|
ui32Fss | is the IO to connect to the SSI FSS line.
|
ui32Clk | is the IO to connect to the SSI Clock input line. |
Definition at line 652 of file ioc.c.
void IOCPinTypeUart | ( | uint32_t | ui32Base, |
uint32_t | ui32Rx, | ||
uint32_t | ui32Tx, | ||
uint32_t | ui32Cts, | ||
uint32_t | ui32Rts | ||
) |
Configure a set of IOs for standard UART peripheral control.
The UART pins must be properly configured for the UART peripheral to function correctly. This function provides a typical configuration for those pin(s). Other configurations may work as well depending upon the board setup (for example, using the on-chip pull-ups).
ui32Base | is the base address of the UART module. |
ui32Rx | is the IO Id of the IO to use as UART Receive.
|
ui32Tx | is the IO Id of the IO to use as UART Transmit.
|
ui32Cts | is the IO Id of the IO to use for UART Clear to send.
|
ui32Rts | is the IO Id of the IO to use for UART Request to send.
|
Definition at line 551 of file ioc.c.
uint32_t IOCPortConfigureGet | ( | uint32_t | ui32IOId | ) |
Get the configuration of an IO port.
This function is used for getting the configuration of an IO.
Each IO port has a dedicated register for setting up the IO. This function returns the current configuration for the given IO.
void IOCPortConfigureSet | ( | uint32_t | ui32IOId, |
uint32_t | ui32PortId, | ||
uint32_t | ui32IOConfig | ||
) |
Set the configuration of an IO port.
This function is used to configure the functionality of an IO.
The ui32IOId
parameter specifies which IO to configure.
The ui32PortId
parameter specifies which functional peripheral to hook up to this IO.
The ui32IOConfig
parameter consists of a bitwise OR'ed value of all the available configuration modes
Definition at line 96 of file ioc.c.
Referenced by IOCPinTypeAux(), IOCPinTypeGpioInput(), IOCPinTypeGpioOutput(), IOCPinTypeI2c(), IOCPinTypeSsiMaster(), IOCPinTypeSsiSlave(), IOCPinTypeUart(), and SetupAfterColdResetWakeupFromShutDownCfg3().
#define IOC_BOTH_EDGES 0x00030000 |
Definition at line 254 of file ioc.h.
Referenced by IOCIOIntSet().
#define IOC_CURRENT_2MA 0x00000000 |
Definition at line 275 of file ioc.h.
Referenced by IOCIODrvStrengthSet(), and IOCPinTypeI2c().
#define IOC_CURRENT_4MA 0x00000400 |
Definition at line 276 of file ioc.h.
Referenced by IOCIODrvStrengthSet().
#define IOC_CURRENT_8MA 0x00000800 |
Definition at line 277 of file ioc.h.
Referenced by IOCIODrvStrengthSet().
#define IOC_FALLING_EDGE 0x00010000 |
Definition at line 252 of file ioc.h.
Referenced by IOCIOIntSet().
#define IOC_HYST_DISABLE 0x00000000 |
Definition at line 217 of file ioc.h.
Referenced by IOCIOHystSet(), and IOCPinTypeI2c().
#define IOC_HYST_ENABLE 0x40000000 |
Definition at line 216 of file ioc.h.
Referenced by IOCIOHystSet(), and SetupAfterColdResetWakeupFromShutDownCfg3().
#define IOC_INPUT_DISABLE 0x00000000 |
Definition at line 215 of file ioc.h.
Referenced by IOCIOInputSet().
#define IOC_INPUT_ENABLE 0x20000000 |
Definition at line 214 of file ioc.h.
Referenced by IOCIOInputSet(), and IOCPinTypeI2c().
#define IOC_INT_DISABLE 0x00000000 |
Definition at line 256 of file ioc.h.
Referenced by IOCIOIntSet(), and IOCPinTypeI2c().
#define IOC_INT_ENABLE 0x00040000 |
Definition at line 255 of file ioc.h.
Referenced by IOCIOIntSet().
#define IOC_IOMODE_INV 0x01000000 |
Definition at line 234 of file ioc.h.
Referenced by IOCIOModeSet().
#define IOC_IOMODE_NORMAL 0x00000000 |
Definition at line 233 of file ioc.h.
Referenced by IOCIOModeSet().
#define IOC_IOMODE_OPEN_DRAIN_INV 0x05000000 |
Definition at line 237 of file ioc.h.
Referenced by IOCIOModeSet().
#define IOC_IOMODE_OPEN_DRAIN_NORMAL 0x04000000 |
Definition at line 235 of file ioc.h.
Referenced by IOCIOModeSet(), and IOCPinTypeI2c().
#define IOC_IOMODE_OPEN_SRC_INV 0x07000000 |
Definition at line 242 of file ioc.h.
Referenced by IOCIOModeSet().
#define IOC_IOMODE_OPEN_SRC_NORMAL 0x06000000 |
Definition at line 240 of file ioc.h.
Referenced by IOCIOModeSet().
#define IOC_IOPULL_DOWN 0x00002000 |
Definition at line 266 of file ioc.h.
Referenced by IOCIOPortPullSet().
#define IOC_IOPULL_UP 0x00004000 |
Definition at line 265 of file ioc.h.
Referenced by IOCIOPortPullSet(), and IOCPinTypeI2c().
#define IOC_NO_EDGE 0x00000000 |
Definition at line 251 of file ioc.h.
Referenced by IOCIOIntSet(), and IOCPinTypeI2c().
#define IOC_NO_IOPULL 0x00006000 |
Definition at line 264 of file ioc.h.
Referenced by IOCIOPortPullSet().
#define IOC_NO_WAKE_UP 0x00000000 |
Definition at line 224 of file ioc.h.
Referenced by IOCIOShutdownSet(), and IOCPinTypeI2c().
#define IOC_PORT_AON_CLK32K 0x00000007 |
Definition at line 169 of file ioc.h.
Referenced by SetupAfterColdResetWakeupFromShutDownCfg3().
#define IOC_PORT_AUX_IO 0x00000008 |
Definition at line 170 of file ioc.h.
Referenced by IOCPinTypeAux().
#define IOC_PORT_GPIO 0x00000000 |
Definition at line 168 of file ioc.h.
Referenced by IOCPinTypeGpioInput(), and IOCPinTypeGpioOutput().
#define IOC_PORT_MCU_I2C_MSSCL 0x0000000E |
Definition at line 176 of file ioc.h.
Referenced by IOCPinTypeI2c().
#define IOC_PORT_MCU_I2C_MSSDA 0x0000000D |
Definition at line 175 of file ioc.h.
Referenced by IOCPinTypeI2c().
#define IOC_PORT_MCU_SSI0_CLK 0x0000000C |
Definition at line 174 of file ioc.h.
Referenced by IOCPinTypeSsiMaster(), and IOCPinTypeSsiSlave().
#define IOC_PORT_MCU_SSI0_FSS 0x0000000B |
Definition at line 173 of file ioc.h.
Referenced by IOCPinTypeSsiMaster(), and IOCPinTypeSsiSlave().
#define IOC_PORT_MCU_SSI0_RX 0x00000009 |
Definition at line 171 of file ioc.h.
Referenced by IOCPinTypeSsiMaster(), and IOCPinTypeSsiSlave().
#define IOC_PORT_MCU_SSI0_TX 0x0000000A |
Definition at line 172 of file ioc.h.
Referenced by IOCPinTypeSsiMaster(), and IOCPinTypeSsiSlave().
#define IOC_PORT_MCU_SSI1_CLK 0x00000024 |
Definition at line 193 of file ioc.h.
Referenced by IOCPinTypeSsiMaster(), and IOCPinTypeSsiSlave().
#define IOC_PORT_MCU_SSI1_FSS 0x00000023 |
Definition at line 192 of file ioc.h.
Referenced by IOCPinTypeSsiMaster(), and IOCPinTypeSsiSlave().
#define IOC_PORT_MCU_SSI1_RX 0x00000021 |
Definition at line 190 of file ioc.h.
Referenced by IOCPinTypeSsiMaster(), and IOCPinTypeSsiSlave().
#define IOC_PORT_MCU_SSI1_TX 0x00000022 |
Definition at line 191 of file ioc.h.
Referenced by IOCPinTypeSsiMaster(), and IOCPinTypeSsiSlave().
#define IOC_PORT_MCU_UART0_CTS 0x00000011 |
Definition at line 179 of file ioc.h.
Referenced by IOCPinTypeUart().
#define IOC_PORT_MCU_UART0_RTS 0x00000012 |
Definition at line 180 of file ioc.h.
Referenced by IOCPinTypeUart().
#define IOC_PORT_MCU_UART0_RX 0x0000000F |
Definition at line 177 of file ioc.h.
Referenced by IOCPinTypeUart().
#define IOC_PORT_MCU_UART0_TX 0x00000010 |
Definition at line 178 of file ioc.h.
Referenced by IOCPinTypeUart().
#define IOC_PORT_RFC_GPI1 0x00000034 |
Definition at line 205 of file ioc.h.
Referenced by IOCIOPortIdSet(), and IOCPortConfigureSet().
#define IOC_RISING_EDGE 0x00020000 |
Definition at line 253 of file ioc.h.
Referenced by IOCIOIntSet().
#define IOC_SLEW_DISABLE 0x00000000 |
Definition at line 213 of file ioc.h.
Referenced by IOCIOSlewCtrlSet(), and IOCPinTypeI2c().
#define IOC_SLEW_ENABLE 0x00001000 |
Definition at line 212 of file ioc.h.
Referenced by IOCIOSlewCtrlSet().
#define IOC_STD_INPUT |
Definition at line 292 of file ioc.h.
Referenced by IOCPinTypeAux(), IOCPinTypeGpioInput(), IOCPinTypeSsiMaster(), IOCPinTypeSsiSlave(), IOCPinTypeUart(), and SetupAfterColdResetWakeupFromShutDownCfg3().
#define IOC_STD_OUTPUT |
Definition at line 297 of file ioc.h.
Referenced by IOCPinTypeGpioOutput(), IOCPinTypeSsiMaster(), IOCPinTypeSsiSlave(), and IOCPinTypeUart().
#define IOC_STRENGTH_AUTO 0x00000000 |
Definition at line 279 of file ioc.h.
Referenced by IOCIODrvStrengthSet(), and IOCPinTypeI2c().
#define IOC_STRENGTH_MAX 0x00000300 |
Definition at line 281 of file ioc.h.
Referenced by IOCIODrvStrengthSet().
#define IOC_STRENGTH_MED 0x00000200 |
Definition at line 283 of file ioc.h.
Referenced by IOCIODrvStrengthSet().
#define IOC_STRENGTH_MIN 0x00000100 |
Definition at line 285 of file ioc.h.
Referenced by IOCIODrvStrengthSet().
#define IOC_WAKE_ON_HIGH 0x18000000 |
Definition at line 226 of file ioc.h.
Referenced by IOCIOShutdownSet().
#define IOC_WAKE_ON_LOW 0x10000000 |
Definition at line 225 of file ioc.h.
Referenced by IOCIOShutdownSet().
#define IOID_31 0x0000001F |
Definition at line 151 of file ioc.h.
Referenced by IOCIntClear(), IOCIntDisable(), IOCIntEnable(), IOCIntStatus(), IOCIODrvStrengthSet(), IOCIOHystSet(), IOCIOInputSet(), IOCIOIntSet(), IOCIOModeSet(), IOCIOPortIdSet(), IOCIOPortPullSet(), IOCIOShutdownSet(), IOCIOSlewCtrlSet(), IOCPinTypeAux(), IOCPinTypeGpioInput(), IOCPinTypeGpioOutput(), IOCPinTypeI2c(), IOCPinTypeSsiMaster(), IOCPinTypeSsiSlave(), IOCPinTypeUart(), IOCPortConfigureGet(), and IOCPortConfigureSet().
#define IOID_UNUSED 0xFFFFFFFF |
Definition at line 152 of file ioc.h.
Referenced by IOCPinTypeAux(), IOCPinTypeI2c(), IOCPinTypeSsiMaster(), IOCPinTypeSsiSlave(), and IOCPinTypeUart().