搜索
发新帖本帖赏金 50.00元(功能说明)我要提问
返回列表

RTThread上设备SPI移植与实践

[复制链接]
57062|11
手机看帖
扫描二维码
随时随地手机跟帖
yanzhengxin1|  楼主 | 2021-9-20 23:06 | 显示全部楼层 |阅读模式
本帖最后由 yanzhengxin1 于 2021-9-20 23:08 编辑

@21小跑堂 #申请原创#
RTThread上设备SPI移植与实践
作为通信协议的两大基础,IIC和SPI两者的应用都非常广泛,上一篇文章讲过了RTT上IIC的移植与实践,讲完IIC,自然少不了SPI的相关内容,基于此,本文就来详细说明RTThread上设备SPI的移植与实践,SPI的通信原理不用赘诉,百度一搜索,对应的知识点就明明白白的。本文的主要内容还是阐述一下RTThread上SPI的一些细节内容,总体感觉RTThread的代码层次,以及各个设备驱动的核心文件都相当优秀,这个不是打广告,而是真正的谁用谁知道,随着慢慢的学习,也会慢慢爱上它,不得不对RTThread表示赞扬,的确优秀源自长时间的积累升华,好了,废话不闲叙,开始本文的主体介绍。
1RTThreadSPI设备“上线”
这里的“上线”,你也许会好奇,这个只是我自己的理解,同RTThread设备IIC总线不一样的是,IIC总线注册了就可以直接使用,而SPI总线注册完了之后,相当于存在于内核中,还要进行一步,我所理解的“上线”得出操作,即SPI设备需要挂载到总线上面去,才可以进行相关操作。一下是代码里面的细节
11.png
注册:register函数,同其他设备注册到内核系统中是同样的套路
“上线”:bus _attach_device,设备挂载在总线上,占用总线,开始通信
以上也可以简单理解为一个流程,1,注册SPI总线,2相关硬件初始化,3设备挂载SPI总线上,4,通信开始
2RTThread上设备SPI
主要文件分为3各部分,一个硬件驱动层:drv_spi.c,一个内核控制层spi_core.c,一个抽象层spi_dev.c。三个文件分工明确,结构都是比较清晰的,结合官方给的相关文档,参照rtthread设备驱动的相关架构,很容易理解这些文件中的相关驱动的内容,以下是相关工程文件
2.png
内核的相关内容和相关函数介绍说明,整体清晰,局部细节有内涵,总体感觉RTThread相当优秀,层次清晰明了,丝毫不脱离带水,值得学习研究,相关函数和功能细节也可以查询官方文档获取相关专业解释。
3.png
内核与硬件交互驱动也是比较简洁,一目了然,SPI也是一种通信协议,因此和IIC的相关主体也是一样,读、写、控制,较IIC驱动多了一个设备上总线的初始化相关的函数,主要是设备与总线的相关绑定内容。具体内容见下
4.png 图。
3RTThread设备SPI通信板级实践3.1、板级硬件
结合Demo板原理图,芯片的硬件SPI1总线挂载了两个设备一个是flash,GD25Q16,一个LCD,两个SPI设备通过不同的GPIO引脚去完成片选。后续的板级实现,主要是对Flash进行了SPI控制实践。
5.png
3.2、SPI实践
硬件SPI对应GPIO功能设置,自然这些都是按照规格书进行相关操作,GPIO相关AF功能的设置,对应的芯片DataSheet都有祥诉,可以去参考
6.png
SPI配置,包含SPI模式,SPI位宽,SPI最大传输频率等参数
7.png
3.3总线注册
如下图是RTThread发现的device,其中包含了IIC总线,SPI总线,对饮GPIO设备
8.png
3.4、设备“上线”
“spi10”即“spi1”上的0号设备,查看list_device发现了新的设备“spi10”,这一个就是挂载在SPI总线上的Flash设备。
9.png
结合自己定义的SPI设备名称,(当然这里的名称是可以修改的),执行设备挂载到SPI总线上,就可以在device list中看到自己定义的SPI设备,结合以下两张图片就可以清晰的实践SPI总线、SPI设备的发现与“上线”。
10.png
3.5、读取SPI设备ChipID
通过相关地址读取FlashID,分享的例程,实现了两种SPI操作读取FlashID。
12.png
[size=16.0000pt]4、总结
通过学习和实践,越发觉得RTThread的优秀与不简单,路漫漫,依旧还是需要保持上下求索的心态,认真学习体会这一实时操作系统的魅力,后续也会坚持学以致用,文章肯定有许多不完善和表述不当的地方,还希望不吝赐教,谢谢,最后附上工程实践代码。

GD32E23x_Demo_RTT_SPI.rar

2.18 MB, 下载次数: 6

使用特权

评论回复

打赏榜单

21小跑堂 打赏了 50.00 元 2021-09-23
理由:恭喜通过原创文章审核!请多多加油哦!

二哲科技| | 2021-9-24 15:13 | 显示全部楼层
RTThread的SPI理解会难一些。

使用特权

评论回复
elsaflower| | 2021-10-6 16:54 | 显示全部楼层
SPI移植不错。   

使用特权

评论回复
ulystronglll| | 2021-10-6 16:54 | 显示全部楼层
RTThread不是自带spi吗   

使用特权

评论回复
fengm| | 2021-10-6 16:54 | 显示全部楼层
这个是bsp里面的吗?   

使用特权

评论回复
sdCAD| | 2021-10-6 16:55 | 显示全部楼层
有具体的操作教程吧   

使用特权

评论回复
backlugin| | 2021-10-6 16:55 | 显示全部楼层
怎么注册一个spi设备呢   

使用特权

评论回复
sanxingnote7| | 2021-10-6 16:55 | 显示全部楼层
RTT上IIC的移植与实践也要学习。   

使用特权

评论回复
dzfansman| | 2021-10-6 16:55 | 显示全部楼层
IIC和SPI都需要学习。   


使用特权

评论回复
iamaiqiyi| | 2021-10-6 16:56 | 显示全部楼层
RTThread应用非常广泛。   

使用特权

评论回复
jstgotodo| | 2021-10-6 16:57 | 显示全部楼层
有mpu6050的例程吗?   

使用特权

评论回复
quickman| | 2021-10-6 16:57 | 显示全部楼层
驱动lcd,有完整的资料吗?  

使用特权

评论回复
返回列表 发新帖 本帖赏金 50.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

本版热帖

本版活跃用户

优质原创写原创,赢大奖

编辑推荐

  • 1 呐咯密密 得到打赏 ¥310.00
  • 2 qbwww 得到打赏 ¥265.00
  • 3 yanzhengxin1 得到打赏 ¥200.00
  • 4 full_stack 得到打赏 ¥100.00
  • 5 laocuo1142 得到打赏 ¥55.00
  • 6 zhangjiantao 得到打赏 ¥50.00
  • 7 小叶三千 得到打赏 ¥50.00
  • 8 cjseng 得到打赏 ¥50.00
  • 9 改名了 得到打赏 ¥30.00
  • 10 HXM1593 得到打赏 ¥15.00
在线客服 快速回复 返回顶部 返回列表