- 学习路线
- RT-Thread 简介
- RT-Thread Nano
- RT-Thread Smart
- RT-Thread Studio
- 快速上手
- 内核
- Env 工具
- 设备和驱动
- 组件
- 软件包
- 物联网
- 工具
- MicroPython用户手册
- 应用开发
- RT-Thread 版本选择
- 开发环境搭建
- 固件尺寸优化
- 在RT-Thread潘多拉开发板上实现电源管理
- 网络协议栈驱动移植
- 在STM32F429上应用网络功能
- 在STM32F429上应用文件系统
- 在潘多拉上使用 SFUD 操作 Flash
- FreeModbus 应用笔记
- 应用AT组件连接ESP8266模块
- 多线程非阻塞网络编程
- 使用QEMU运行动态模块组件
- CmBacktrace应用
- 在 STM32L4 上应用 littlefs 文件系统
- STM32通用Bootloader
- wireshark抓取tls数据包
- 在 STM32 上应用 C++
- STM32 上使用 PWM
- STM32 上使用 USB Host 读写 U 盘
- QEMU 网络视频教程
- Demo 示例
- 其他
- 传感器驱动开发指南
- 软件包开发
- 向RT-Thread贡献代码
- 内核视频教程
- Env 视频教程
- rw007 SPI WiFi 模块使用
- wireshark抓取tls数据包
- Keil MDK 安装
- Rtthread dir
- 支持的传感器列表
- 支持的 Touch 列表
- Builtin functions and exceptions
- Cmath
- Gc
- Math
- Sys
- Uarray
- Ubinascii
- Ucollections
- Uerrno
- Uhashlib
- Uheapq
- Uio
- Ujson
- Uos
- Ure
- Uselect
- Usocket
- ussl – SSL/TLS 模块
- Ustruct
- Utime
- Uzlib
- thread
- micropython – 内部功能访问与控制模块
- Rtthread
- Machine
- Pin
- I2C
- SPI
- UART
- LCD
- RTC
- PWM
- ADC
- WDT
- Timer
- Network
- Wlan
- 传感器驱动框架介绍
- Preparations
软件 I2C
简介
I2C 总线是 PHILIPS 公司开发的一种半双工、双向二线制同步串行总线。I2C 总线传输数据时只需两根信号线,一根是双向数据线 SDA,另一根是双向时钟线 SCL。
I2C 总线可以通过芯片上板载的 I2C 外设实现,也可以通过 GPIO 引脚模拟 I2C 总线协议来实现。
硬件 I2C 对应芯片上的 I2C 外设,由相应的 I2C 控制器和驱动电路组成,其所使用的引脚也是专用的。软件 I2C 使用的是普通的 GPIO 引脚,用软件控制 GPIO 管脚状态来模拟 I2C 通信波形。所以软件 I2C 不受管脚限制,接口也比较灵活。
RT-Thread 的 I2C 设备驱动框架即支持硬件 I2C 也支持软件模拟 I2C。本文将基于 stm32l475-atk-pandora
开发板就软件 I2C 的驱动开发展开讲解。
软件 I2C 的配置步骤总结如下:
新建 RT-Thread 完整版项目
打开软件 I2C 设备驱动框架
定义软件 I2C 总线相关端口和引脚的宏
使用 I2C 总线
更多软件 I2C 的配置及添加步骤也可以参考相应工程文件 board.h
中对软件模拟 I2C 部分的描述。
新建 RT-Thread 项目
使用 RT-Thread Studio 新建基于 v4.0.2 的工程,界面如下图所示
配置过程可总结为以下步骤:
定义自己的工程名及工程生成文件的存放路径
选择
基于芯片
创建工程,选择的 RT-Thread 版本为 v4.0.2选择厂商及芯片型号
配置串口信息
配置调试器信息
工程配置完成后点击下方的 完成
按钮即可创建 RT-Thread 的工程。
打开 I2C 设备驱动框架
在 RT-Thread Setting
文件中借助图形化配置工具打开软件 I2C 的驱动框架,如下图所示
左键单击即可开启 软件模拟 I2C
(组件开启,相应的图标会高亮),在该选项上右键,可以查看软件模拟 I2C 的 详细配置
,具体配置如下所示
RT-Thread Setting
----组件
--------设备驱动程序
------------使用 I2C 设备驱动程序
----------------使用 GPIO 模拟 I2C
配置结果如下图所示
定义软件 I2C 相关的宏
在 board.h 文件中定义软件 I2C 相关的宏
#define BSP_USING_I2C1 /* 使用 I2C1 总线 */
#define BSP_I2C1_SCL_PIN GET_PIN(C, 1) /* SCL -> PC1 */
#define BSP_I2C1_SDA_PIN GET_PIN(D, 6) /* SDA -> PD6 */
上述 I2C 总线相关的宏表示 I2C1 总线的 SCL 时钟线连接在 PC1 引脚,SDA 数据线连接在 PD6 引脚。如果需要使用多个 I2C 总线,相关的宏定义参考 board.h 文件中 I2C1 的宏进行定义即可
I2C 总线的使用
编译并下载程序在终端中输入 list_device
测试命令可以看到 i2c1 已经成功注册到系统中了,如下图所示
更多 I2C 总线的应用请参考 I2C 总线设备应用示例
注意事项
- STM32 软件 I2C 的驱动依赖于 PIN 设备驱动。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论