没有合适的资源?快使用搜索试试~ 我知道了~
首页RT-Thread应用笔记之I2C设备应用指南
资源详情
资源评论
资源推荐

AN0003 I2C设备应用指南
!!! abstract "摘要"
1 本文的目的和结构
1.1 本文的目的和背景
I2C(或写作i2c、IIC、iic)总线是由Philips公司开发的一种简单、双向二线制(时钟SCL、数据SDA)同步串行总
线。它只需要两根线即可在连接于总线上的器件之间传送信息,是半导体芯片使用最为广泛的通信接口之一。RT-
Thread中引入了I2C设备驱动框架,I2C设备驱动框架提供了基于GPIO模拟和硬件控制器的2种底层硬件接口。
1.2 本文的结构
本文首先描述了RT-Thread I2C设备驱动框架的基本情况,然后详细描述了I2C设备驱动接口,并使用I2C设备驱动
接口编写MPU6050的驱动程序,并给出了在正点原子STM32F4探索者开发板上验证的代码示例。
2 I2C设备驱动框架简介
在使用MCU进行项目开发的时候,往往需要用到I2C总线。一般来说,MCU带有I2C控制器(硬件I2C),也可以使
用MCU的2个GPIO自行编写程序模拟I2C总线协议实现同样的功能。
RT-Thread提供了一套I/O设备管理框架,它把I/O设备分成了三层进行处理:应用层、I/O设备管理层、底层驱动。
I/O设备管理框架给上层应用提供了统一的设备操作接口和I2C设备驱动接口,给下层提供的是底层驱动接口。应用
程序通过I/O设备模块提供的标准接口访问底层设备,底层设备的变更不会对上层应用产生影响,这种方式使得应
用程序具有很好的可移植性,应用程序可以很方便的从一个MCU移植到另外一个MCU。
本文以6轴惯性传感器MPU6050为例,使用RT-Thread I2C设备驱动框架提供的GPIO模拟I2C控制器的方式,阐述
了应用程序如何使用I2C设备驱动接口访问I2C设备。
本应用笔记以驱动I2C接口的6轴传感器MPU6050为例,说明了如何使用I2C设备驱动接口开发应用程序,并详细讲解
了RT‐ThreadI2C设备驱动框架及相关函数。
1

图2-1 RT-Thread I2C设备驱动框架
3 运行I2C设备驱动示例代码
3.1 示例代码软硬件平台
1. 正点原子STM32F4探索者开发板
2. GY-521 MPU-6050模块
3. MDK5
4. RT-Thread 源码
正点原子探索者STM32F4 开发板的MCU是STM32F407ZGT6,本示例使用USB串口(USART1)发送数据及供电,
使用SEGGER JLINK连接JTAG调试。
本次实验用的GY521模块是一款6轴惯性传感器模块,板载MPU6050。我们使用开发板的PD6(SCL)、
PD7(SDA)作为模拟I2C管脚,用杜邦线将GY521模块的SCL硬件连接到PD6、SDA连接到PD7、GND连接到开发
板的GND、VCC连接到3.3V。

图3.1-1 正点原子开发板
图3.1-2 GY521模块
本文基于正点原子STM32F4探索者开发板,给出了底层I2C驱动(GPIO模拟方式)的添加方法和I2C设备的具体应
用示例代码(以驱动MPU6050为例),包含寄存器读、写操作方法。由于RT-Thread上层应用API的通用性,因此
这些代码不局限于具体的硬件平台,用户可以轻松将它移植到其它平台上。

图3.2-1 使用menuconfig开启i2c
3.2 启用I2C设备驱动
1. 使用env工具命令行进入 rt-thread\bsp\stm32f4xx-HAL 目录,然后输入 menuconfig 命令进入配置界面。
2. 配置shell使用串口1:选中Using UART1,进入RT-Thread Kernel ---> Kernel Device Object菜单,修改the
device name for console为uart1。
3. 进入RT-Thread Components ---> Device Drivers菜单,选中 Using I2C device drivers,本示例使用GPIO模
拟I2C,因此还要开启 Use GPIO to simulate I2C。
4. 退出menuconfig配置界面并保存配置,在env命令行输入 scons--target=mdk5-s 命令生成mdk5工程,新
工程名为project。使用MDK5打开工程,修改MCU型号为STM32F407ZGTx,修改调试选项为J-LINK。
剩余15页未读,继续阅读



















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0