RT-Thread驱动之路: Studio 挂载通用SPI flash④


      有了SPI以后我们经常用来操作flash,这里就不得不提SFUD是一种开源的串行SPI flash通用驱动库,首先需要在rtthread设置选项组件选项卡打开SFUD:

      其实通过我们的勾勾选选就打开SFUD功能,实际上IDE的操作也很简单,加载spi_flash_sfud.c文件,并在rt_config.h的配置文件中定义宏RT_USING_SFUD即打开了该功能:

      接下来我们需要利用SFUD组件将我们想要操作的SPI flash挂在到对应的总线上,首先通过list device命令查看当前的SPI总线是哪个,然后查看我们的SPI flash设备的CS片选是哪个引脚,然后通过组件提供的挂在函数尝试进行挂在该设备到总线,实际上就是SFUD利用SPI总线的API完成对flash的初始化并注册熬系统驱动中的过程。

/*3.编写挂在函数实现设备的挂在功能*/
/* SPI Flash 驱动 */
static int rt_hw_spi_flash_init(void)
{
    /* 往总线 spi2 上挂载一个 spi20从设备 */
    rt_hw_spi_device_attach("spi2", "spi20", GPIOB, GPIO_PIN_12);  // CS 脚:PB12

    /* 使用 SFUD 探测 spi20 从设备,并将 spi20 连接的 flash 初始化为块设备,名称 W25Q128 */
    if (RT_NULL == rt_sfud_flash_probe("W25Q128", "spi20"))
    {
        return -RT_ERROR;
    };

    return RT_EOK;
}
/* 导出到自动初始化 */
INIT_COMPONENT_EXPORT(rt_hw_spi_flash_init);

      编译整个工程,并连接JLINK仿真器进行程序下载:

         下载成功后,打开系统finsh串口我们会砍刀关于系统信息的打印,绿色字体部分为SFUD库加载情况及FLASH设备的挂在情况,通过list device命令我们可以砍刀我们定义的W25Q128设备已经加载成功,这个时候我们就是通过SFUD提供的库函数来操作我们的flash设备了。

      关于使用SFUD挂在flash的过程到这里就结束了,感谢阅读~!

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 2
收藏 3
关注 140
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