Trident IoT SDK
 
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Loading...
Searching...
No Matches
+ Collaboration diagram for UART CZ20:

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



Macro Definition Documentation

◆ CHIP_MEMORY_MAP_UART0_BASE

#define CHIP_MEMORY_MAP_UART0_BASE   (0x40012000UL)

section 2.2 of the data sheet explains the Memory map this gives the base address for how to write the UART registers the UART registers are how the software interacts with the UART peripheral. 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_UART1_BASE

#define CHIP_MEMORY_MAP_UART1_BASE   (0x40013000UL)

◆ CHIP_MEMORY_MAP_UART2_BASE

#define CHIP_MEMORY_MAP_UART2_BASE   (0x40025000UL)

◆ DEFAULT_UART0_CONFIG

#define DEFAULT_UART0_CONFIG
Value:
{ \
.hardware_flow_control_enabled = false, \
.clock_to_use = TR_HAL_CLOCK_32M, \
.data_bits = LCR_DATA_BITS_8_VALUE, \
.stop_bits = LCR_STOP_BITS_ONE_VALUE, \
.parity = LCR_PARITY_NONE_VALUE, \
.rx_dma_enabled = false, \
.tx_dma_enabled = false, \
.rx_dma_buffer = NULL, \
.rx_dma_buff_length = 0, \
.raw_tx_buffer = NULL, \
.raw_tx_buff_length = 0, \
.rx_handler_function = NULL, \
.rx_bytes_before_trigger = FCR_TRIGGER_1_BYTE, \
.enable_chip_interrupts = true, \
.interrupt_priority = TR_HAL_INTERRUPT_PRIORITY_5, \
.wake_on_interrupt = false, \
.event_handler_fx = NULL, \
.run_when_sleeping = true, \
.sleep_baud_rate = TR_HAL_UART_BAUD_RATE_115200, \
.sleep_clock_to_use = TR_HAL_CLOCK_1M, \
}
@ TR_HAL_INTERRUPT_PRIORITY_5
Definition tr_hal_platform.h:44
@ TR_HAL_CLOCK_32M
Definition T32CZ20_power.h:205
@ TR_HAL_CLOCK_1M
Definition T32CZ20_power.h:215
#define UART0_RX_PIN_DEFAULT
UART0 RX default.
Definition T32CZ20_uart.h:115
#define TR_HAL_PIN_NOT_SET
use for an unset pin
Definition T32CZ20_uart.h:128
#define UART0_TX_PIN_DEFAULT
UART0 TX default.
Definition T32CZ20_uart.h:113
@ LCR_DATA_BITS_8_VALUE
Definition T32CZ20_uart.h:177
@ TR_HAL_UART_BAUD_RATE_115200
Definition T32CZ20_uart.h:458
@ LCR_PARITY_NONE_VALUE
Definition T32CZ20_uart.h:198
@ LCR_STOP_BITS_ONE_VALUE
Definition T32CZ20_uart.h:187
@ FCR_TRIGGER_1_BYTE
Definition T32CZ20_uart.h:161
pin type
Definition tr_hal_platform.h:23

◆ DEFAULT_UART1_CONFIG

#define DEFAULT_UART1_CONFIG
Value:
{ \
.hardware_flow_control_enabled = false, \
.clock_to_use = TR_HAL_CLOCK_32M, \
.data_bits = LCR_DATA_BITS_8_VALUE, \
.stop_bits = LCR_STOP_BITS_ONE_VALUE, \
.parity = LCR_PARITY_NONE_VALUE, \
.rx_dma_enabled = false, \
.tx_dma_enabled = false, \
.rx_dma_buffer = NULL, \
.rx_dma_buff_length = 0, \
.raw_tx_buffer = NULL, \
.raw_tx_buff_length = 0, \
.rx_handler_function = NULL, \
.rx_bytes_before_trigger = FCR_TRIGGER_1_BYTE, \
.enable_chip_interrupts = true, \
.interrupt_priority = TR_HAL_INTERRUPT_PRIORITY_5, \
.wake_on_interrupt = false, \
.event_handler_fx = NULL, \
.run_when_sleeping = false, \
}
#define UART1_RX_PIN_DEFAULT
UART1 RX default.
Definition T32CZ20_uart.h:120
#define UART1_TX_PIN_DEFAULT
UART1 TX default.
Definition T32CZ20_uart.h:118

