潘多拉开发板SFUD初始化失败问题[SFUD] Error W25Q128 flash device is initialize fail

   日期:2021-01-31     浏览:107    评论:0    
核心提示:【已解决】潘多拉开发板SFUD初始化失败问题[SFUD] Error: W25Q128 flash device is initialize fail.问题描述如下:       潘多拉开发板SFUD初始化失败,提示设备不支持。原因       潘多拉有一批板载的FLASH更换了厂家,代码不兼容。同样遇到这个问题的小伙伴可以检查板载的flash的丝印层是否带有

潘多拉开发板SFUD初始化失败问题[SFUD] Error: W25Q128 flash device is initialize fail.

问题描述如下:


       潘多拉开发板SFUD初始化失败,提示设备不支持。

原因

       潘多拉有一批板载的FLASH更换了厂家,代码不兼容。同样遇到这个问题的小伙伴可以检查板载的flash的丝印层是否带有nm25字样。

解决方案

       使用这个SDK仓库:仓库地址

       并检出到fix_nm25q分支下的代码。

       这个仓库不是官方资料中给,感谢某个大神的提供。

       接着运行里面的keil工程13_component_fal。你会发现问题已经被奇妙的解决了。

分析

       像W25Q128这种串行Flash芯片种类有很多,如果每种芯片都提供一套驱动函数不便于管理,RT-Thread为串行Flash提供了一套通用驱动函数SFUD(Serial Flash Universal Driver),能驱动多数常用SPI Flash,SFUD属于SPI设备驱动框架层。

       其中,SFUD这样的驱动框架使用了三个列表来描述SFUD的芯片信息,如果遇到不能识别的芯片,只要对这三个列表进行增添就可以了。


#define SFUD_MF_TABLE                                     \
{                                                         \
    {"Cypress",    SFUD_MF_ID_CYPRESS},                   \
	......
    {"Winbond",    SFUD_MF_ID_WINBOND},                   \
    {"Micronix",   SFUD_MF_ID_MICRONIX},                  \
}
#define SFUD_FLASH_CHIP_TABLE                                                                                       \
{                                                                                                                   \
	......
    {"W25Q128BV", SFUD_MF_ID_WINBOND, 0x40, 0x18, 16L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20},                  \
    {"W25Q256FV", SFUD_MF_ID_WINBOND, 0x40, 0x19, 32L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20},                  \
	......
    {"PCT25VF016B", SFUD_MF_ID_SST, 0x25, 0x41, 2L*1024L*1024L, SFUD_WM_BYTE|SFUD_WM_AAI, 4096, 0x20},              \
}
#define SFUD_FLASH_EXT_INFO_TABLE                                                                  \
{                                                                                                  \
    ......
                                                                                    \
    {SFUD_MF_ID_WINBOND, 0x40, 0x18, NORMAL_SPI_READ|DUAL_OUTPUT|DUAL_IO|QUAD_OUTPUT|QUAD_IO},     \
                                                                                    \
    {SFUD_MF_ID_WINBOND, 0x40, 0x19, NORMAL_SPI_READ|DUAL_OUTPUT|DUAL_IO|QUAD_OUTPUT|QUAD_IO},     \
    ......
                                                                                     \
    {SFUD_MF_ID_GIGADEVICE, 0x40, 0x17, NORMAL_SPI_READ|DUAL_OUTPUT},                              \
}

       增添nm25的信息参考:gitee的代码提交比对

对RT-STUDIO模板工程进行修改

       上述的方法获得的是修改过后的例程,由于我个人是比较喜欢RT-STUDIO创建的模板工程的工程结构的。所以这里也献上基于RT-STUDIO模板工程进行修改适配nm25flash的方法。

  1. 根据仓库中fix_nm25q分支的代码提交比对,最后一次更新的对比更改相关内容

  2. 同时在ports\drv_qspi_flash.c下

        stm32_qspi_bus_attach_device("qspi1", "qspi10", RT_NULL, 1, w25qxx_enter_qspi_mode, RT_NULL);
    
    

    第四个参数改为1,表示数据线宽为1。

  3. 编译&下载

  4. 使用sf命令调试

       到这里可以看出修正已经完成了。

       觉得有帮助的麻烦点个赞和收藏,谢谢大家!

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服