Trident IoT SDK
 
Loading...
Searching...
No Matches
T32CM11_gpio.h File Reference

This is the chip specific include file for T32CM11 GPIO Driver note that there is a common include file for this HAL module that contains the APIs (such as the init function) that should be used by the application. More...

#include "tr_hal_platform.h"
+ Include dependency graph for T32CM11_gpio.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

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

This is the chip specific include file for T32CM11 GPIO Driver note that there is a common include file for this HAL module that contains the APIs (such as the init function) that should be used by the application.


this chip has 32 numbered GPIOs, from 0-31 GPIOs 10,11,12,13 and 18,19 and 24,25,26,27 are not available for use

GPIOs are set to a mode that determines their function (GPIO, UART, SPI, etc) GPIOs can be set as input or output the drive strength, open drain, pull up, pull down, debounce can all be set

the user is encouraged to use the GPIO settings struct (tr_hal_gpio_settings_t) and tr_hal_gpio_init to set GPIO pins, since there is error checking in the init function

SPDX-License-Identifier: LicenseRef-TridentMSLA SPDX-FileCopyrightText: 2025 Trident IoT, LLC https://www.tridentiot.com