Trident IoT SDK
 
Loading...
Searching...
No Matches
+ Collaboration diagram for GPIO CM11:

Data Structures

struct  GPIO_REGISTERS_T
 
struct  SYS_CTRL_REGISTERS_T
 offsets for where to find chip registers needed for System Control register which is used to configure GPIO pins (what mode are they in and pull up/down and open drain enable, etc see section 19.3 in the chip datasheet More...
 
struct  tr_hal_gpio_settings_t
 

Macros

#define TR_HAL_MAX_PIN_NUMBER   (32)
 max pin number
 
#define CHIP_MEMORY_MAP_GPIO_BASE   (0x40000000UL)
 chip register addresses section 3.1 of the data sheet explains the Memory map. this gives the base address for how to write the chip registers the chip registers are how the software interacts configures GPIOs, reads GPIOs, and gets/sets information on the chip We create a struct below that addresses the individual registers. This makes it so we can use this base address and a struct field to read or write a chip register
 
#define CHIP_MEMORY_MAP_SYS_CTRL_BASE   (0x40800000UL)
 
#define set_output_high   state
 
#define set_output_low   interrupt_status
 
#define GPIO_CHIP_REGISTERS   ((GPIO_REGISTERS_T *) CHIP_MEMORY_MAP_GPIO_BASE)
 
#define TR_HAL_NUM_PULL_REGISTERS   4
 defines for dealing with the SYS_CTRL pull registers, mode registers, and drive registers
 
#define TR_HAL_PINS_PER_PULL_REG   8
 
#define TR_HAL_NUM_MODE_REGISTERS   4
 
#define TR_HAL_PINS_PER_MODE_REG   8
 
#define TR_HAL_NUM_DRIVE_REGISTERS   2
 
#define TR_HAL_PINS_PER_DRIVE_REG   16
 
#define SYS_CTRL_CHIP_REGISTERS   ((SYS_CTRL_REGISTERS_T *) CHIP_MEMORY_MAP_SYS_CTRL_BASE)
 
#define SCC_UART0_CLOCK_BIT   16
 
#define SCC_UART1_CLOCK_BIT   17
 
#define SCC_UART2_CLOCK_BIT   18
 
#define TR_HAL_ENABLE_LITE_SLEEP   1
 
#define TR_HAL_ENABLE_DEEP_SLEEP   2
 
#define DEFAULT_GPIO_OUTPUT_CONFIG
 
#define DEFAULT_GPIO_INPUT_CONFIG
 

Typedefs

typedef void(* tr_hal_gpio_event_callback_t) (tr_hal_gpio_pin_t pin, tr_hal_gpio_event_t event)
 

Enumerations

enum  tr_hal_pin_mode_t {
  TR_HAL_GPIO_MODE_GPIO = 0 ,
  TR_HAL_GPIO_MODE_QSPI0 = 1 ,
  TR_HAL_GPIO_MODE_I2C = 4 ,
  TR_HAL_GPIO_MODE_UART = 6 ,
  TR_HAL_GPIO_MODE_I2S = 4 ,
  TR_HAL_GPIO_MODE_PWM = 4 ,
  TR_HAL_GPIO_MODE_PWM0 = 1 ,
  TR_HAL_GPIO_MODE_PWM1 = 2 ,
  TR_HAL_GPIO_MODE_PWM2 = 3 ,
  TR_HAL_GPIO_MODE_PWM3 = 5 ,
  TR_HAL_GPIO_MODE_PWM4 = 7 ,
  TR_HAL_GPIO_MODE_SPI0 = 1 ,
  TR_HAL_GPIO_MODE_SPI1 = 5 ,
  TR_HAL_GPIO_MODE_SPI0_CS1 = 2 ,
  TR_HAL_GPIO_MODE_SPI0_CS2 = 3 ,
  TR_HAL_GPIO_MODE_SPI0_CS3 = 6 ,
  TR_HAL_GPIO_MODE_MAX = 7
}
 these are the pin MODEs to be passed to tr_hal_gpio_set_mode note that these are defined by the chip and cannot be changed see section 19.3.3 of datasheet More...
 
enum  tr_hal_direction_t {
  TR_HAL_GPIO_DIRECTION_OUTPUT = 0 ,
  TR_HAL_GPIO_DIRECTION_INPUT = 1
}
 values for setting the direction in the Trident HAL GPIO APIs More...
 
enum  tr_hal_level_t {
  TR_HAL_GPIO_LEVEL_LOW = 0 ,
  TR_HAL_GPIO_LEVEL_HIGH = 1
}
 values for setting the level in the Trident HAL GPIO APIs More...
 
enum  tr_hal_trigger_t {
  TR_HAL_GPIO_TRIGGER_NONE = 0 ,
  TR_HAL_GPIO_TRIGGER_RISING_EDGE = 1 ,
  TR_HAL_GPIO_TRIGGER_FALLING_EDGE = 2 ,
  TR_HAL_GPIO_TRIGGER_EITHER_EDGE = 3 ,
  TR_HAL_GPIO_TRIGGER_LEVEL_LOW = 4 ,
  TR_HAL_GPIO_TRIGGER_LEVEL_HIGH = 5
}
 values for setting the interrupt trigger in the Trident HAL GPIO APIs More...
 
enum  tr_hal_pullopt_t {
  TR_HAL_PULLOPT_PULL_NONE = 0 ,
  TR_HAL_PULLOPT_PULL_DOWN_10K = 1 ,
  TR_HAL_PULLOPT_PULL_DOWN_100K = 2 ,
  TR_HAL_PULLOPT_PULL_DOWN_1M = 3 ,
  TR_HAL_PULLOPT_PULL_ALSO_NONE = 4 ,
  TR_HAL_PULLOPT_PULL_UP_10K = 5 ,
  TR_HAL_PULLOPT_PULL_UP_100K = 6 ,
  TR_HAL_PULLOPT_PULL_UP_1M = 7 ,
  TR_HAL_PULLOPT_MAX_VALUE = 7
}
 values for setting the pull option in the Trident HAL GPIO APIs NOTE: these CANNOT be changed. These are in the chip data sheet THESE ARE NOT ARBITRARY More...
 
enum  tr_hal_debounce_time_t {
  TR_HAL_DEBOUNCE_TIME_32_CLOCKS = 0 ,
  TR_HAL_DEBOUNCE_TIME_64_CLOCKS = 1 ,
  TR_HAL_DEBOUNCE_TIME_128_CLOCKS = 2 ,
  TR_HAL_DEBOUNCE_TIME_256_CLOCKS = 3 ,
  TR_HAL_DEBOUNCE_TIME_512_CLOCKS = 4 ,
  TR_HAL_DEBOUNCE_TIME_1024_CLOCKS = 5 ,
  TR_HAL_DEBOUNCE_TIME_2048_CLOCKS = 6 ,
  TR_HAL_DEBOUNCE_TIME_4096_CLOCKS = 7 ,
  TR_HAL_DEBOUNCE_TIME_MAX_VALUE = 7
}
 values for setting the debounce time register each individual GPIO can be set to enable or disable debounce but the debounce time is set globally for ALL GPIOs. NOTE: these CANNOT be changed. These come from the chip data sheet More...
 
enum  tr_hal_drive_strength_t {
  TR_HAL_DRIVE_STRENGTH_4_MA = 0 ,
  TR_HAL_DRIVE_STRENGTH_10_MA = 1 ,
  TR_HAL_DRIVE_STRENGTH_14_MA = 2 ,
  TR_HAL_DRIVE_STRENGTH_20_MA = 3 ,
  TR_HAL_DRIVE_STRENGTH_MAX = 3 ,
  TR_HAL_DRIVE_STRENGTH_DEFAULT = 3
}
 values for setting the GPIO drive strength in the Trident HAL APIs NOTE: these CANNOT be changed. These come from the chip data sheet More...
 
enum  tr_hal_wake_mode_t {
  TR_HAL_WAKE_MODE_NONE = 0 ,
  TR_HAL_WAKE_MODE_INPUT_LOW = 1 ,
  TR_HAL_WAKE_MODE_INPUT_HIGH = 2
}
 values for setting the GPIO wake mode More...
 
enum  tr_hal_gpio_event_t {
  TR_HAL_GPIO_EVENT_NONE = 0 ,
  TR_HAL_GPIO_EVENT_INPUT_TRIGGERED = 1
}
 GPIO interrupt callback functions. More...
 

Detailed Description



Macro Definition Documentation

◆ CHIP_MEMORY_MAP_GPIO_BASE

#define CHIP_MEMORY_MAP_GPIO_BASE   (0x40000000UL)

chip register addresses section 3.1 of the data sheet explains the Memory map. this gives the base address for how to write the chip registers the chip registers are how the software interacts configures GPIOs, reads GPIOs, and gets/sets information on the chip We create a struct below that addresses the individual registers. This makes it so we can use this base address and a struct field to read or write a chip register



◆ CHIP_MEMORY_MAP_SYS_CTRL_BASE

#define CHIP_MEMORY_MAP_SYS_CTRL_BASE   (0x40800000UL)

◆ DEFAULT_GPIO_INPUT_CONFIG

#define DEFAULT_GPIO_INPUT_CONFIG
Value:
{ \
.interrupt_trigger = TR_HAL_GPIO_TRIGGER_EITHER_EDGE, \
.event_handler_fx = NULL, \
.pull_mode = TR_HAL_PULLOPT_PULL_NONE, \
.enable_debounce = true, \
.wake_mode = TR_HAL_WAKE_MODE_NONE, \
.output_level = TR_HAL_GPIO_LEVEL_HIGH, \
.enable_open_drain = false, \
.drive_strength = TR_HAL_DRIVE_STRENGTH_DEFAULT \
}
@ TR_HAL_DRIVE_STRENGTH_DEFAULT
Definition T32CM11_gpio.h:333
@ TR_HAL_WAKE_MODE_NONE
Definition T32CM11_gpio.h:342
@ TR_HAL_PULLOPT_PULL_NONE
Definition T32CM11_gpio.h:290
@ TR_HAL_GPIO_DIRECTION_INPUT
Definition T32CM11_gpio.h:255
@ TR_HAL_GPIO_TRIGGER_EITHER_EDGE
Definition T32CM11_gpio.h:277
@ TR_HAL_GPIO_LEVEL_HIGH
Definition T32CM11_gpio.h:265

◆ DEFAULT_GPIO_OUTPUT_CONFIG

#define DEFAULT_GPIO_OUTPUT_CONFIG
Value:
{ \
.output_level = TR_HAL_GPIO_LEVEL_HIGH, \
.enable_open_drain = false, \
.drive_strength = TR_HAL_DRIVE_STRENGTH_DEFAULT, \
.interrupt_trigger = TR_HAL_GPIO_TRIGGER_NONE, \
.event_handler_fx = NULL, \
.pull_mode = TR_HAL_PULLOPT_PULL_NONE, \
.enable_debounce = false, \
.wake_mode = TR_HAL_WAKE_MODE_NONE, \
}
@ TR_HAL_GPIO_DIRECTION_OUTPUT
Definition T32CM11_gpio.h:254
@ TR_HAL_GPIO_TRIGGER_NONE
Definition T32CM11_gpio.h:274

default values so an app can quickly load a reasonable set of values for an input or output GPIO


◆ GPIO_CHIP_REGISTERS

#define GPIO_CHIP_REGISTERS   ((GPIO_REGISTERS_T *) CHIP_MEMORY_MAP_GPIO_BASE)

◆ SCC_UART0_CLOCK_BIT

#define SCC_UART0_CLOCK_BIT   16

◆ SCC_UART1_CLOCK_BIT

#define SCC_UART1_CLOCK_BIT   17

◆ SCC_UART2_CLOCK_BIT

#define SCC_UART2_CLOCK_BIT   18

◆ set_output_high

#define set_output_high   state

◆ set_output_low

#define set_output_low   interrupt_status

◆ SYS_CTRL_CHIP_REGISTERS

#define SYS_CTRL_CHIP_REGISTERS   ((SYS_CTRL_REGISTERS_T *) CHIP_MEMORY_MAP_SYS_CTRL_BASE)

◆ TR_HAL_ENABLE_DEEP_SLEEP

#define TR_HAL_ENABLE_DEEP_SLEEP   2

◆ TR_HAL_ENABLE_LITE_SLEEP

#define TR_HAL_ENABLE_LITE_SLEEP   1

◆ TR_HAL_MAX_PIN_NUMBER

#define TR_HAL_MAX_PIN_NUMBER   (32)

max pin number



◆ TR_HAL_NUM_DRIVE_REGISTERS

#define TR_HAL_NUM_DRIVE_REGISTERS   2

◆ TR_HAL_NUM_MODE_REGISTERS

#define TR_HAL_NUM_MODE_REGISTERS   4

◆ TR_HAL_NUM_PULL_REGISTERS

#define TR_HAL_NUM_PULL_REGISTERS   4

defines for dealing with the SYS_CTRL pull registers, mode registers, and drive registers



◆ TR_HAL_PINS_PER_DRIVE_REG

#define TR_HAL_PINS_PER_DRIVE_REG   16

◆ TR_HAL_PINS_PER_MODE_REG

#define TR_HAL_PINS_PER_MODE_REG   8

◆ TR_HAL_PINS_PER_PULL_REG

#define TR_HAL_PINS_PER_PULL_REG   8

Typedef Documentation

◆ tr_hal_gpio_event_callback_t

typedef void(* tr_hal_gpio_event_callback_t) (tr_hal_gpio_pin_t pin, tr_hal_gpio_event_t event)

Enumeration Type Documentation

◆ tr_hal_debounce_time_t

values for setting the debounce time register each individual GPIO can be set to enable or disable debounce but the debounce time is set globally for ALL GPIOs. NOTE: these CANNOT be changed. These come from the chip data sheet



Enumerator
TR_HAL_DEBOUNCE_TIME_32_CLOCKS 
TR_HAL_DEBOUNCE_TIME_64_CLOCKS 
TR_HAL_DEBOUNCE_TIME_128_CLOCKS 
TR_HAL_DEBOUNCE_TIME_256_CLOCKS 
TR_HAL_DEBOUNCE_TIME_512_CLOCKS 
TR_HAL_DEBOUNCE_TIME_1024_CLOCKS 
TR_HAL_DEBOUNCE_TIME_2048_CLOCKS 
TR_HAL_DEBOUNCE_TIME_4096_CLOCKS 
TR_HAL_DEBOUNCE_TIME_MAX_VALUE 

◆ tr_hal_direction_t

values for setting the direction in the Trident HAL GPIO APIs



Enumerator
TR_HAL_GPIO_DIRECTION_OUTPUT 
TR_HAL_GPIO_DIRECTION_INPUT 

◆ tr_hal_drive_strength_t

values for setting the GPIO drive strength in the Trident HAL APIs NOTE: these CANNOT be changed. These come from the chip data sheet



Enumerator
TR_HAL_DRIVE_STRENGTH_4_MA 
TR_HAL_DRIVE_STRENGTH_10_MA 
TR_HAL_DRIVE_STRENGTH_14_MA 
TR_HAL_DRIVE_STRENGTH_20_MA 
TR_HAL_DRIVE_STRENGTH_MAX 
TR_HAL_DRIVE_STRENGTH_DEFAULT 

◆ tr_hal_gpio_event_t

GPIO interrupt callback functions.



Enumerator
TR_HAL_GPIO_EVENT_NONE 
TR_HAL_GPIO_EVENT_INPUT_TRIGGERED 

◆ tr_hal_level_t

values for setting the level in the Trident HAL GPIO APIs



Enumerator
TR_HAL_GPIO_LEVEL_LOW 
TR_HAL_GPIO_LEVEL_HIGH 

◆ tr_hal_pin_mode_t

these are the pin MODEs to be passed to tr_hal_gpio_set_mode note that these are defined by the chip and cannot be changed see section 19.3.3 of datasheet



Enumerator
TR_HAL_GPIO_MODE_GPIO 
TR_HAL_GPIO_MODE_QSPI0 
TR_HAL_GPIO_MODE_I2C 
TR_HAL_GPIO_MODE_UART 
TR_HAL_GPIO_MODE_I2S 
TR_HAL_GPIO_MODE_PWM 
TR_HAL_GPIO_MODE_PWM0 
TR_HAL_GPIO_MODE_PWM1 
TR_HAL_GPIO_MODE_PWM2 
TR_HAL_GPIO_MODE_PWM3 
TR_HAL_GPIO_MODE_PWM4 
TR_HAL_GPIO_MODE_SPI0 
TR_HAL_GPIO_MODE_SPI1 
TR_HAL_GPIO_MODE_SPI0_CS1 
TR_HAL_GPIO_MODE_SPI0_CS2 
TR_HAL_GPIO_MODE_SPI0_CS3 
TR_HAL_GPIO_MODE_MAX 

◆ tr_hal_pullopt_t

values for setting the pull option in the Trident HAL GPIO APIs NOTE: these CANNOT be changed. These are in the chip data sheet THESE ARE NOT ARBITRARY



Enumerator
TR_HAL_PULLOPT_PULL_NONE 
TR_HAL_PULLOPT_PULL_DOWN_10K 
TR_HAL_PULLOPT_PULL_DOWN_100K 
TR_HAL_PULLOPT_PULL_DOWN_1M 
TR_HAL_PULLOPT_PULL_ALSO_NONE 
TR_HAL_PULLOPT_PULL_UP_10K 
TR_HAL_PULLOPT_PULL_UP_100K 
TR_HAL_PULLOPT_PULL_UP_1M 
TR_HAL_PULLOPT_MAX_VALUE 

◆ tr_hal_trigger_t

values for setting the interrupt trigger in the Trident HAL GPIO APIs



Enumerator
TR_HAL_GPIO_TRIGGER_NONE 
TR_HAL_GPIO_TRIGGER_RISING_EDGE 
TR_HAL_GPIO_TRIGGER_FALLING_EDGE 
TR_HAL_GPIO_TRIGGER_EITHER_EDGE 
TR_HAL_GPIO_TRIGGER_LEVEL_LOW 
TR_HAL_GPIO_TRIGGER_LEVEL_HIGH 

◆ tr_hal_wake_mode_t

values for setting the GPIO wake mode



Enumerator
TR_HAL_WAKE_MODE_NONE 
TR_HAL_WAKE_MODE_INPUT_LOW 
TR_HAL_WAKE_MODE_INPUT_HIGH