原创 如何使用SPI读写外部Flash——Air201资产定位模组LuatOS快速入门

2025-1-25 16:14 78 0 分类: 物联网
本文将通过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-Air201\demo\spi


程序流程如下图所示:


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存储器的读写操作。

今天的分享就到这里了


更多实用示例带你开启应用之门

下一期见~

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
0
关闭 站长推荐上一条 /3 下一条