SPI读写外部Flash | Air201定位模组LuatOS指南

今天要讲的是如何使用SPI读写外部Flash,快速掌握4G模组Air201定位模组LuatOS。

本文将通过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存储器的读写操作。

今天的分享就到这里了

posted @ 2024-11-20 13:38  合宙LuatOS  阅读(5)  评论(0编辑  收藏  举报