55#ifndef T32CM11_UART_H_
56#define T32CM11_UART_H_
74#define TR_NUMBER_OF_UARTS 3
87#define LOW_BYTES_BUFFER_THRESHHOLD 16
92#define MAX_RAW_TX_DATA_BUFFER_SIZE 256
96#define DMA_RX_BUFF_MINIMUM_SIZE 16
100#define TX_FIFO_SIZE 16
131#define UART_INVALID_PIN 0xFF
138#define UART0_TX_PIN_OPTION1 17
139#define UART0_RX_PIN_OPTION1 16
144#define UART1_TX_PIN_OPTION1 4
145#define UART1_RX_PIN_OPTION1 5
148#define UART1_TX_PIN_OPTION3 28
149#define UART1_RX_PIN_OPTION3 29
152#define UART1_RTS_PIN_OPTION1 14
153#define UART1_CTS_PIN_OPTION1 15
155#define UART1_RTS_PIN_OPTION2 20
156#define UART1_CTS_PIN_OPTION2 21
162#define UART2_TX_PIN_OPTION1 6
163#define UART2_RX_PIN_OPTION1 7
166#define UART2_TX_PIN_OPTION3 30
167#define UART2_RX_PIN_OPTION3 31
169#define TR_HAL_PIN_NOT_SET 255
180#define CHIP_MEMORY_MAP_UART0_BASE (0xA0000000UL)
181#define CHIP_MEMORY_MAP_UART1_BASE (0xA0500000UL)
182#define CHIP_MEMORY_MAP_UART2_BASE (0xA0600000UL)
223#define transmitter_holding_register receive_buffer_register
227#define interrupt_identification_register FIFO_control_register
232#define divisor_latch_LSB receive_buffer_register
237#define divisor_latch_MSB interrupt_enable_register
244#define UART0_CHIP_REGISTERS ((UART_REGISTERS_T *) CHIP_MEMORY_MAP_UART0_BASE)
245#define UART1_CHIP_REGISTERS ((UART_REGISTERS_T *) CHIP_MEMORY_MAP_UART1_BASE)
246#define UART2_CHIP_REGISTERS ((UART_REGISTERS_T *) CHIP_MEMORY_MAP_UART2_BASE)
250#define IER_ENABLE_RECEIVE_DATA_AVAIL_INT 0x01
251#define IER_ENABLE_READY_TO_TRANSMIT_INT 0x02
252#define IER_ENABLE_FRAMING_PARITY_OVERRUN_ERROR_INT 0x04
253#define IER_ENABLE_MODEM_STATUS_INT 0x08
257#define FCR_FIFO_ENABLE 0x01
258#define FCR_CLEAR_RECEIVER 0x02
259#define FCR_CLEAR_TRANSMIT 0x04
260#define FCR_DMA_SELECT 0x08
262#define FCR_TRIGGER_MASK 0xC0
280#define IIR_INTERRUPT_MASK 0x0F
283#define IIR_NO_INTERRUPT_PENDING 0x01
284#define IIR_MODEM_STATUS_INTERRUPT 0x00
285#define IIR_THR_EMPTY_INTERRUPT 0x02
286#define IIR_RECEIVER_ERROR_INTERRUPT 0x06
287#define IIR_RX_DATA_AVAIL_INTERRUPT 0x04
288#define IIR_CHAR_TIMEOUT_INTERRUPT 0x0C
300#define LCR_DATA_BITS_MASK 0x03
301#define LCR_DATA_BITS_INV_MASK 0xFC
302#define LCR_STOP_BITS_MASK 0x04
303#define LCR_STOP_BITS_INV_MASK 0xFB
304#define LCR_PARITY_BITS_MASK 0x18
305#define LCR_PARITY_BITS_INV_MASK 0xE7
306#define LCR_BAUD_RATE_SETTING_MASK 0x80
361#define LSR_DATA_READY 0x01
363#define LSR_OVERRUN_ERROR 0x02
365#define LSR_PARITY_ERROR 0x04
367#define LSR_FRAMING_ERROR 0x08
369#define LSR_BREAK_INDICATOR 0x10
373#define LSR_TRANSMITTER_HOLDING_REG_EMPTY 0x20
375#define LSR_TRANSMITTER_EMPTY 0x40
377#define LSR_FIFO_ERROR 0x80
392#define DMA_IER_ENABLE_RECEIVE_INT 0x01
393#define DMA_IER_ENABLE_TRANSMIT_INT 0x02
397#define DMA_RECEIVE_INTERRUPT 0x01
398#define DMA_TRANSMIT_INTERRUPT 0x02
402#define UART_DMA_ENABLE 0x01
403#define UART_DMA_DISABLE 0x00
554#define DEFAULT_UART0_CONFIG \
556 .tx_pin = (tr_hal_gpio_pin_t) { UART0_TX_PIN_OPTION1 }, \
557 .rx_pin = (tr_hal_gpio_pin_t) { UART0_RX_PIN_OPTION1 }, \
558 .hardware_flow_control_enabled = false, \
559 .rts_pin = (tr_hal_gpio_pin_t) { TR_HAL_PIN_NOT_SET }, \
560 .cts_pin = (tr_hal_gpio_pin_t) { TR_HAL_PIN_NOT_SET }, \
561 .baud_rate = TR_HAL_UART_BAUD_RATE_115200, \
562 .data_bits = LCR_DATA_BITS_8_VALUE, \
563 .stop_bits = LCR_STOP_BITS_ONE_VALUE, \
564 .parity = LCR_PARITY_NONE_VALUE, \
565 .rx_dma_enabled = false, \
566 .tx_dma_enabled = false, \
567 .rx_dma_buffer = NULL, \
568 .rx_dma_buff_length = 0, \
569 .raw_tx_buffer = NULL, \
570 .raw_tx_buff_length = 0, \
571 .rx_handler_function = NULL, \
572 .rx_bytes_before_trigger = FCR_TRIGGER_1_BYTE, \
573 .enable_chip_interrupts = true, \
574 .interrupt_priority = TR_HAL_INTERRUPT_PRIORITY_5, \
575 .wake_on_interrupt = false, \
576 .event_handler_fx = NULL, \
579#define DEFAULT_UART1_CONFIG \
581 .tx_pin = (tr_hal_gpio_pin_t) { UART1_TX_PIN_OPTION1 }, \
582 .rx_pin = (tr_hal_gpio_pin_t) { UART1_RX_PIN_OPTION1 }, \
583 .hardware_flow_control_enabled = false, \
584 .rts_pin = (tr_hal_gpio_pin_t) { TR_HAL_PIN_NOT_SET }, \
585 .cts_pin = (tr_hal_gpio_pin_t) { TR_HAL_PIN_NOT_SET }, \
586 .baud_rate = TR_HAL_UART_BAUD_RATE_115200, \
587 .data_bits = LCR_DATA_BITS_8_VALUE, \
588 .stop_bits = LCR_STOP_BITS_ONE_VALUE, \
589 .parity = LCR_PARITY_NONE_VALUE, \
590 .rx_dma_enabled = false, \
591 .tx_dma_enabled = false, \
592 .rx_dma_buffer = NULL, \
593 .rx_dma_buff_length = 0, \
594 .raw_tx_buffer = NULL, \
595 .raw_tx_buff_length = 0, \
596 .rx_handler_function = NULL, \
597 .rx_bytes_before_trigger = FCR_TRIGGER_1_BYTE, \
598 .enable_chip_interrupts = true, \
599 .interrupt_priority = TR_HAL_INTERRUPT_PRIORITY_5, \
600 .wake_on_interrupt = false, \
601 .event_handler_fx = NULL, \
604#define DEFAULT_UART2_CONFIG \
606 .tx_pin = (tr_hal_gpio_pin_t) { UART2_TX_PIN_OPTION1 }, \
607 .rx_pin = (tr_hal_gpio_pin_t) { UART2_RX_PIN_OPTION1 }, \
608 .hardware_flow_control_enabled = false, \
609 .rts_pin = (tr_hal_gpio_pin_t) { TR_HAL_PIN_NOT_SET }, \
610 .cts_pin = (tr_hal_gpio_pin_t) { TR_HAL_PIN_NOT_SET }, \
611 .baud_rate = TR_HAL_UART_BAUD_RATE_115200, \
612 .data_bits = LCR_DATA_BITS_8_VALUE, \
613 .stop_bits = LCR_STOP_BITS_ONE_VALUE, \
614 .parity = LCR_PARITY_NONE_VALUE, \
615 .rx_dma_enabled = false, \
616 .tx_dma_enabled = false, \
617 .rx_dma_buffer = NULL, \
618 .rx_dma_buff_length = 0, \
619 .raw_tx_buffer = NULL, \
620 .raw_tx_buff_length = 0, \
621 .rx_handler_function = NULL, \
622 .rx_bytes_before_trigger = FCR_TRIGGER_1_BYTE, \
623 .enable_chip_interrupts = true, \
624 .interrupt_priority = TR_HAL_INTERRUPT_PRIORITY_5, \
625 .wake_on_interrupt = false, \
626 .event_handler_fx = NULL, \
635#define TR_HAL_UART_EVENT_DMA_TX_COMPLETE 0x00000001
636#define TR_HAL_UART_EVENT_DMA_RX_BUFFER_LOW 0x00000002
637#define TR_HAL_UART_EVENT_DMA_RX_TO_USER_FX 0x00000004
638#define TR_HAL_UART_EVENT_DMA_RX_READY 0x00000008
639#define TR_HAL_UART_EVENT_TX_COMPLETE 0x00000010
640#define TR_HAL_UART_EVENT_TX_STILL_GOING 0x00000020
641#define TR_HAL_UART_EVENT_RX_TO_USER_FX 0x00000040
642#define TR_HAL_UART_EVENT_RX_READY 0x00000080
643#define TR_HAL_UART_EVENT_RX_ENDED_TO_USER_FX 0x00000100
644#define TR_HAL_UART_EVENT_RX_ENDED_NO_DATA 0x00000200
645#define TR_HAL_UART_EVENT_RX_MAYBE_READY 0x00000400
646#define TR_HAL_UART_EVENT_RX_ERR_OVERRUN 0x00000800
647#define TR_HAL_UART_EVENT_RX_ERR_PARITY 0x00001000
648#define TR_HAL_UART_EVENT_RX_ERR_FRAMING 0x00002000
649#define TR_HAL_UART_EVENT_RX_ERR_BREAK 0x00004000
650#define TR_HAL_UART_EVENT_HW_FLOW_CONTROL 0x00008000
651#define TR_HAL_UART_EVENT_UNEXPECTED 0x00010000
tr_hal_data_bits_t
Definition T32CM11_uart.h:311
tr_hal_baud_rate_t
Definition T32CM11_uart.h:409
tr_hal_parity_t
Definition T32CM11_uart.h:335
UART_REGISTERS_T * tr_hal_uart_get_uart_register_address(tr_hal_uart_id_t uart_id)
void(* tr_hal_uart_receive_callback_t)(uint8_t received_byte)
Definition T32CM11_uart.h:445
tr_hal_hw_fc_t
Definition T32CM11_uart.h:348
tr_hal_stop_bits_t
Definition T32CM11_uart.h:324
tr_hal_fifo_trigger_t
Definition T32CM11_uart.h:266
tr_hal_uart_id_t
Definition T32CM11_uart.h:78
void(* tr_hal_uart_event_callback_t)(uint32_t event_bitmask)
Definition T32CM11_uart.h:448
@ LCR_DATA_BITS_7_VALUE
Definition T32CM11_uart.h:314
@ LCR_DATA_BITS_INVALID_VALUE
Definition T32CM11_uart.h:316
@ LCR_DATA_BITS_6_VALUE
Definition T32CM11_uart.h:313
@ LCR_DATA_BITS_5_VALUE
Definition T32CM11_uart.h:312
@ LCR_DATA_BITS_8_VALUE
Definition T32CM11_uart.h:315
@ TR_HAL_UART_BAUD_RATE_1000000
Definition T32CM11_uart.h:421
@ TR_HAL_UART_BAUD_RATE_115200
Definition T32CM11_uart.h:419
@ TR_HAL_UART_BAUD_RATE_ERROR
Definition T32CM11_uart.h:423
@ TR_HAL_UART_BAUD_RATE_57600
Definition T32CM11_uart.h:417
@ TR_HAL_UART_BAUD_RATE_500000
Definition T32CM11_uart.h:420
@ TR_HAL_UART_BAUD_RATE_2400
Definition T32CM11_uart.h:410
@ TR_HAL_UART_BAUD_RATE_76800
Definition T32CM11_uart.h:418
@ TR_HAL_UART_BAUD_RATE_19200
Definition T32CM11_uart.h:414
@ TR_HAL_UART_BAUD_RATE_9600
Definition T32CM11_uart.h:412
@ TR_HAL_UART_BAUD_RATE_28800
Definition T32CM11_uart.h:415
@ TR_HAL_UART_BAUD_RATE_4800
Definition T32CM11_uart.h:411
@ TR_HAL_UART_BAUD_RATE_14400
Definition T32CM11_uart.h:413
@ TR_HAL_UART_BAUD_RATE_38400
Definition T32CM11_uart.h:416
@ TR_HAL_UART_BAUD_RATE_2000000
Definition T32CM11_uart.h:422
@ LCR_PARITY_EVEN_VALUE
Definition T32CM11_uart.h:338
@ LCR_PARITY_NONE_VALUE
Definition T32CM11_uart.h:336
@ LCR_PARITY_ODD_VALUE
Definition T32CM11_uart.h:337
@ LCR_PARITY_INVALID_VALUE
Definition T32CM11_uart.h:339
@ MCR_SET_CTS_ENABLED
Definition T32CM11_uart.h:352
@ MCR_SET_DTR_READY
Definition T32CM11_uart.h:350
@ MCR_NO_FLOW_CONTROL_VALUE
Definition T32CM11_uart.h:349
@ MCR_SET_RTS_READY
Definition T32CM11_uart.h:351
@ LCR_STOP_BITS_TWO_VALUE
Definition T32CM11_uart.h:326
@ LCR_STOP_BITS_ONE_VALUE
Definition T32CM11_uart.h:325
@ LCR_STOP_BITS_INVALID_VALUE
Definition T32CM11_uart.h:327
@ FCR_TRIGGER_14_BYTES
Definition T32CM11_uart.h:270
@ FCR_TRIGGER_8_BYTES
Definition T32CM11_uart.h:269
@ FCR_NO_TRIGGER
Definition T32CM11_uart.h:271
@ FCR_TRIGGER_4_BYTES
Definition T32CM11_uart.h:268
@ FCR_TRIGGER_1_BYTE
Definition T32CM11_uart.h:267
@ UART_0_ID
Definition T32CM11_uart.h:79
@ UART_2_ID
Definition T32CM11_uart.h:81
@ UART_1_ID
Definition T32CM11_uart.h:80
tr_hal_data_bits_t
Definition T32CZ20_uart.h:173
tr_hal_baud_rate_t
Definition T32CZ20_uart.h:440
tr_hal_parity_t
Definition T32CZ20_uart.h:197
tr_hal_stop_bits_t
Definition T32CZ20_uart.h:186
tr_hal_fifo_trigger_t
values we can trigger on for receive FIFO
Definition T32CZ20_uart.h:160
Definition T32CM11_uart.h:189
__IO uint32_t DMA_tx_enable
Definition T32CM11_uart.h:213
__IO uint32_t receive_buffer_register
Definition T32CM11_uart.h:190
__IO uint32_t DMA_interrupt_status
Definition T32CM11_uart.h:211
__I uint32_t DMA_tx_xfer_len_remaining
Definition T32CM11_uart.h:209
__I uint32_t modem_status_register
Definition T32CM11_uart.h:196
__IO uint32_t line_control_register
Definition T32CM11_uart.h:193
__IO uint32_t DMA_interrupt_enable_register
Definition T32CM11_uart.h:210
__IO uint32_t DMA_rx_buffer_len
Definition T32CM11_uart.h:201
__IO uint32_t interrupt_enable_register
Definition T32CM11_uart.h:191
__IO uint32_t DMA_rx_enable
Definition T32CM11_uart.h:212
__IO uint32_t DMA_rx_buffer_addr
Definition T32CM11_uart.h:200
__IO uint32_t DMA_tx_buffer_len
Definition T32CM11_uart.h:205
__IO uint32_t FIFO_control_register
Definition T32CM11_uart.h:192
__I uint32_t DMA_rx_xfer_len_remaining
Definition T32CM11_uart.h:208
__I uint32_t line_status_register
Definition T32CM11_uart.h:195
__IO uint32_t modem_control_register
Definition T32CM11_uart.h:194
__IO uint32_t DMA_tx_buffer_addr
Definition T32CM11_uart.h:204
__IO uint32_t scratch_register
Definition T32CM11_uart.h:197
pin type
Definition tr_hal_platform.h:23
Definition T32CM11_uart.h:470
tr_hal_gpio_pin_t rts_pin
Definition T32CM11_uart.h:479
tr_hal_parity_t parity
Definition T32CM11_uart.h:491
bool wake_on_interrupt
Definition T32CM11_uart.h:537
tr_hal_data_bits_t data_bits
Definition T32CM11_uart.h:489
tr_hal_uart_receive_callback_t rx_handler_function
Definition T32CM11_uart.h:514
uint8_t * raw_tx_buffer
Definition T32CM11_uart.h:506
tr_hal_stop_bits_t stop_bits
Definition T32CM11_uart.h:490
tr_hal_gpio_pin_t tx_pin
Definition T32CM11_uart.h:474
uint8_t * rx_dma_buffer
Definition T32CM11_uart.h:498
bool tx_dma_enabled
Definition T32CM11_uart.h:496
tr_hal_uart_event_callback_t event_handler_fx
Definition T32CM11_uart.h:518
tr_hal_gpio_pin_t cts_pin
Definition T32CM11_uart.h:480
tr_hal_fifo_trigger_t rx_bytes_before_trigger
Definition T32CM11_uart.h:525
bool enable_chip_interrupts
Definition T32CM11_uart.h:528
uint16_t raw_tx_buff_length
Definition T32CM11_uart.h:507
tr_hal_int_pri_t interrupt_priority
Definition T32CM11_uart.h:531
bool hardware_flow_control_enabled
Definition T32CM11_uart.h:478
tr_hal_gpio_pin_t rx_pin
Definition T32CM11_uart.h:475
tr_hal_baud_rate_t baud_rate
Definition T32CM11_uart.h:486
uint16_t rx_dma_buff_length
Definition T32CM11_uart.h:499
bool rx_dma_enabled
Definition T32CM11_uart.h:495
This is the common include file for the Trident HAL GPIO Driver.