0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RT-Thread上SPI的细节内容

Q4MP_gh_c472c21 来源:嵌入式ARM 作者:yanzhengxin1 2021-09-30 15:35 次阅读

作为通信协议的两大基础,IIC和SPI两者的应用都非常广泛,上一篇文章讲过了RTT上IIC的移植与实践。

《一步到位!教你RT-Thread上设备IIC驱动移植》

讲完IIC,自然少不了SPI的相关内容,基于此,本文就来详细说明RT-Thread上设备SPI的移植与实践,SPI的通信原理不用赘诉,百度一搜索,对应的知识点就明明白白的。本文的主要内容还是阐述一下RT-Thread上SPI的一些细节内容,总体感觉RT-Thread的代码层次,以及各个设备驱动的核心文件都相当优秀,这个不是打广告,而是真正的谁用谁知道,随着慢慢的学习,也会慢慢爱上它,不得不对RTThread表示赞扬,的确优秀源自长时间的积累升华,好了,废话不闲叙,开始本文的主体介绍。

1、RT-Thread上SPI设备“上线”

这里的“上线”,你也许会好奇,这个只是我自己的理解,同RT-Thread设备IIC总线不一样的是,IIC总线注册了就可以直接使用,而SPI总线注册完了之后,相当于存在于内核中,还要进行一步,我所理解的“上线”得出操作,即SPI设备需要挂载到总线上面去,才可以进行相关操作。一下是代码里面的细节

注册:register函数,同其他设备注册到内核系统中是同样的套路,“上线”:bus _attach_device,设备挂载在总线上,占用总线,开始通信。

以上也可以简单理解为一个流程,1、注册SPI总线,2、相关硬件初始化,3、设备挂载SPI总线上,4、通信开始。

2、RT-Thread上设备SPI

主要文件分为3各部分,一个硬件驱动层:drv_spi.c,一个内核控制层spi_core.c,一个抽象层spi_dev.c。三个文件分工明确,结构都是比较清晰的,结合官方给的相关文档,参照RT-Thread设备驱动的相关架构,很容易理解这些文件中的相关驱动的内容,以下是相关工程文件

内核的相关内容和相关函数介绍说明,整体清晰,局部细节有内涵,总体感觉RT-Thread相当优秀,层次清晰明了,丝毫不脱离带水,值得学习研究,相关函数和功能细节也可以查询官方文档获取相关专业解释。

内核与硬件交互驱动也是比较简洁,一目了然,SPI也是一种通信协议,因此和IIC的相关主体也是一样,读、写、控制,较IIC驱动多了一个设备上总线的初始化相关的函数,主要是设备与总线的相关绑定内容。

3、RT-Thread设备SPI通信板级实践

3.1、板级硬件

结合Demo板原理图,芯片的硬件SPI1总线挂载了两个设备一个是flash,GD25Q16,一个LCD,两个SPI设备通过不同的GPIO引脚去完成片选。后续的板级实现,主要是对Flash进行了SPI控制实践。

637424de-2116-11ec-82a8-dac502259ad0.png

3.2、SPI实践

硬件SPI对应GPIO功能设置,自然这些都是按照规格书进行相关操作,GPIO相关AF功能的设置,对应的芯片DataSheet都有祥诉,可以去参考

SPI配置,包含SPI模式,SPI位宽,SPI最大传输频率等参数

3.3总线注册

如下图是RT-Thread发现的device,其中包含了IIC总线,SPI总线,对饮GPIO设备。

643990ca-2116-11ec-82a8-dac502259ad0.png

3.4、设备“上线”

“spi10”即“spi1”上的0号设备,查看list_device发现了新的设备“spi10”,这一个就是挂载在SPI总线上的Flash设备。

结合自己定义的SPI设备名称,(当然这里的名称是可以修改的),执行设备挂载到SPI总线上,就可以在device list中看到自己定义的SPI设备,结合以下两张图片就可以清晰的实践SPI总线、SPI设备的发现与“上线”。

3.5、读取SPI设备ChipID

通过相关地址读取FlashID,分享的例程,实现了两种SPI操作读取FlashID。

4、总结

通过学习和实践,越发觉得RT-Thread的优秀与不简单,路漫漫,依旧还是需要保持上下求索的心态,认真学习体会这一实时操作系统的魅力,后续也会坚持学以致用,文章肯定有许多不完善和表述不当的地方,还希望不吝赐教,谢谢,最后附上工程实践代码。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1612

    浏览量

    89583
  • RTThread
    +关注

    关注

    7

    文章

    128

    浏览量

    40516

