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 |