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

This is the chip specific include file for T32CZ20 UART 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 "tr_hal_gpio.h"
+ Include dependency graph for T32CZ20_uart.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  tr_hal_uart_settings_t
 

Macros

#define TR_NUMBER_OF_UARTS   3
 the T32CZ20 has 3 UARTs available for configuration. this is a chip constraint - can't change it.
 
#define LOW_BYTES_BUFFER_THRESHHOLD   16
 
#define MAX_RAW_TX_DATA_BUFFER_SIZE   256
 
#define DMA_RX_BUFF_MINIMUM_SIZE   16
 
#define TX_FIFO_SIZE   32
 
#define UART0_TX_PIN_DEFAULT   17
 UART0 TX default.
 
#define UART0_RX_PIN_DEFAULT   16
 UART0 RX default.
 
#define UART1_TX_PIN_DEFAULT   6
 UART1 TX default.
 
#define UART1_RX_PIN_DEFAULT   7
 UART1 RX default.
 
#define UART2_TX_PIN_DEFAULT   8
 UART2 TX default.
 
#define UART2_RX_PIN_DEFAULT   9
 UART2 RX default.
 
#define TR_HAL_PIN_NOT_SET   0xFF
 use for an unset pin
 
#define CHIP_MEMORY_MAP_UART0_BASE   (0x40012000UL)
 
#define CHIP_MEMORY_MAP_UART1_BASE   (0x40013000UL)
 
#define CHIP_MEMORY_MAP_UART2_BASE   (0x40025000UL)
 
#define TR_HAL_NUM_FULL_SPEED_BAUD_RATES   14
 
#define TR_HAL_NUM_LPM_BAUD_RATES   14
 
#define TR_HAL_NUM_LOW_SPEED_BAUD_RATES   10
 
#define TR_HAL_NUM_SLOW_CLOCK_BAUD_RATES   3
 
#define TR_HAL_NUM_BAUD_RATES
 
#define DEFAULT_UART0_CONFIG
 
#define DEFAULT_UART1_CONFIG
 
#define DEFAULT_UART2_CONFIG
 
#define TR_HAL_UART_EVENT_DMA_TX_COMPLETE   0x00000001
 
#define TR_HAL_UART_EVENT_DMA_RX_BUFFER_LOW   0x00000002
 
#define TR_HAL_UART_EVENT_DMA_RX_TO_USER_FX   0x00000004
 
#define TR_HAL_UART_EVENT_DMA_RX_READY   0x00000008
 
#define TR_HAL_UART_EVENT_TX_COMPLETE   0x00000010
 
#define TR_HAL_UART_EVENT_TX_STILL_GOING   0x00000020
 
#define TR_HAL_UART_EVENT_RX_TO_USER_FX   0x00000040
 
#define TR_HAL_UART_EVENT_RX_READY   0x00000080
 
#define TR_HAL_UART_EVENT_RX_ENDED_TO_USER_FX   0x00000100
 
#define TR_HAL_UART_EVENT_RX_ENDED_NO_DATA   0x00000200
 
#define TR_HAL_UART_EVENT_RX_MAYBE_READY   0x00000400
 
#define TR_HAL_UART_EVENT_RX_ERR_OVERRUN   0x00000800
 
#define TR_HAL_UART_EVENT_RX_ERR_PARITY   0x00001000
 
#define TR_HAL_UART_EVENT_RX_ERR_FRAMING   0x00002000
 
#define TR_HAL_UART_EVENT_RX_ERR_BREAK   0x00004000
 
#define TR_HAL_UART_EVENT_HW_FLOW_CONTROL   0x00008000
 
#define TR_HAL_UART_EVENT_UNEXPECTED   0x00010000
 

Typedefs

typedef void(* tr_hal_uart_receive_callback_t) (uint8_t received_byte)
 
typedef void(* tr_hal_uart_event_callback_t) (uint32_t event_bitmask)
 

Enumerations

enum  tr_hal_uart_id_t {
  UART_0_ID = 0 ,
  UART_1_ID = 1 ,
  UART_2_ID = 2
}
 this type is used to specify a UART ID. On the T32CZ20 there are 3 UARTs available. More...
 
enum  tr_hal_fifo_trigger_t {
  FCR_TRIGGER_1_BYTE = 0x00 ,
  FCR_TRIGGER_4_BYTES = 0x40 ,
  FCR_TRIGGER_8_BYTES = 0x80 ,
  FCR_TRIGGER_14_BYTES = 0xC0 ,
  FCR_NO_TRIGGER = 0xFF
}
 values we can trigger on for receive FIFO More...
 
enum  tr_hal_data_bits_t {
  LCR_DATA_BITS_5_VALUE = 0x00 ,
  LCR_DATA_BITS_6_VALUE = 0x01 ,
  LCR_DATA_BITS_7_VALUE = 0x02 ,
  LCR_DATA_BITS_8_VALUE = 0x03 ,
  LCR_DATA_BITS_INVALID_VALUE = 0xFF
}
 
enum  tr_hal_stop_bits_t {
  LCR_STOP_BITS_ONE_VALUE = 0x00 ,
  LCR_STOP_BITS_TWO_VALUE = 0x04 ,
  LCR_STOP_BITS_INVALID_VALUE = 0xFF
}
 
enum  tr_hal_parity_t {
  LCR_PARITY_NONE_VALUE = 0x00 ,
  LCR_PARITY_ODD_VALUE = 0x08 ,
  LCR_PARITY_EVEN_VALUE = 0x16 ,
  LCR_PARITY_INVALID_VALUE = 0xFF
}
 
