Driver for the cc2538 GPIO controller. More...
Driver for the cc2538 GPIO controller.
Header file with register and macro declarations for the cc2538 GPIO module
Definition in file cc2538_gpio.h.
 Include dependency graph for cc2538_gpio.h:
 Include dependency graph for cc2538_gpio.h: This graph shows which files directly or indirectly include this file:
 This graph shows which files directly or indirectly include this file:Go to the source code of this file.
| Data Structures | |
| struct | cc2538_gpio_t | 
| GPIO port component registers.  More... | |
| struct | cc2538_ioc_t | 
| IOC port component registers.  More... | |
| Macros | |
| #define | GPIO_PORT_SHIFT 3 | 
| Right-shift amount to obtain the port number from a GPIO number. | |
| #define | GPIO_BITS_PER_PORT ( 1 << GPIO_PORT_SHIFT ) | 
| Number of bits per GPIO port (8) | |
| #define | GPIO_BIT_MASK ( GPIO_BITS_PER_PORT - 1 ) | 
| Mask to obtain the bit number from a GPIO number. | |
| #define | PIN_MASK(n) ( 1 << (n) ) | 
| Generate a bit mask in which only the specified bit is high.  More... | |
| #define | GPIO_NUM_TO_PORT_NUM(gpio_num) ( (gpio_num) >> GPIO_PORT_SHIFT ) | 
| Extract the GPIO port number (0-3) from a GPIO number (0-31)  More... | |
| #define | GPIO_BIT_NUM(gpio_num) ( (gpio_num) & GPIO_BIT_MASK ) | 
| Extract the GPIO port bit number (0-7) from a GPIO number (0-31)  More... | |
| #define | GPIO_PXX_TO_NUM(port_num, bit_num) ( ((port_num) << GPIO_PORT_SHIFT) | (bit_num) ) | 
| Generate a GPIO number given a port and bit number.  More... | |
| #define | GPIO_NUM_TO_DEV(gpio_num) ( GPIO_A + GPIO_NUM_TO_PORT_NUM(gpio_num) ) | 
| Obtain the GPIO port instance given a GPIO number (0-31)  More... | |
| #define | gpio_hardware_control(gpio_num) ( GPIO_NUM_TO_DEV(gpio_num)->AFSEL |= PIN_MASK(GPIO_BIT_NUM(gpio_num)) ) | 
| Enable hardware (peripheral) control for a given GPIO pin number.  More... | |
| #define | gpio_software_control(gpio_num) ( GPIO_NUM_TO_DEV(gpio_num)->AFSEL &= ~PIN_MASK(GPIO_BIT_NUM(gpio_num)) ) | 
| Enable software control for a given GPIO pin number.  More... | |
| #define | gpio_dir_output(gpio_num) ( GPIO_NUM_TO_DEV(gpio_num)->DIR |= PIN_MASK(GPIO_BIT_NUM(gpio_num)) ) | 
| Configure the given GPIO as an output.  More... | |
| #define | gpio_dir_input(gpio_num) ( GPIO_NUM_TO_DEV(gpio_num)->DIR &= ~PIN_MASK(GPIO_BIT_NUM(gpio_num)) ) | 
| Configure the given GPIO as an input.  More... | |
| #define | cc2538_gpio_read(gpio_num) ( (GPIO_NUM_TO_DEV(gpio_num)->DATA >> GPIO_BIT_NUM(gpio_num)) & 1 ) | 
| Read the value of the given pin.  More... | |
| #define | cc2538_gpio_clear(gpio_num) ( GPIO_NUM_TO_DEV(gpio_num)->DATA &= ~PIN_MASK(GPIO_BIT_NUM(gpio_num)) ) | 
| Set a specific GPIO output pin low.  More... | |
| #define | GPIO_BASE (0x400d9000) | 
| GPIO port instance base address. | |
| #define | IOC ((cc2538_ioc_t *)0x400d4000) | 
| IOC instance definition. | |
| Enumerations | |
| enum | cc2538_ioc_over_t { OVERRIDE_DISABLE = 0x0, OVERRIDE_ANALOG = 0x1, OVERRIDE_PULLDOWN = 0x2, OVERRIDE_PULLUP = 0x4, OVERRIDE_ENABLE = 0x8 } | 
| Values to override pin configuration. | |
| Numeric representation of the four GPIO ports | |
| enum | { PORT_A = 0, PORT_B = 1, PORT_C = 2, PORT_D = 3 } | 
| Unique names for each GPIO port/pin combination | |
| 
 | |