◆ DEFAULT_UART2_CONFIG

#define DEFAULT_UART2_CONFIG
Value:
{ \
.hardware_flow_control_enabled = false, \
.clock_to_use = TR_HAL_CLOCK_32M, \
.data_bits = LCR_DATA_BITS_8_VALUE, \
.stop_bits = LCR_STOP_BITS_ONE_VALUE, \
.parity = LCR_PARITY_NONE_VALUE, \
.rx_dma_enabled = false, \
.tx_dma_enabled = false, \
.rx_dma_buffer = NULL, \
.rx_dma_buff_length = 0, \
.raw_tx_buffer = NULL, \
.raw_tx_buff_length = 0, \
.rx_handler_function = NULL, \
.rx_bytes_before_trigger = FCR_TRIGGER_1_BYTE, \
.enable_chip_interrupts = true, \
.interrupt_priority = TR_HAL_INTERRUPT_PRIORITY_5, \
.wake_on_interrupt = false, \
.event_handler_fx = NULL, \
.run_when_sleeping = false, \
}
#define UART2_RX_PIN_DEFAULT
UART2 RX default.
Definition T32CZ20_uart.h:125
#define UART2_TX_PIN_DEFAULT
UART2 TX default.
Definition T32CZ20_uart.h:123

◆ DMA_RX_BUFF_MINIMUM_SIZE

#define DMA_RX_BUFF_MINIMUM_SIZE   16

If using a DMA buffer we enforce a minimum size. This is a software setting, and current set to equal the FIFO RX size

◆ LOW_BYTES_BUFFER_THRESHHOLD

#define LOW_BYTES_BUFFER_THRESHHOLD   16

this sets a threshhold for the number of bytes left in the DMA buffer before we should notify the user via an event. This is a software setting, and it can be adjusted/changed

◆ MAX_RAW_TX_DATA_BUFFER_SIZE

#define MAX_RAW_TX_DATA_BUFFER_SIZE   256

This defines the maximum size buffer the raw tx API can take in to transmit. this is a software setting, and it can be adjusted. if adjusting, note that this uses 3x the RAM since we have 3 UARTs.

◆ TR_HAL_NUM_BAUD_RATES

#define TR_HAL_NUM_BAUD_RATES
Value:
#define TR_HAL_NUM_LOW_SPEED_BAUD_RATES
Definition T32CZ20_uart.h:432
#define TR_HAL_NUM_FULL_SPEED_BAUD_RATES
Definition T32CZ20_uart.h:430
#define TR_HAL_NUM_LPM_BAUD_RATES
Definition T32CZ20_uart.h:431
#define TR_HAL_NUM_SLOW_CLOCK_BAUD_RATES
Definition T32CZ20_uart.h:433

◆ TR_HAL_NUM_FULL_SPEED_BAUD_RATES

#define TR_HAL_NUM_FULL_SPEED_BAUD_RATES   14

done with doxygen ignoring the code



baud rates - see section 18.3.3 the baud rate is determines by taking the 32 MHz clock and dividing by 8 and also by a configured number. The configured number is a whole number divisor and a fractional divisor the fractional divisor is a number from 1-8 divided by 8.

FOR INSTANCE: for a target of 115200 baud rate
32,000,000 / 8 = 4,000,000 / 115200 = 34.722
divisor would be 34
fractional divisor would be 6/8th which is closest 8th to 0.722
so set divisor_latch_register = 34
and set fractional_divisor_latch = FRAC_DIVISOR_6