原文标题:RT-Thread上设备SPI移植与实践

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    4月25日北京站RT-Thread线下workshop,探索RT-Thread混合部署新模式

    4月25日,下午我们将在北京举办RT-Thread混合部署线下workshop,在瑞芯微RK3568平台上实现同时运行RT-Thread和linux,本次workshop邀请到RT-Thread资深
    的头像 发表于 04-16 08:35 72次阅读
    4月25日北京站<b class='flag-5'>RT-Thread</b>线下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式

    4月10日深圳场RT-Thread线下workshop,探索RT-Thread混合部署新模式!

    4月10日我们将在深圳福田举办RT-Thread混合部署线下workshop,在瑞芯微RK3568平台上实现同时运行RT-Thread和linux,本次workshop邀请到RT-Thread资深嵌入式软件工程师农晓明老师为您讲
    的头像 发表于 03-27 11:36 415次阅读
    4月10日深圳场<b class='flag-5'>RT-Thread</b>线下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    4月10日深圳场RT-Thread线下workshop,探索RT-Thread混合部署新模式!

    4月10日我们将在深圳福田举办RT-Thread混合部署线下workshop,在瑞芯微RK3568平台上实现同时运行RT-Thread和linux,本次workshop邀请到RT-Thread资深
    的头像 发表于 03-27 08:34 142次阅读
    4月10日深圳场<b class='flag-5'>RT-Thread</b>线下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    基于rt-thread的socket通信设计

    最近再研究 rt-thread 的通信 ,想设计出 eps8266(多个) rt-thread(作为中控) 服务器的通信框架,使用的开发板是 潘多拉
    的头像 发表于 10-13 15:02 669次阅读
    基于<b class='flag-5'>rt-thread</b>的socket通信设计

    RT-Thread使用Soft RTC(软件模拟RTC)

    开发环境:野火的stm32f407,rt-thread studio版本是版本: 2.2.6,rt-thread 使用版本为4.0.3,stm32f4的资源包为0.2.2。
    的头像 发表于 10-12 17:39 349次阅读
    <b class='flag-5'>RT-Thread</b>使用Soft RTC(软件模拟RTC)

    试用RT-Thread Studio(VSCode)

    想尝试RT-Thread studio (VSCode),先下载安装VSCode,再搜索RT-Thread
    的头像 发表于 10-12 10:58 554次阅读
    试用<b class='flag-5'>RT-Thread</b> Studio(VSCode)

    RT-Thread v5.0.2 发布

    RT-Thread 代码仓库地址: ●  https://github.com/RT-Thread/rt-thread RT-Thread 5.0.2 版本发布日志详情: ●  htt
    的头像 发表于 10-10 18:45 768次阅读
    <b class='flag-5'>RT-Thread</b> v5.0.2 发布

    新书上架|嵌入式系统原理及应用——基于STM32和RT-Thread

    人间九月,山河已秋, RT-Thread又上新了!自2018年RT-Thread首本书籍问世后,越来越多的创作者因为RT-Thread的自主可控、稳定可靠、友好生态,把RT-Thread
    的头像 发表于 09-25 18:25 535次阅读
    新书上架|嵌入式系统原理及应用——基于STM32和<b class='flag-5'>RT-Thread</b>

    基于 RT-Thread 的 RoboMaster 电控框架(一)

    由于 RT-Thread 稳定高效的内核,丰富的文档教程,积极活跃的社区氛围,以及设备驱动框架、Kconfig、Scons、日志系统、海量的软件包……很难不选择 RT-Thread 进行项目开发
    的头像 发表于 09-19 19:55 412次阅读

    新书上架|RT-Thread带你解密“芯”世界

    夏木荫荫,人间八月,RT-Thread又上新了!自2018年RT-Thread首本书籍问世后,越来越多的创作者因为RT-Thread的自主可控、稳定可靠、友好生态,把RT-Thread
    的头像 发表于 08-22 20:10 451次阅读
    新书上架|<b class='flag-5'>RT-Thread</b>带你解密“芯”世界

    使用RT-Thread Studio进行智能家居终端的设计

    本次方案基于星火一号开发板开发,使用RT-Thread Studio进行工程创建,代码编辑,RT-Thread配置,调试配置,程序下载等功能。
    的头像 发表于 07-28 16:41 1364次阅读
    使用<b class='flag-5'>RT-Thread</b> Studio进行智能家居终端的设计

    怎么知道RT-Thread的CRYPTO设备对M2354支持怎样呢?

    前面碰到了一个问题,RT-Thread 支持 MD5,可是 M2354 却不支持,那怎么知道 RT-Thread 的 CRYPTO 设备对 M2354 支持怎样呢?
    的头像 发表于 07-27 15:21 566次阅读
    怎么知道<b class='flag-5'>RT-Thread</b>的CRYPTO设备对M2354支持怎样呢?

    教你手上没有开发板如何跑RT-THREAD STM32应用?

    首先打开 RT-Thread Studio,新建RT-Thread
    的头像 发表于 07-18 16:09 1042次阅读
    教你手上没有开发板如何跑<b class='flag-5'>RT-THREAD</b> STM32应用?

    RT-Thread中的Github Actions

    RT-Thread中一共有五个Github Action(rt-thread/.github/workflow) 分别是: RT-Thread BSP build check(.github
    的头像 发表于 06-01 03:10 348次阅读
    <b class='flag-5'>RT-Thread</b>中的Github Actions

    基于RT-Thread Studio学习

    前期准备:从官网下载 RT-Thread Studio,弄个账号登陆,开启rt-thread学习之旅。
    的头像 发表于 05-15 11:00 2567次阅读
    基于<b class='flag-5'>RT-Thread</b> Studio学习