1. 根据上一篇文章,使能SPI设备总线
2. 使能SFUD驱动
3. 使能DFS组件包
W25Q128是16M spi flash,一共有256个block ,每个Block 64KB。一个Block可以分割为16个扇区(small sector),每个扇区4096字节(4KB),所以我们需要修改fatfs的扇区大小为4096。
4. 根据硬件连接的SPI接口和CS片选信号,注册SPI从设备,比如我用的是SPI2,注册从设备为SPI20,同时,将W25Q128抽象为RTT块儿设备。
#include "spi_flash_sfud.h"
/**********************************函数描述***********************************
* 创建人: 侍任伟
* 创建时间: 2020.06.23
* 功能描述: SPI设备挂载(挂载到已经注册好的SPI总线上),并将W25Q188抽象为RTT块儿设备
* 入口参数:
* 函数返回:
*****************************************************************************/
extern rt_err_t rt_hw_spi_device_attach(const char *bus_name,
const char *device_name,
GPIO_TypeDef* cs_gpiox,
uint16_t cs_gpio_pin);
int spi2_device_init(void)
{
__HAL_RCC_GPIOB_CLK_ENABLE();
//设备挂载到SPI总线,抽象为 spi20 设备
rt_hw_spi_device_attach("spi2", "spi20", GPIOB, GPIO_PIN_12);
//将W25Q188抽象为RTT块儿设备
if (rt_sfud_flash_probe("w25q128", "spi20")) {
rt_kprintf("rt sfud flash probe success");
} else {
rt_kprintf("rt sfud flash probe fail");
};
return RT_EOK;
}
INIT_DEVICE_EXPORT(spi2_device_init);
终端输出的结果如下,证明初始化成功。
至此,SPI Flash初始化成功,可进行挂载测试。
## 结论
可以看出,RT-Thread Studio的目录结构和基于BSP的env开发环境有一定的区别,但是操作方法大同小异,Studio具有更优的交互界面,使用更方便快捷,呼吁广大开发者支持国产操作系统。