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

    文章

    1866

    浏览量

    99800
  • RTThread
    +关注

    关注

    8

    文章

    133

    浏览量

    42544

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RT-Thread Studio V2.3.0 版本正式发布!

    支持针对rt-thread版本号大于5.1.0时使用Env2.0.0高版本2新增支持卸载studio时选择是否保留已下载的SDK资源包文件3修复SDK管理器选择了版
    的头像 发表于 11-29 09:29 701次阅读
    <b class='flag-5'>RT-Thread</b> Studio V2.3.0 版本正式发布!

    首搭RT-Thread程翧车控平台| RT-Thread程翧 S32K344 快速原型开发平台正式上市!| 产品动态

    在智能汽车迈向高集成与高安全的时代,VCU/ECU开发正面临效率与可靠性的双重考验。依赖单一硬件或拼凑软件方案的传统模式,已成为制约创新的瓶颈。为此,RT-Thread带来里程碑式的解决方案
    的头像 发表于 10-31 11:53 483次阅读
    首搭<b class='flag-5'>RT-Thread</b>程翧车控平台| <b class='flag-5'>RT-Thread</b>程翧 S32K344 快速原型开发平台正式上市!| 产品动态

    2025年RT-Thread开发者巡回培训报名正式启动!

    亲爱的RT-Thread社区成员们:新程再启,共赴热爱!2025年RT-Thread开发者巡回培训正式启动报名!今年,我们选择了西安、武汉、北京、杭州、深圳、上海、成都这7座城市,为大家带来
    的头像 发表于 09-27 10:39 1140次阅读
    2025年<b class='flag-5'>RT-Thread</b>开发者巡回培训报名正式启动!

    rt-thread studio 2.2.9如何使用最新的RT-Thread v5.2.0 released?

    rt-thread studio2.2.9如何使用最新的RT-Thread v5.2.0 released? 原先以为修改index_all.json,发现联网的时候,会自动覆盖 另lastet版本
    发表于 09-16 06:06

    Windows使用ENV工具开发基于先楫MCU的RT-Thread应用

    前言Env是RT-Thread推出的开发辅助工具,针对基于RT-Thread操作系统的项目工程,提供编译构建环境、图形化系统配置及软件包管理功能。其内置的menuconfig提供了简单易用的配置剪裁
    的头像 发表于 08-29 12:22 950次阅读
    Windows<b class='flag-5'>上</b>使用ENV工具开发基于先楫MCU的<b class='flag-5'>RT-Thread</b>应用

    在Ubuntu开发基于先楫MCU的RT-Thread应用指南

    1、前言RT-ThreadEnv是RT-Thread推出的开发辅助工具,针对基于RT-Thread操作系统的项目工程,提供编译构建环境、图形化系统配置及软件包管理功能。其内置的menuconfig
    的头像 发表于 08-29 12:22 1228次阅读
    在Ubuntu<b class='flag-5'>上</b>开发基于先楫MCU的<b class='flag-5'>RT-Thread</b>应用指南

    【好书推荐】RT-Thread第20本相关书籍!《嵌入式实时操作系统RT-Thread原理与应用》| 技术集结

    01内容简介ContentSummary本书为读者提供了一个全面、系统的RT-Thread学习指南,旨在帮助初学者及有经验的开发者掌握RT-Thread实时操作系统和STM32嵌入式微控制器的核心
    的头像 发表于 08-24 10:05 685次阅读
    【好书推荐】<b class='flag-5'>RT-Thread</b>第20本相关书籍!《嵌入式实时操作系统<b class='flag-5'>RT-Thread</b>原理与应用》| 技术集结

    SPI玩转WiFi,RT-Thread ESP-Hosted驱动深度适配指南 | 技术集结

    还在为MCU的WiFi连接方案发愁?RT-Thread社区开源ESP-Hosted驱动,通过标准SPI接口即可实现,并且该仓库已整理成RT-Thread软件包。RT
    的头像 发表于 07-09 19:03 1116次阅读
    用<b class='flag-5'>SPI</b>玩转WiFi,<b class='flag-5'>RT-Thread</b> ESP-Hosted驱动深度适配指南 | 技术集结

    RT-Thread荣获2025优秀开源项目 | 新闻速递

    贡献,荣获年度“优秀开源项目奖”。RT-Thread睿赛德荣获2025优秀开源项目奖目前,开源已从软件领域延展至硬件、数据、算法、标准、内容等多领域。作为国内开源
    的头像 发表于 07-04 09:04 2431次阅读
    <b class='flag-5'>RT-Thread</b>荣获2025优秀开源项目 | 新闻速递

    揭秘RT-Thread的AUTOSAR CP系统

    本文探讨了RT-Thread与AUTOSARCP的融合,解决车载ECU开发中实时性、安全性与灵活性的平衡问题。通过分层安全内核(rt-safetyos/autoos)和工具链整合,兼容AUTOSAR
    的头像 发表于 06-23 20:22 2944次阅读
    揭秘<b class='flag-5'>RT-Thread</b><b class='flag-5'>上</b>的AUTOSAR CP系统

    人形机器人敏捷开发新路径:RT-Thread以软件底座破解复杂系统难题 | 新闻速递

    5月29日,2025机器人开发者大会在上海张江科学城拉开帷幕,RT-Thread睿赛德受邀参会,与宇树、智元、傅利叶等企业共话机器人行业解决方案。在人形机器人本体专题论坛RT-Thread睿赛德
    的头像 发表于 06-04 14:03 1031次阅读
    人形机器人敏捷开发新路径:<b class='flag-5'>RT-Thread</b>以软件底座破解复杂系统难题 | 新闻速递

    RT-Thread 如何实现 SLAAC?

    大佬们,本菜鸟有一些网络的问题需要帮助: RT-Thread 如何实现 SLAAC(无状态地址自动分配),给连接到我的板子的设备分配 IPv6 地址; RT-Thread 如何发
    发表于 05-27 07:21

    RT-Thread审核团招募: 深度参与开源RTOS社区治理与演进

    全球开发者招募:RT-Thread审核团(ReviewTeam)正式开放申请!在开源的世界里,代码审查(CodeReview)是保证软件质量、促进技术交流的关键环节。RT-Thread作为全球领先
    的头像 发表于 05-21 18:02 1065次阅读
    <b class='flag-5'>RT-Thread</b>审核团招募: 深度参与开源RTOS社区治理与演进

    如何将RT-Thread移植到NXP MCUXPressoIDE

    RT-Thread默认支持的IDE只有IAR 和 Keil, 那如何将RT-Thread移植到NXP MCUXPressoIDE呢?本文内容比较简单但稍有琐碎,希望对有需要的小伙伴有
    的头像 发表于 02-13 10:37 2439次阅读
    如何将<b class='flag-5'>RT-Thread</b>移植到NXP MCUXPressoIDE<b class='flag-5'>上</b>

    Deepseek单片机?RT-Thread跑通大语言模型

    前言单片机也能聊天?RT-Thread跑通大语言模型在RT-Thread论坛忽然看到了单片机和大模型对话的文章,想着春节期间看到大语言模型的热度持续攀升,恰巧手头有块RA8D1Vi
    的头像 发表于 02-07 18:59 2365次阅读
    Deepseek<b class='flag-5'>上</b>单片机?<b class='flag-5'>RT-Thread</b><b class='flag-5'>上</b>跑通大语言模型