1. 概述
串行外设接口(Serial Peripheral Interface Bus, SPI)是一种用于短程通信的同步串行通信接口规范,装置之间使用全双工模式通信,是一个主机和一个或多个从机的主从模式。SPI 使用 4 根线完成全双工的通信,这 4 根信号线分别是:CS(片选)、SCLK(时钟)、MOSI(主机输出从机输入)、MISO(主机输入从机输出)。
2. API参考
2.1 SPI引脚初始化
- 函数原型:
void hosal_spi_flash_set_gpio(uint8_t clk, uint8_t cs,
uint8_t mosi, uint8_t miso);
- 功能描述:初始化spi引脚
- 函数参数:
- clk:clk引脚(clk % 4 == 3才可以作为clk功能使用)
- cs:cs引脚(cs % 4 == 0才可以作为cs功能使用)
- mosi:mosi引脚(mosi% 4 == 2才可以作为mosi功能使用)
- miso:miso引脚(miso % 4 == 1才可以作为miso功能使用)
返回值:
函数原型:
BL_Err_Type hosal_spi_flash_init(void);
- 功能描述:spi初始化。
- 函数参数:
- NULL
返回值:
函数原型:
BL_Err_Type hosal_spi_flash_read_jedec_id(uint8_t *data);
- 功能描述:获取flash id。
- 函数参数:
- data:存储id值
返回值:
函数原型:
BL_Err_Type hosal_spi_flash_read(uint32_t addr, uint8_t *data, uint32_t len);
- 功能描述:读取从addr地址开始,长度len(byte)大小的flash内容
- 函数参数:
- addr:起始地址
- data:存储数据的buffer
- len:数据长度
返回值:
函数原型:
BL_Err_Type hosal_spi_flash_write(uint32_t addr, uint8_t *data,
uint32_t len);
- 功能描述:从addr地址开始的地方写入数据,长度为len(byte)
- 函数参数:
- addr:起始地址
- data:数据buffer
- len:数据长度
返回值:
函数原型:
BL_Err_Type hosal_spi_flash_erase(uint32_t startaddr, uint32_t len);
- 功能描述:从startaddr地址开始的地方擦除,长度为len(byte)
- 函数参数:
- startaddr:起始地址
- len:数据长度
- 返回值:
- 初始化用作spi功能的4个gpio引脚并初始化spi。
```c
hosal_spi_flash_erase(0, FLASH_WRITE_READ_SIZE);
- 调用 hosal_spi_flash_erase 擦除地址0开始 FLASH_WRITE_READ_SIZE长度。
hosal_spi_flash_write(0, wData, FLASH_WRITE_READ_SIZE);
- 通过 hosal_spi_flash_write 来写数据
hosal_spi_flash_read(0, rData, FLASH_WRITE_READ_SIZE);
- 通过 hosal_spi_flash_read 接口读取数据。