S7816 Examples

Table of Contents

API-S7816-CASE1:S7816 TX MODE

Function Sub-Function APIs Description Update Status
irq_handler() 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 2019-1-10
>dma_chn_irq_status_clr() 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() s7816_set_clk() s7816_set_clk(0x20) Set the divider of clock of 7816 module
s7816_set_rx_buf() s7816_set_rx_buf((unsigned short *)&recvBuff,sizeof(recvBuff)) Set address and size of buffer for 7816 module of MCU
s7816_set_pin() s7816_set_pin(S7816_TRX_D7) Initiate 7816 module pin
uart_reset() Reset uart digital registers from 0x90 ~ 0x9f
uart_init_baudrate() uart_init_baudrate(9600,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) EnableUart Rx/Tx dma irq
uart_irq_enable() uart_irq_en(0, 0) Disable uart RX/TX irq
irq_enable() enable global interrupt
s7816_set_half_duplex() s7816_set_half_duplex(S7816_TX) Transform half duplex mode of 7816
main_loop() s7816_dma_send() s7816_dma_send((unsigned char*)trans_buff) Send data

Variables above are defined as below

volatile __attribute__((aligned(4))) unsigned char trans_buff[16] = {0x05,0x00,0x00,0x00,0xFF,0x10,0x12,0xFD,0x00};

API-S7816-CASE2:S7816 RX MODE

Function Sub-Function APIs Description Update Status
irq_handler() if(dma_chn_irq_status_get() & FLD_DMA_CHN_UART_RX == FLD_DMA_CHN_UART_RX) Determine whether RX interrupt flag is right in DMA MODE 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
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() s7816_set_clk() s7816_set_clk(0x20) Set the divider of clock of 7816 module
s7816_set_rx_buf() s7816_set_rx_buf((unsigned short *)&recvBuff,sizeof(recvBuff)) Set address and size of buffer for 7816 module of MCU
s7816_set_pin() s7816_set_pin(S7816_TRX_D7) Initiate 7816 module pin
uart_reset() Reset uart digital registers from 0x90 ~ 0x9f
uart_init_baudrate() uart_init_baudrate(9600,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
s7816_set_half_duplex() s7816_set_half_duplex(S7816_RX) Transform half duplex mode of 7816
main_loop() None Main program loop

Variables above are defined as below

volatile __attribute__((aligned(4))) unsigned char recvBuff[48] = {0x00};

History Record

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