Air201模组入门:掌握SPI读写外部Flash的技巧

news/2024/11/18 0:06:23/文章来源:https://www.cnblogs.com/luatos/p/18551412

今天带领大家通过Air201+扩展板读写外部flash的演示,教你使用SPI示例,可根据实际需求灵活应用。

我们先了解一些相关基础知识:

SPI(Serial Peripheral Interface)——是一种同步串行通信协议,广泛应用于微控制器和外围设备之间的数据传输。它由摩托罗拉公司开发,具有全双工通信能力,即可以同时进行数据的发送和接收。

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

分享完毕。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/835597.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第七章习题

学号后四位:3018 7.3:点击查看代码 import numpy as np import matplotlib.pyplot as plt from scipy.interpolate import interp1d, CubicSplineT = np.array([700, 720, 740, 760, 780]) V = np.array([0.0977, 0.1218, 0.1406, 0.1551, 0.1664])# 线性插值 linear_interp = …

6502 指令译码器

引言 CPU 要执行指令需要先识别指令,弄清楚要执行的指令是什么类型、需要几个周期、操作数在哪里、目的地在哪里等信息,才能在后续的指令执行过程中打开对应的数据通路。“识别指令”的过程叫译码,完成指令识别功能的机构,叫译码器。 两个译码器 因为 6502 CPU 有一个两级流…

随笔5

这个作业属于哪个课程 计科22级34班这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13234这个作业的目标 完成昨天的计划总结:问题 答案昨天完成的工作 完成个人中心和发表博客页面今天计划完成的工作 完成分类模块以及登录部分的接口对接遇到…

随笔4

这个作业属于哪个课程 计科22级34班这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13234这个作业的目标 完成昨天的计划总结:问题 答案昨天完成的工作 完成首页的搭建今天计划完成的工作 完成个人中心和发表博客页面遇到的困难 发表页面需要…

Nukem pg walkthrough Intermediate

nmap 扫描 ┌──(root㉿kali)-[~] └─# nmap -p- -A 192.168.157.105 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-17 12:32 UTC Nmap scan report for 192.168.157.105 Host is up (0.071s latency). Not shown: 65529 filtered tcp ports (no-response) PORT …

Scrum冲刺-Day4

Scrum冲刺-Day4 1站立式会议 1.1站立会议照片1.2会议纪要 - Day4成员姓名 昨天已完成的工作 今天计划完成的工作 工作中遇到的困难张易欣 订单模块接口的开发 实现对用户的请求和响应进行处理 需要解决前端和后端之间的数据传递和同步问题苏清仪 分类模块接口的开发 业务逻辑处…

第七天 项目冲刺

情况 前端提出浏览器访问出现错误的问题 定位发现是跨域问题先有前端通过配置代理也能通过,但还是决定再后端也配置一下解决跨域问题由于使用了springSecurity,所有还要在security中开启这个功能 前后端沟通时发现他对我的分类的理解完全不一样,而是类似于这样的于是按照他的…

Scrum冲刺-Day3

1.站立式会议 1.1站立会议照片1.2会议纪要成员姓名 昨天已完成的工作 今天计划完成的工作 工作中遇到的困难张易欣 管理员模块接口的开发 订单模块接口的开发 暂无苏清仪 商品模块接口开发 分类模块接口的开发 暂无李心怡 登录注册 购物车功能的逻辑设计与ui图 暂无郑梦翰 确定…

Scrum冲刺-Day2

1站立式会议 1.1站立会议照片1.2会议纪要成员姓名 昨天已完成的工作 今天计划完成的工作 工作中遇到的困难张易欣 后端用户模块 管理员模块接口开发 需要更深入学习数据库知识苏清仪 项目环境搭建 商品模块接口开发 暂无李心怡 前端接口设计 登录注册 暂无郑梦翰 前端接口设计 …

Scrum冲刺-Day7

Scrum冲刺-Day7 1站立式会议 1.1站立会议照片1.2会议纪要 - Day7成员姓名 昨天已完成的工作 今天计划完成的工作 工作中遇到的困难张易欣 设计网页数据的回显及错误提示 总结七天冲刺进度 确保数据的准确性和完整性苏清仪 商品库存管理开发 商品展示顺序选择功能 处理算法的选择…

第六天 项目冲刺

任务完成情况 基本接口都写完了 评论的回复功能实现比较复杂一些,对原来的对象嵌套包装一层完成2级评论的功能 现在难题是前后端的协调调用比较麻烦,单纯的视频或者聊天以及不能满足需求 考虑到前端能及时调用后端接口比较直观,干脆部署后端项目到服务器上 申请服务器利用宝…

第五天 项目冲刺

迟迟未实现分页,今天决定实现分页功能,之前都是使用pagehelper插件来进行分页的,在mybatisplus官方文档发现它也有分页功能 于是干脆使用它的进行了分页插件的配置 学习了这种分页的使用测试显然有了分页特有的标志 基于xml的写法发现有些查询语句太多重复了,使用标签提取,…