we have an enum so the user can specify what baud rate is desired that enum is used to lookup the divisor and fractional divisor to set the 2 registers

DO NOT CHANGE THESE NUMBERS AS THEY ARE USED AS INDICES INTO THE LOOKUP TABLE FOR THE DIVISOR AND FRAC DIVISOR


◆ TR_HAL_NUM_LOW_SPEED_BAUD_RATES

#define TR_HAL_NUM_LOW_SPEED_BAUD_RATES   10

◆ TR_HAL_NUM_LPM_BAUD_RATES

#define TR_HAL_NUM_LPM_BAUD_RATES   14

◆ TR_HAL_NUM_SLOW_CLOCK_BAUD_RATES

#define TR_HAL_NUM_SLOW_CLOCK_BAUD_RATES   3

◆ TR_HAL_PIN_NOT_SET

#define TR_HAL_PIN_NOT_SET   0xFF

use for an unset pin

◆ TR_HAL_UART_EVENT_DMA_RX_BUFFER_LOW

#define TR_HAL_UART_EVENT_DMA_RX_BUFFER_LOW   0x00000002

◆ TR_HAL_UART_EVENT_DMA_RX_READY

#define TR_HAL_UART_EVENT_DMA_RX_READY   0x00000008

◆ TR_HAL_UART_EVENT_DMA_RX_TO_USER_FX

#define TR_HAL_UART_EVENT_DMA_RX_TO_USER_FX   0x00000004

◆ TR_HAL_UART_EVENT_DMA_TX_COMPLETE

#define TR_HAL_UART_EVENT_DMA_TX_COMPLETE   0x00000001

these are the EVENTS that can be received into the UART event handler functions. These are BITMASKs since we can have more than 1 in an event these are what the APP needs to handle in its event_handler_fx


◆ TR_HAL_UART_EVENT_HW_FLOW_CONTROL

#define TR_HAL_UART_EVENT_HW_FLOW_CONTROL   0x00008000

◆ TR_HAL_UART_EVENT_RX_ENDED_NO_DATA

#define TR_HAL_UART_EVENT_RX_ENDED_NO_DATA   0x00000200

◆ TR_HAL_UART_EVENT_RX_ENDED_TO_USER_FX

#define TR_HAL_UART_EVENT_RX_ENDED_TO_USER_FX   0x00000100

◆ TR_HAL_UART_EVENT_RX_ERR_BREAK

#define TR_HAL_UART_EVENT_RX_ERR_BREAK   0x00004000

◆ TR_HAL_UART_EVENT_RX_ERR_FRAMING

#define TR_HAL_UART_EVENT_RX_ERR_FRAMING   0x00002000

◆ TR_HAL_UART_EVENT_RX_ERR_OVERRUN

#define TR_HAL_UART_EVENT_RX_ERR_OVERRUN   0x00000800

◆ TR_HAL_UART_EVENT_RX_ERR_PARITY

#define TR_HAL_UART_EVENT_RX_ERR_PARITY   0x00001000

◆ TR_HAL_UART_EVENT_RX_MAYBE_READY

#define TR_HAL_UART_EVENT_RX_MAYBE_READY   0x00000400

◆ TR_HAL_UART_EVENT_RX_READY

#define TR_HAL_UART_EVENT_RX_READY   0x00000080

◆ TR_HAL_UART_EVENT_RX_TO_USER_FX

#define TR_HAL_UART_EVENT_RX_TO_USER_FX   0x00000040

◆ TR_HAL_UART_EVENT_TX_COMPLETE

#define TR_HAL_UART_EVENT_TX_COMPLETE   0x00000010

◆ TR_HAL_UART_EVENT_TX_STILL_GOING

#define TR_HAL_UART_EVENT_TX_STILL_GOING   0x00000020

◆ TR_HAL_UART_EVENT_UNEXPECTED

#define TR_HAL_UART_EVENT_UNEXPECTED   0x00010000

◆ TR_NUMBER_OF_UARTS

#define TR_NUMBER_OF_UARTS   3