enum  tr_hal_hw_fc_t {
  MCR_NO_FLOW_CONTROL_VALUE = 0x00 ,
  MCR_SET_RTS_READY = 0x02 ,
  MCR_SET_CTS_ENABLED = 0x20
}
 for setting up hardware flow control More...
 
enum  tr_hal_baud_rate_t {
  TR_HAL_UART_BAUD_RATE_2400 = 0 ,
  TR_HAL_UART_BAUD_RATE_4800 = 1 ,
  TR_HAL_UART_BAUD_RATE_9600 = 2 ,
  TR_HAL_UART_BAUD_RATE_14400 = 3 ,
  TR_HAL_UART_BAUD_RATE_19200 = 4 ,
  TR_HAL_UART_BAUD_RATE_28800 = 5 ,
  TR_HAL_UART_BAUD_RATE_38400 = 6 ,
  TR_HAL_UART_BAUD_RATE_57600 = 7 ,
  TR_HAL_UART_BAUD_RATE_76800 = 8 ,
  TR_HAL_UART_BAUD_RATE_115200 = 9 ,
  TR_HAL_UART_BAUD_RATE_230400 = 10 ,
  TR_HAL_UART_BAUD_RATE_500000 = 11 ,
  TR_HAL_UART_BAUD_RATE_1000000 = 12 ,
  TR_HAL_UART_BAUD_RATE_2000000 = 13 ,
  TR_HAL_UART_BAUD_RATE_LPM_2400 = 0 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LPM_4800 = 1 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LPM_9600 = 2 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LPM_14400 = 3 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LPM_19200 = 4 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LPM_28800 = 5 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LPM_38400 = 6 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LPM_57600 = 7 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LPM_76800 = 8 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LPM_115200 = 9 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LPM_230400 = 10 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LPM_500000 = 11 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LPM_1000000 = 12 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LPM_2000000 = 13 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LOW_SPEED_2400 = 0 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES + TR_HAL_NUM_LPM_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LOW_SPEED_4800 = 1 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES + TR_HAL_NUM_LPM_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LOW_SPEED_9600 = 2 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES + TR_HAL_NUM_LPM_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LOW_SPEED_14400 = 3 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES + TR_HAL_NUM_LPM_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LOW_SPEED_19200 = 4 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES + TR_HAL_NUM_LPM_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LOW_SPEED_28800 = 5 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES + TR_HAL_NUM_LPM_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LOW_SPEED_38400 = 6 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES + TR_HAL_NUM_LPM_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LOW_SPEED_57600 = 7 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES + TR_HAL_NUM_LPM_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LOW_SPEED_76800 = 8 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES + TR_HAL_NUM_LPM_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_LOW_SPEED_115200 = 9 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES + TR_HAL_NUM_LPM_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_SLOW_CLOCK_2400 = 0 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES + TR_HAL_NUM_LPM_BAUD_RATES + TR_HAL_NUM_LOW_SPEED_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_SLOW_CLOCK_4800 = 1 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES + TR_HAL_NUM_LPM_BAUD_RATES + TR_HAL_NUM_LOW_SPEED_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_SLOW_CLOCK_9600 = 2 + TR_HAL_NUM_FULL_SPEED_BAUD_RATES + TR_HAL_NUM_LPM_BAUD_RATES + TR_HAL_NUM_LOW_SPEED_BAUD_RATES ,
  TR_HAL_UART_BAUD_RATE_ERROR = TR_HAL_NUM_BAUD_RATES
}
 

Functions

UART_REGISTERS_Ttr_hal_uart_get_uart_register_address (tr_hal_uart_id_t uart_id)
 

Detailed Description

This is the chip specific include file for T32CZ20 UART 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.


Trident HAL UART Driver:

This module contains APIs for interacting with the Trident HAL for UART. This defines a struct to use for setting up a UART and APIs to transmit and receive from a UART. It also defines a struct that allows interaction with the chip registers.

before setting up a UART, pick how it will be used:

— transmit —

  1. transmit using the raw TX APIs
  2. transmit using DMA TX APIs

— receive —

  1. receive automatically in the user defined receive function (this is recommended)
  2. receive using DMA RX, where the app manages the DMA RX buffer
  3. receive using the raw API calls

UART configuration is done by setting fields in an instance of the tr_hal_uart_settings_t struct and then passing this instance to tr_hal_uart_init.

There is a define that can be used to initialize an instance to the default values for that particular UART. for instance, to init UART1 to default values set it to DEFAULT_UART1_CONFIG, like this: tr_hal_uart_settings_t g_uart1_settings = DEFAULT_UART1_CONFIG;

if a user defined receive function is set (rx_handler_function) then the Trident HAL will manage the chip interrupts and registers and will pass received bytes to this user receive function. This is the recommended way to get UART communication working. If this method is used then the app will just handle bytes that come in to the user receive function and can send responses using any of the TX APIs, for instance: tr_hal_uart_raw_tx_one_byte(UART_1_ID, &byte_to_send); tr_hal_uart_raw_tx_buffer(UART_1_ID, &bytes_to_send, send_length);

alternatively, the UART can be setup to use the chip DMA functions to transmit or receive bytes. Set the correct fields in the tr_hal_uart_settings_t to enable DMA TX (tx_dma_enabled) or DMA RX (rx_dma_enabled).

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