UART Examples

Table of Contents



Variables used in the following cases are defined as below

__attribute__((aligned(4))) unsigned char rec_buff[rec_buff_Len]={0};
__attribute__((aligned(4))) unsigned char trans_buff[trans_buff_Len] = {0x0c, 0x00, 0x00, 0x00, 0x11, 0x22, 0x33, 0x44,0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc};

API-UART-CASE1:UART DMA MODE

Function Sub-Function APIs Description Update Status
irq_handler() Rx IRQ if(dma_chn_irq_status_get() & FLD_DMA_CHN_UART_RX == FLD_DMA_CHN_UART_RX) get IRQ status of uart 2019-1-10
dma_chn_irq_status_clr() dma_chn_irq_status_clr(FLD_DMA_CHN_UART_RX) clear UART RX interrupt flag
uart_dmairq_rx_cnt++ interrupt processing function
Tx IRQ if(dma_chn_irq_status_get() & FLD_DMA_CHN_UART_TX == FLD_DMA_CHN_UART_TX) Determine whether TX interrupt flag is right in DMA MODE
dma_chn_irq_status_clr(FLD_DMA_CHN_UART_TX) Clear UART TX interrupt flag
uart_dmairq_tx_cnt++ Interrupt processing function
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() uart_recbuff_init() uart_recbuff_init( (unsigned short *)&rec_buff, sizeof(rec_buff) ) Data receive buffer initialization function
uart_gpio_set() uart_gpio_set(UART_TX_PA2, UART_RX_PA0) Set uart tx/rx pin
uart_reset() Reset uart digital registers from 0x90 ~ 0x9f
uart_init_baudrate() uart_init_baudrate(115200,CLOCK_SYS_CLOCK_HZ,PARITY_NONE, STOP_BIT_ONE) UART module initialization
uart_dma_enable() uart_dma_enable(1, 1) Enable UART DMA function
irq_enable_type() irq_enable_type(FLD_IRQ_DMA_EN) Enable DMA irq
dma_chn_irq_enable() dma_chn_irq_enable(FLD_DMA_CHN_UART_RX Ι FLD_DMA_CHN_UART_TX, 1) Enable Uart Rx/Tx dma irq
uart_irq_enable() uart_irq_enable(0, 0) Disable uart RX/TX irq
irq_enable() enable global interrupt
main_loop() uart_dma_send() uart_dma_send( (unsigned short*)&trans_buff ) Uart send data

API-UART-CASE2:UART NDMA MODE

Function Sub-Function APIs Description Update Status
irq_handler() please refer to Driver Demo Interrupt handler function [Mandatory] 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() uart_recbuff_init() uart_recbuff_init( (unsigned short *)&rec_buff, sizeof(rec_buff) ) Data receive buffer initialization function
uart_gpio_set() uart_gpio_set(UART_TX_PA2, UART_RX_PA0) Set uart tx/rx pin
uart_reset() Reset uart digital registers from 0x90 ~ 0x9f
uart_init_baudrate() uart_init_baudrate(115200,CLOCK_SYS_CLOCK_HZ,PARITY_NONE, STOP_BIT_ONE) UART module initialization
uart_dma_enable() uart_dma_enable(0, 0) Disable UART DMA function
irq_disable_type() irq_disable_type(FLD_IRQ_DMA_EN) Clear DMA irq
dma_chn_irq_enable() dma_chn_irq_enable(FLD_DMA_CHN_UART_RX Ι FLD_DMA_CHN_UART_TX, 0) Disable Rx/Tx dma irq
uart_irq_enable() uart_irq_enable(1, 0) Enable Uart RX irq
uart_ndma_irq_triglevel() uart_ndma_irq_triglevel(1,0) Set the trigger level
irq_enable() Interrupt enable
main_loop() uart_ndma_send_byte() uart_ndma_send_byte(trans_buff[i]) Uart send data

API-UART-CASE3:UART CTS MODE

Function Sub-Function APIs Description Update Status
irq_handler() None Interrupt handler function [Mandatory] 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() uart_recbuff_init() uart_recbuff_init( (unsigned short *)&rec_buff, sizeof(rec_buff) ) Data receive buffer initialization function
uart_gpio_set() uart_gpio_set(UART_TX_PA2, UART_RX_PA0) Set uart tx/rx pin
uart_reset() Reset uart digital registers from 0x90 ~ 0x9f
uart_init_baudrate() uart_init_baudrate(115200,CLOCK_SYS_CLOCK_HZ,PARITY_NONE, STOP_BIT_ONE) UART module initialization
uart_set_cts() uart_set_cts(1, STOP_VOLT, UART_CTS_PA3) Configure CTS pin
uart_dma_enable() uart_dma_enable(0, 0) Disable UART DMA function
irq_disable_type() irq_disable_type(FLD_IRQ_DMA_EN) Clear DMA irq
dma_chn_irq_enable() dma_chn_irq_enable(FLD_DMA_CHN_UART_RX Ι FLD_DMA_CHN_UART_TX, 0) Disable Uart Rx/Tx dma irq
uart_irq_enable() uart_irq_enable(0, 0) Disable uart RX/TX irq
irq_enable() Interrupt enable
main_loop() uart_ndma_send_byte() uart_ndma_send_byte(trans_buff[i]) Uart send data

API-UART-CASE4:UART RTS MODE

Function Sub-Function APIs Description Update Status
irq_handler() None Interrupt handler function [Mandatory] 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() uart_recbuff_init() uart_recbuff_init( (unsigned short *)&rec_buff, sizeof(rec_buff) ) Data receive buffer initialization function
uart_gpio_set() uart_gpio_set(UART_TX_PA2, UART_RX_PA0) Set uart tx/rx pin
uart_reset() Reset uart digital registers from 0x90 ~ 0x9f
uart_init_baudrate() uart_init_baudrate(115200,CLOCK_SYS_CLOCK_HZ,PARITY_NONE, STOP_BIT_ONE) UART module initialization
uart_set_rts() (uart_set_rts(1, RTS_MODE, RTS_THRESH, RTS_INVERT,UART_RTS_PA4) Configure RTS pin
uart_dma_enable() uart_dma_enable(0, 0) Disable UART DMA function
irq_disable_type() irq_disable_type(FLD_IRQ_DMA_EN) Clear DMA irq
dma_chn_irq_enable() dma_chn_irq_enable(FLD_DMA_CHN_UART_RX Ι FLD_DMA_CHN_UART_TX, 0) Disable Uart Rx/Tx dma irq
uart_irq_enable() uart_irq_enable(1, 0) Enable Uart RX irq
uart_ndma_irq_triglevel() uart_ndma_irq_triglevel(1,0) Set the trigger level
irq_enable() Interrupt enable
main_loop() None Main program loop

History Record

Date Description Author
2019-1-10 initial release SP/LJW