发表于: 2019-3-29 14:43:37 | 显示全部楼层

现今的微控制器都带有大容量的内部闪存。但有许多高性能MCU,如NXP i.MX RT系列控制器,都是不带闪存的,因为高性能内核的硅工艺与FLASH存储器技术不匹配,因此它们使用外部串行SPI或Quad-SPI(QSPI) )闪存来代替。

w25q128-breakout-board.png

华邦w25q128串行闪存分线板


为什么不将外部SPI FLASH用于“普通”微控制器呢?


外部SPI闪存的典型用法是使用它来加载或存储数据。通过在SPI总线上添加一个小型外部器件,我可以轻松地为微控制器添加几兆字节的存储器。这样的SPI存储器设备非常便宜:我从AliExpress订购了一些带有Winbond W25Q128(16 MByte)的分线模块,每个1.50美元。该电路板使用以下引脚:

●    VCC:3.3V

●    GND

●    DO:SPI MISO

●    DI:SPI MOSI

●    CS:SPI芯片选择

分线板模块上的红色LED灯指示电路板是否已通电。


通常我使用micro-SD卡来记录数据。它们很容易获得,提供几乎“无限”的存储空间,使用FatFS文件系统,我可以轻松地与主机交换数据。但是它需要PCB上的空间,SD卡插座需要可以接触,插座是机械部件,并且成本高,加上在振动和腐蚀的环境中不太可靠。使用FLASH芯片可能是更好的解决方案。


我用命令行界面创建了一个驱动程序:这样我可以读/写SPI FLASH存储设​​备的数据。 GitHub上提供了一个Eclipse示例项目


该示例在NXP(Kinetis K20DX128)的ARM Cortex-M4上运行,可以轻松移植到任何其他微控制器。

using-w25q128-with-k20dx128.png

k20dx128使用w25q128


该项目包括一个命令行shell:

command-line-shell-for-serial-flash.png

串行闪存的命令行shell


使用shell我可以读/写串行闪存:

serial-flash-read-and-write.png

串行闪存读写


'status'命令提供发现设备的有关信息:

device-status.png

设备状态


总结

我现在有一个可以正常使用的Winbond W25Q128 16 MByte串行/ SPI闪存芯片的驱动程序。驱动程序仍处于早期阶段,我可能会更新它以支持其他Flash设备。使用命令行界面,我可以读/写内存。在下一步中,我计划将内存与文件系统一起使用,在以后的文章中将详细介绍。该项目可在GitHub上获得。

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 12 | 回复: 14



手机版|

GMT+8, 2024-11-21 18:13 , Processed in 0.047192 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表