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

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

3天内不再提示

基于RT-Thread的I2C(软件) 实践 | 技术集结

RT-Thread官方账号 2025-05-06 18:44 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群


一、软硬件介绍

(一)I2C(软件)

I2C是一种广泛应用于嵌入式系统中的短距离串行通信协议,支持多主多从设备模式,主机通过时钟信号SCL和数据线SDA与从机进行数据交互。在 RT-Thread 操作系统中,我们可以通过菜单配置工具menuconfig快速设置软件 I2C 的引脚,并借助其内部已实现的驱动程序,方便快捷地完成调用与开发。

(二)FRDM-MCXA153

FRDM-MCXA153是一款紧凑且可扩展的开发板,可快速基于MCX A14和A15 MCU开展原型设计。它们提供行业标准的接口,可轻松访问MCU的I/O、集成的开放标准串行接口、外部闪存和板载MCU-Link调试器。本文主要基于恩智浦FRDM—MCXA153开发板 X RT-Thread,测试I2C(软件) 功能以及SSD1306 OLED

15b7c026-2a67-11f0-9434-92fbcf53809c.jpg

通过MCUXpresso Developer Experience(MCUXpresso开发人员体验)提供其他工具,如面向附加板的扩展板中心和面向软件示例的应用代码中心。

(三)SSD1306 OLED

SSD1306是一款单片CMOS OLED/PLED驱动器,具有有机/聚合物发光控制器二极管点阵图形显示系。SSD1306内置对比度控制、显示RAM振荡器,减少了外部组件和功耗。它有256级亮度控制。数据/命令是从通用单片机通过硬件可选的6800/8000系列兼容并行接口发送,I2C接口或串行外围接口。它适用于许多紧凑型便携式应用程序,例如手机副显示屏、MP3播放器、计算器等。

15c7e596-2a67-11f0-9434-92fbcf53809c.jpg


二、工程创建

目前RT-Thread Studio尚未支持恩智浦FRDM-MCXA153开发板BSP,需要从gitee下载最新的主线,通过scons命令创建工程。下载好主线源码后,在rt-thread\bsp\nxp\mcx\mcxa\frdm-mcxa153 目录下打开scons环境,配置软件I2C驱动和SSD1306 OLED。

(一)软件I2C配置

在恩智浦FRDM-MCXA153开发板板载的mikroBUS socket找到2个pin做软件I2C接口的SCL/SDA,考虑到3.3V/GND的需要,直接选择; P1_0和P1_2,具体可以从针脚图看到,下图红框处的针脚。

15d56e3c-2a67-11f0-9434-92fbcf53809c.jpg

因为是软件I2C,直接在menuconfig的设备驱动中选择“Use GPIO to soft simulate I2C”,设置中直接配置到I2C1 bus上,之前选择了P1_0和P1_2作为SCL/SDA,按照((port*32)+pin)的计算公式配置好即可,具体如下图。

15dca562-2a67-11f0-9434-92fbcf53809c.jpg

其它的软件I2C的具体实现,都在RT-Thread的组件中实现了,不再介绍。

(二)SSD1306 OLED配置

在menuconfig中选择enable SSD1306,并且设置好I2C bus name,I2C的地址默认是0x3c无需修改,同时打开SSD1306测试demo。

15e780ae-2a67-11f0-9434-92fbcf53809c.jpg

上述内容设置好之后,选择保存。分别执行下述2个命令:

pkgs —update

scons —target=mdk5


Keil工程生成后,打开工程编译程序。

Program Size: Code=83324RO-data=25164RW-data=784ZI-data=7876 Finished:0information,2warning and0error messages.".\build\rtthread.axf"-0Error(s),6Warning(s).Build Time Elapsed: 00:00:04

然后下载到恩智浦FRDM-MCXA153开发板上。

161a5b82-2a67-11f0-9434-92fbcf53809c.jpg


三、软件I2C测试

固件下载完成后,reset系统,可以看到软件I2C已经配置成功。

sram heap,begin:0x0x200019d4,end:0x0x20005c00\|/-RT- Thread OperatingSystem/|\ 5.2.0build Jul21202415:49:402006-2024CopyrightbyRT-Thread teamI/I2C: I2C bus [i2c1] registeredD/I2C_S: Software simulation i2c1 init done, SCL pin:0x20, SDA pin:0x22I/I2C: I2C bus [i2c0] registeredusingarmclang, version:6180002MCXA153 HelloWorldmsh>

list device后,可以看到I2C1已经起来:

msh>list devicedevice type refcount-------- -------------------- ----------i2c0 I2C Bus 0i2c1 I2C Bus 0pin Pin Device 0uart0 CharacterDevice 2msh>

把ssd1306_TestAll的demo跑起来。

1621ae5a-2a67-11f0-9434-92fbcf53809c.jpg