the T32CZ20 has 3 UARTs available for configuration. this is a chip constraint - can't change it.

◆ TX_FIFO_SIZE

#define TX_FIFO_SIZE   32

This is the size of the RX and TX FIFO. This is a chip constraint - can't change it

◆ UART0_RX_PIN_DEFAULT

#define UART0_RX_PIN_DEFAULT   16

UART0 RX default.

◆ UART0_TX_PIN_DEFAULT

#define UART0_TX_PIN_DEFAULT   17

UART0 TX default.

◆ UART1_RX_PIN_DEFAULT

#define UART1_RX_PIN_DEFAULT   7

UART1 RX default.

◆ UART1_TX_PIN_DEFAULT

#define UART1_TX_PIN_DEFAULT   6

UART1 TX default.

◆ UART2_RX_PIN_DEFAULT

#define UART2_RX_PIN_DEFAULT   9

UART2 RX default.

◆ UART2_TX_PIN_DEFAULT

#define UART2_TX_PIN_DEFAULT   8

UART2 TX default.

Typedef Documentation

◆ tr_hal_uart_event_callback_t

typedef void(* tr_hal_uart_event_callback_t) (uint32_t event_bitmask)

◆ tr_hal_uart_receive_callback_t

typedef void(* tr_hal_uart_receive_callback_t) (uint8_t received_byte)

Enumeration Type Documentation

◆ tr_hal_baud_rate_t

Enumerator
TR_HAL_UART_BAUD_RATE_2400 
TR_HAL_UART_BAUD_RATE_4800 
TR_HAL_UART_BAUD_RATE_9600 
TR_HAL_UART_BAUD_RATE_14400 
TR_HAL_UART_BAUD_RATE_19200 
TR_HAL_UART_BAUD_RATE_28800 
TR_HAL_UART_BAUD_RATE_38400 
TR_HAL_UART_BAUD_RATE_57600 
TR_HAL_UART_BAUD_RATE_76800 
TR_HAL_UART_BAUD_RATE_115200 
TR_HAL_UART_BAUD_RATE_230400 
TR_HAL_UART_BAUD_RATE_500000 
TR_HAL_UART_BAUD_RATE_1000000 
TR_HAL_UART_BAUD_RATE_2000000 
TR_HAL_UART_BAUD_RATE_LPM_2400 
TR_HAL_UART_BAUD_RATE_LPM_4800 
TR_HAL_UART_BAUD_RATE_LPM_9600 
TR_HAL_UART_BAUD_RATE_LPM_14400 
TR_HAL_UART_BAUD_RATE_LPM_19200 
TR_HAL_UART_BAUD_RATE_LPM_28800 
TR_HAL_UART_BAUD_RATE_LPM_38400 
TR_HAL_UART_BAUD_RATE_LPM_57600 
TR_HAL_UART_BAUD_RATE_LPM_76800 
TR_HAL_UART_BAUD_RATE_LPM_115200 
TR_HAL_UART_BAUD_RATE_LPM_230400 
TR_HAL_UART_BAUD_RATE_LPM_500000 
TR_HAL_UART_BAUD_RATE_LPM_1000000 
TR_HAL_UART_BAUD_RATE_LPM_2000000 
TR_HAL_UART_BAUD_RATE_LOW_SPEED_2400 
TR_HAL_UART_BAUD_RATE_LOW_SPEED_4800 
TR_HAL_UART_BAUD_RATE_LOW_SPEED_9600 
TR_HAL_UART_BAUD_RATE_LOW_SPEED_14400 
TR_HAL_UART_BAUD_RATE_LOW_SPEED_19200 
TR_HAL_UART_BAUD_RATE_LOW_SPEED_28800 
TR_HAL_UART_BAUD_RATE_LOW_SPEED_38400 
TR_HAL_UART_BAUD_RATE_LOW_SPEED_57600 
TR_HAL_UART_BAUD_RATE_LOW_SPEED_76800 
TR_HAL_UART_BAUD_RATE_LOW_SPEED_115200 
TR_HAL_UART_BAUD_RATE_SLOW_CLOCK_2400 
TR_HAL_UART_BAUD_RATE_SLOW_CLOCK_4800 
TR_HAL_UART_BAUD_RATE_SLOW_CLOCK_9600 
TR_HAL_UART_BAUD_RATE_ERROR 

