SPI Examples

Table of Contents

API-SPI-CASE1:SPI MASTER 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() spi_master_init() spi_master_init((unsigned char)(CLOCK_SYS_CLOCK_HZ/(2*500000)-1),SPI_MODE0) SPI clock and mode initialization
spi_master_gpio_set() spi_master_gpio_set(SPI_GPIO_GROUP_B6B7D2D7) SPI master pin initialization
irq_enable() Interrupt enable
main_loop() Main loop
cmd_buf[0]= (SLAVE_ADDR>>16)&0xff high address
cmd_buf[1]= (SLAVE_ADDR>>8)&0xff middle address
cmd_buf[2]= SLAVE_ADDR&0xff low address
cmd_buf[3]= SPI_WRITE_CMD SPI Write Command
spi_write() spi_write((unsigned char*)cmd_buf,CMD_BUF_LEN,(unsigned char*)spi_tx_buff, BUFF_DATA_LEN,SPI_CS_PIN) Write data
cmd_buf[3]= SPI_READ_CMD SPI Read Command
spi_read() spi_read((unsigned char*)cmd_buf,CMD_BUF_LEN,(unsigned char*)spi_rx_buff, BUFF_DATA_LEN,SPI_CS_PIN) Read data

Variables used in the following cases are defined as below

#define BUFF_DATA_LEN 16
#define SPI_CS_PIN GPIO_PD2
#define SLAVE_ADDR 0x48000
#define CMD_BUF_LEN 4
volatile unsigned char cmd_buf[4];
volatile unsigned char spi_tx_buff[BUFF_DATA_LEN]={0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff};
volatile unsigned char spi_rx_buff[BUFF_DATA_LEN]={0x00};

API-SPI-CASE2:SPI SLAVE MODE

Function Sub-Function APIs Description Update Status
irq_handler() if(reg_spi_slave_irq_status & FLD_SPI_BYTE_IRQ == FLD_SPI_BYTE_IRQ ) SPI interrupt status 2019-1-10
>reg_spi_slave_irq_status Ι= FLD_SPI_BYTE_IRQ Determine whether interrupt flag is right
>byte_irq_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() spi_slave_init() spi_slave_init((unsigned char)(CLOCK_SYS_CLOCK_HZ/(2*500000)-1),SPI_MODE0) SPI clock and mode initialization
spi_slave_gpio_set() spi_slave_gpio_set(SPI_GPIO_GROUP_B6B7D2D7) SPI slave pin initialization
reg_irq_mask Ι= FLD_IRQ_MIX_CMD_EN SPI interrupt enable
irq_enable() enable global interrupt
main_loop() None Main program loop

History Record

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