对比硬件I2C,软件I2C的刷屏速度的确差了很多。

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

    关注

    69

    文章

    5356

    浏览量

    91876
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1562

    浏览量

    131725
  • RT-Thread
    +关注

    关注

    32

    文章

    1638

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RT-Thread记录(十八、SHT21与24C02软件包)

    本文学习测试一下几款典型设备的 RT-Thread I2C软件
    的头像 发表于 07-08 11:07 5363次阅读
    <b class='flag-5'>RT-Thread</b>记录(十八、SHT21与24<b class='flag-5'>C</b>02<b class='flag-5'>软件</b>包)

    基于RT-Thread的EK-RA2E2 设备驱动移植与应用 | 技术集结

    目录前言环境配置HelloRT-ThreadGPIO输入与中断I2C主机驱动SPI主机驱动ADC设备驱动PWM设备驱动Flash设备驱动WDT设备驱动1前言本文说明如何在RT-Thread下配置与使用EK-RA2E2的板载外设
    的头像 发表于 10-05 10:06 6333次阅读
    基于<b class='flag-5'>RT-Thread</b>的EK-RA<b class='flag-5'>2E2</b> 设备驱动移植与应用 | <b class='flag-5'>技术</b><b class='flag-5'>集结</b>

    RT-Thread Vector软件包:嵌入式开发的动态数组容器 | 技术集结

    RT-Thread Vector软件包:嵌入式开发的动态数组容器 | 技术集结
    的头像 发表于 01-25 09:33 5623次阅读
    <b class='flag-5'>RT-Thread</b> Vector<b class='flag-5'>软件</b>包:嵌入式开发的动态数组容器 | <b class='flag-5'>技术</b><b class='flag-5'>集结</b>

    RT-Thread里面驱动层的i2c能否用硬件方式实现呢?

    很好奇RT-Thread里面驱动层的i2c实现为啥都是用的软件模拟实现的,硬件i2c它不香吗,有人做过硬件方式实现吗?一起交流下
    发表于 04-15 09:41

    基于RT-Thread测试NK-980 IoT开发板的I2C外设性能简析

    1、RT-Thread I2C应用实践  硬件环境  ● 开发板:Nuvoton NK-980 IoT  ● USB线:Micro-USB 连接线2根  ●
    发表于 10-12 15:56

    详解RT-Thread I2C设备驱动框架及相关函数

    摘要本应用笔记以驱动 I2C 接口的 6 轴传感器 MPU6050 为例,说明了如何使用 I2C 设备驱动接口开发应用程序,并详细讲解了 RT-Thread I2C 设备驱动框架及相关
    发表于 10-25 12:02

    详细讲解RT-Thread I2C设备驱动框架及相关函数

    本应用笔记以驱动I2C接口的6轴传感器MPU6050为例,说明了如何使用I2C设备驱动接口开发应用程序,并详细讲解了RT-Thread I2C设备驱动框架及相关函数。
    的头像 发表于 03-29 10:52 2.2w次阅读
    详细讲解<b class='flag-5'>RT-Thread</b> <b class='flag-5'>I2C</b>设备驱动框架及相关函数

    RT-Thread软件包定义和使用

    RT-Thread软件包是运行于RT-Thread物联网操作系统平台上,面向不同应用领域的通用软件组件 。RT-Thread 同时提供了开放
    的头像 发表于 05-21 11:29 1.2w次阅读
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>软件</b>包定义和使用

    基于RT-Thread的智慧路灯案例实验分享

    这里我用的是RT-Thread Studio V1.1.0,这里的I2C的范例配置有点问题,其它版本的RT-Thread Studio应该可以按范例配置那么配,如果按范例配置编译不通过的话可以按照
    的头像 发表于 07-01 14:43 4846次阅读
    基于<b class='flag-5'>RT-Thread</b>的智慧路灯案例实验分享

    RT-Thread全球技术大会:RT-Thread开源重塑软件发展新生态

    RT-Thread全球技术大会:RT-Thread开源重塑软件发展新生态,市场空间巨大,以开放的心态不断提升技术水平,大胆创新,迎接挑战!
    的头像 发表于 05-27 10:47 2015次阅读
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技术</b>大会:<b class='flag-5'>RT-Thread</b>开源重塑<b class='flag-5'>软件</b>发展新生态

    RT-Thread全球技术大会:萤石研发团队使用RT-Thread技术挑战

    RT-Thread全球技术大会:研发团队使用RT-Thread技术挑战         审核编辑:彭静
    的头像 发表于 05-27 11:36 2696次阅读
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技术</b>大会:萤石研发团队使用<b class='flag-5'>RT-Thread</b>的<b class='flag-5'>技术</b>挑战

    RT-Thread全球技术大会:使用RT-Thread开发大规模嵌入式软件带来的挑战与好处

    RT-Thread全球技术大会:使用RT-Thread开发大规模嵌入式软件带来的挑战与好处       审核编辑:彭静
    的头像 发表于 05-27 11:45 2215次阅读
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技术</b>大会:使用<b class='flag-5'>RT-Thread</b>开发大规模嵌入式<b class='flag-5'>软件</b>带来的挑战与好处

    2022 RT-Thread全球技术大会:萤石EZIOT SDK对RT-Thread的支持

    2022 RT-Thread全球技术大会:RT-Thread在摄像头及IoT设备上的实践经验分享
    的头像 发表于 05-27 11:08 2022次阅读
    2022 <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技术</b>大会:萤石EZIOT SDK对<b class='flag-5'>RT-Thread</b>的支持

    RT-Thread文档_I2C 总线设备

    RT-Thread文档_I2C 总线设备
    发表于 02-22 18:35 0次下载
    <b class='flag-5'>RT-Thread</b>文档_<b class='flag-5'>I2C</b> 总线设备

    驱动SSD1306OLED屏检验软件I2C驱动方案

    进行RT-Thread Settings 开启软件I2C
    发表于 08-15 15:33 2163次阅读
    驱动SSD1306OLED屏检验<b class='flag-5'>软件</b><b class='flag-5'>I2C</b>驱动方案