◆ tr_hal_data_bits_t

bits 0, 1 set the data-bits: 0b00=5 data-bits, 0b01=6 data-bits, 0b10=7 data-bits, 0b11=8 data-bits
these values come from the chip register and cannot be changed

Enumerator
LCR_DATA_BITS_5_VALUE 
LCR_DATA_BITS_6_VALUE 
LCR_DATA_BITS_7_VALUE 
LCR_DATA_BITS_8_VALUE 
LCR_DATA_BITS_INVALID_VALUE 

◆ tr_hal_fifo_trigger_t

values we can trigger on for receive FIFO

Enumerator
FCR_TRIGGER_1_BYTE 
FCR_TRIGGER_4_BYTES 
FCR_TRIGGER_8_BYTES 
FCR_TRIGGER_14_BYTES 
FCR_NO_TRIGGER 

◆ tr_hal_hw_fc_t

for setting up hardware flow control

Enumerator
MCR_NO_FLOW_CONTROL_VALUE 
MCR_SET_RTS_READY 
MCR_SET_CTS_ENABLED 

◆ tr_hal_parity_t

bit 3, 4 set the parity: 0b00=no parity 0b10=no parity, 0b01=odd parity, 0b11=even parity, these values come from the chip register and cannot be changed

Enumerator
LCR_PARITY_NONE_VALUE 
LCR_PARITY_ODD_VALUE 
LCR_PARITY_EVEN_VALUE 
LCR_PARITY_INVALID_VALUE 

◆ tr_hal_stop_bits_t

bit 2 sets the stop bits: 0b0=1 stop bit, 0b1=2 stop bits
these values come from the chip register and cannot be changed

Enumerator
LCR_STOP_BITS_ONE_VALUE 
LCR_STOP_BITS_TWO_VALUE 
LCR_STOP_BITS_INVALID_VALUE 

◆ tr_hal_uart_id_t

this type is used to specify a UART ID. On the T32CZ20 there are 3 UARTs available.

Enumerator
UART_0_ID 
UART_1_ID 
UART_2_ID 

Function Documentation

◆ tr_hal_uart_get_uart_register_address()

UART_REGISTERS_T * tr_hal_uart_get_uart_register_address ( tr_hal_uart_id_t uart_id)

the UART can be set to various clock modes The clock mode is chosen to save power or to use a clock that is still running when the chip is sleeping.

the clock to use is set in the SYS_CTRL_CHIP_REGISTERS->system_clock_control_1 register. in the fields: uartO_clk_sel, uart1_clk_sel, uart2_clk_sel

There are 3 options:

  1. per_clk - this clock can be set to various real clocks. the default and most common is to set this to xtal_clk which is 32MH
  2. per_clk running at 16 MHz this is when the SYS_CTRL_CHIP_REGISTERS->system_clock_control_0 has field per_clk_sel set to 0b10 = xtal_clk/2
  3. rco1m - RC oscillator at 921.6 KHz ~= 1MHz
  4. rco32k - RC oscillator for slow clock timers, runs at 38.4 KHz

the UART clocks are the same as the ones defines in the POWER module as tr_hal_clock_t



if the app wants to directly interface with the chip registers, this is a convenience function for getting the address/struct of a particular UART so the chip registers can be accessed.

EXAMPLE: check LSR and if ready, read a byte from RBR

UART_REGISTERS_T* uart_register_address = tr_hal_uart_get_uart_register_address(2); if ((uart_register_address->line_status_register) & LSR_DATA_READY) { uint8_t rx_data = uart_register_address->receive_buffer_register; }