程序小白
认证:优质创作者
所在专题目录 查看专题
RT-Thread驱动之路:stm32设备驱动开发之SPI总线操作方法③
RT-Thread驱动之路:stm32设备驱动开发之HWTIMER开发①
RT-Thread驱动之路: Studio硬件移植篇①
RT-Thread驱动之路:Studio修改时钟篇②
RT-Thread驱动之路: Studio初始化SPI总线③
RT-Thread驱动之路: Studio 挂载通用SPI flash④
作者动态 更多
RT-Thread驱动之路: Studio创建FAL分区⑤
01-02 08:30
RT-Thread驱动之路: Studio 挂载通用SPI flash④
2024-12-23 13:41
RT-Thread驱动之路: Studio初始化SPI总线③
2024-12-17 09:05
RT-Thread驱动之路:Studio修改时钟篇②
2024-12-16 07:54
RT-Thread驱动之路: Studio硬件移植篇①
2024-12-11 10:15

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
觉得内容不错的朋友,别忘了一键三连哦!
赞 4
收藏 6
关注 144
成为作者 赚取收益
全部留言
0/200
  • chaochao1545 01-02 08:37
    正在学习rtt,感谢分享
    回复