4.9. GPIO¶
4.9.1. Introduction¶
GPIO module allows application to manage General Purpose I/O instances and pins via simple portable APIs. Because of its simplicity, APIs are pin based and does not follow model of other drivers inside PDK which requires handle abstraction. The GPIO driver uses the GPIO utilitiy APIs extended by the CSL functional layer. For more information, see CSL.
Modes of Operation
Following modes of operations are supported Input or Output Each gpio pin can be configured as either input: GPIO_CFG_INPUT or output: GPIO_CFG_OUTPUT. If it is configured as an output then pin level can be additionally configured
Interrupt support Each gpio pin can be configured to generate interrupts based on event type GPIO_CFG_IN_INT_XXX configuration. To generate interrupt, gpio pin has to be configured as input pin.
Driver Configuration
Board Specific Configuration
All board specific configurations like enabling clock and pin-mux are required before calling any driver APIs. By default Board_Init() API available under board module supports all initialization sequence for TI supported EVMs. In addition it initializes UART instance for Console/STDIO. Refer PDK Board Support for additional details.
GPIO Configuration Structure
GPIO_soc.c binds driver with hardware attributes on the board. Hardware attributes includes base address, interrupt number etc. GPIO pin behavior can be configured statically, or alternatively dynamically during runtime.
GPIO_init () API triggers all static configuration information available through hardware attributes. Once initialization is complete additional APIs can be used to configure and access pins.
4.9.2. User Interface¶
For details about individual fields of this library structure, see the PDK doxygen documentation
4.9.2.1. APIs¶
API reference for Application:
#include <ti/drv/gpio/GPIO.h>
Below sequence indicates API calling sequence for a simple use case of LED toggling
...
Board_init(boardCfg);
GPIO_init();
While(1)
{
GPIO_write(Board_LED1, GPIO_PIN_VAL_HIGH);
Delay();
GPIO_write(Board_LED1, GPIO_PIN_VAL_LOW);
Delay();
}
4.9.3. Application¶
4.9.3.1. Examples¶
Refer SDK Release Note for GPIO support across different EVMs.
Name |
Description |
Expected Results
|
SoC Supported |
Build Type |
---|---|---|---|---|
GPIO_LedBlink |
Simple example demonstrating GPIO Toggling |
Toggles a pin from
WKUP & MAIN GPIO & prints
All tests have passed.
|
J721E, J7200, J721S2, J784S4, |
CCS project |