| enum | { GPIO_PA0 = GPIO_PXX_TO_NUM(PORT_A, 0), GPIO_PA1 = GPIO_PXX_TO_NUM(PORT_A, 1), GPIO_PA2 = GPIO_PXX_TO_NUM(PORT_A, 2), GPIO_PA3 = GPIO_PXX_TO_NUM(PORT_A, 3), GPIO_PA4 = GPIO_PXX_TO_NUM(PORT_A, 4), GPIO_PA5 = GPIO_PXX_TO_NUM(PORT_A, 5), GPIO_PA6 = GPIO_PXX_TO_NUM(PORT_A, 6), GPIO_PA7 = GPIO_PXX_TO_NUM(PORT_A, 7), GPIO_PB0 = GPIO_PXX_TO_NUM(PORT_B, 0), GPIO_PB1 = GPIO_PXX_TO_NUM(PORT_B, 1), GPIO_PB2 = GPIO_PXX_TO_NUM(PORT_B, 2), GPIO_PB3 = GPIO_PXX_TO_NUM(PORT_B, 3), GPIO_PB4 = GPIO_PXX_TO_NUM(PORT_B, 4), GPIO_PB5 = GPIO_PXX_TO_NUM(PORT_B, 5), GPIO_PB6 = GPIO_PXX_TO_NUM(PORT_B, 6), GPIO_PB7 = GPIO_PXX_TO_NUM(PORT_B, 7), GPIO_PC0 = GPIO_PXX_TO_NUM(PORT_C, 0), GPIO_PC1 = GPIO_PXX_TO_NUM(PORT_C, 1), GPIO_PC2 = GPIO_PXX_TO_NUM(PORT_C, 2), GPIO_PC3 = GPIO_PXX_TO_NUM(PORT_C, 3), GPIO_PC4 = GPIO_PXX_TO_NUM(PORT_C, 4), GPIO_PC5 = GPIO_PXX_TO_NUM(PORT_C, 5), GPIO_PC6 = GPIO_PXX_TO_NUM(PORT_C, 6), GPIO_PC7 = GPIO_PXX_TO_NUM(PORT_C, 7), GPIO_PD0 = GPIO_PXX_TO_NUM(PORT_D, 0), GPIO_PD1 = GPIO_PXX_TO_NUM(PORT_D, 1), GPIO_PD2 = GPIO_PXX_TO_NUM(PORT_D, 2), GPIO_PD3 = GPIO_PXX_TO_NUM(PORT_D, 3), GPIO_PD4 = GPIO_PXX_TO_NUM(PORT_D, 4), GPIO_PD5 = GPIO_PXX_TO_NUM(PORT_D, 5), GPIO_PD6 = GPIO_PXX_TO_NUM(PORT_D, 6), GPIO_PD7 = GPIO_PXX_TO_NUM(PORT_D, 7) } | 
| GPIO shift and masking | |
| #define | GPIO_PORTNUM_SHIFT (12U) | 
| bit shift for GPIO port | |
| #define | GPIO_PORTNUM_MASK (0x00007000) | 
| bit mask for GPIO port [0-3] | |
| #define | GPIO_PIN_MASK (0x00000007) | 
| bit mask for GPIO pin [0-7] | |
| #define | GPIO_PORT_MASK (0xfffff000) | 
| bit mask for GPIO port addr | |
| GPIO instance definitions | |
| 
 | |
| #define | GPIO_A ((cc2538_gpio_t *)0x400d9000) | 
| GPIO Port A instance. | |
| #define | GPIO_B ((cc2538_gpio_t *)0x400da000) | 
| GPIO Port B instance. | |
| #define | GPIO_C ((cc2538_gpio_t *)0x400db000) | 
| GPIO Port C instance. | |
| #define | GPIO_D ((cc2538_gpio_t *)0x400dc000) | 
| GPIO Port D instance. | |
| Peripheral Signal Select Values (for IOC_Pxx_SEL registers) | |
| enum | cc2538_ioc_sel_t { UART0_TXD = 0, UART1_RTS, UART1_TXD, SSI0_TXD, SSI0_CLK_OUT, SSI0_FSS_OUT, SSI0_TX_SER, SSI1_TXD, SSI1_CLK_OUT, SSI1_FSS_OUT, SSI1_TX_SER, I2C_SDA_OUT, I2C_SCL_OUT, GPT0_ICP1, GPT0_ICP2, GPT1_ICP1, GPT1_ICP2, GPT2_ICP1, GPT2_ICP2, GPT3_ICP1, GPT3_ICP2 } | 
| Pin select for periphical functions | |
| enum | cc2538_ioc_pin_t { UART0_RXD = 0, UART1_CTS, UART1_RXD, SSI0_CLK, SSI0_RXD, SSI0_FSS_IN, SSI0_CLK_IN, SSI1_CLK, SSI1_RXD, SSI1_FSS_IN, SSI1_CLK_IN, I2C_SDA_IN, I2C_SCL_IN, GPT0_OCP1, GPT0_OCP2, GPT1_OCP1, GPT1_OCP2, GPT2_OCP1, GPT2_OCP2, GPT3_OCP1, GPT3_OCP2 } | 
| Values for IOC_PXX_OVER | |
| 
 | |
| #define | IOC_OVERRIDE_OE 0x00000008 | 
| Output Enable. | |
| #define | IOC_OVERRIDE_PUE 0x00000004 | 
| Pull Up Enable. | |
| #define | IOC_OVERRIDE_PDE 0x00000002 | 
| Pull Down Enable. | |
| #define | IOC_OVERRIDE_ANA 0x00000001 | 
| Analog Enable. | |
| #define | IOC_OVERRIDE_DIS 0x00000000 | 
| Override Disabled. | |
| Port control register addresses | |
| 
 | |
| #define | IOC_PXX_OVER (IOC->OVER) | 
| #define | IOC_PXX_SEL (IOC->SEL) |