今天我会把我了解的关于如何使用SPI读写外部Flash教给大家,本文将通过Air201+扩展板读写外部flash的演示,教你使用SPI示例,可根据实际需求灵活应用。
我们先了解一些相关基础知识:
SPI(Serial Peripheral Interface)——是一种同步串行通信协议,广泛应用于微控制器和外围设备之间的数据传输。它由摩托罗拉公司开发,具有全双工通信能力,即可以同时进行数据的发送和接收。
SPI通信通常涉及四条信号线:
MOSI(Master Out Slave In):
主设备发送数据,外设接收数据。
MISO(Master In Slave Out):
外设发送数据,主设备接收数据。
SCLK(Serial Clock):
由主设备生成的时钟信号,用于同步数据传输。
CS/SS(Chip/Slave Select):
选择特定的从设备进行通信。
SPI的优点包括简单的硬件连接、高速数据传输和全双工通信。其缺点是通常需要更多的引脚,尤其是在多个从设备的情况下,每个从设备需要一个独立的CS引脚。此外,SPI没有标准化的协议层,因此设备间的兼容性需要仔细管理。
接下来,我们讲解SPI示例的具体使用。
1. 搭建环境
新朋友建议先看前期的基础知识相关教程,更有助于理解和操作。
可以在LuaTools项目管理中新建一个项目,重新选择底层CORE和脚本;或者在原有项目的基础上,不更换CORE,将原来的脚本删除,添加为demo/spi的脚本。
1.1 硬件准备:
Air201 PCBA
Air201-BTB扩展板(带一个FPC线)
SIM卡
带有数据通信功能的数据线
Win10及以上PC
Flash模块:本文使用W25Q系列SPI Flash。
Air201通过FPC线连接BTB扩展板,BTB扩展板再连接FLASH模块。
SPI管脚定义详见:
https://docs.openluat.com/air201/luatos/hardware/design/btb/#spi
完整接线如下所示:
1.2 软件准备:
LuaTools调试工具:
https://docs.openluat.com/Luatools
API接口说明:
https://docs.openluat.com/air201/luatos/api/core/spi
最新固件:
https://gitee.com/openLuat/LuatOS-Air201/tree/master/core
最新脚本:
https://gitee.com/openLuat/LuatOS-Air201/tree/master/demo/spi
2. 示例代码介绍
使用克隆的代码进行测试,代码路径:
LuatOS-Air201demospi
程序流程如下图所示:
2.1 初始化配置
SPI使用的是SPI0,CS使用的GPIO8,在初始化阶段,通常会将CS(GPIO8)拉高,表示当前没有选中任何从设备。
2.2 向FLASH写入数据
查看W25QX系列FLASH模块数据手册的命令集,先写使能命令0x06,再写页数据到地址0x000001。
2.3 从FLASH读取数据
查看W25QX系列FLASH模块数据手册的命令集,使用0x03命令,读取0x000001地址的数据,完成操作后关闭SPI。
2.4 完整例程展示
3. 代码烧录
新朋友可以查看参考详细烧录教程:
https://docs.openluat.com/Luatools/
固件版本不变的情况下,直接选择下载脚本即可。
4. 展示效果
至此我们已经使用Air201的SPI接口,成功完成了对W25Q64 Flash存储器的读写操作。
分享完毕。
-
FlaSh
+关注
关注
10文章
1617浏览量
147698 -
SPI
+关注
关注
17文章
1695浏览量
91268 -
模组
+关注
关注
6文章
1426浏览量
30260 -
LuatOS
+关注
关注
0文章
60浏览量
1922
发布评论请先 登录
相关推荐
评论