关于LuatOS定位模组: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-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存储器的读写操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值