目录
前言
1. 设备检查命令
1.1 查看I2C驱动
1.2 i2c-tools
1.2.1 I2C-detect安装
1.2.2 i2cdetect 命令
1.2.3 i2cget 命令
1.2.4 i2cset 命令
1.2.5 i2cdump 命令
2. 源码实战
2.1 编写 bsp_mpu6050.h 文件
2.2 编写 bsp_mpu6050.c 文件
2.3 编写 main.c 文件
相关链接
目前不涉及驱动源码
李柱明博客:https://www.cnblogs.com/lizhuming/
本文链接:https://www.cnblogs.com/lizhuming/p/14063151.html
命令:<code>ls /sys/bus/i2c/devices</code> 用于查看系统上存在的 I2C 总线
i2c-tools,安装 i2c-tools 方便调试 i2c设备
使用命令:<code>sudo apt install i2c-tools -y</code> 安装 i2c-tools
安装后可以使用命令:i2cdetect、i2cdump、i2cset 和 i2cget
i2cdetect
用于扫描 I2C 总线上的设备
语法
<code>i2cdetect [-y] [-a] [-q|-r] i2cbus [first last]</code>
参数
y:关闭交互模式,使用该参数时,不会提示警告信息。
a:扫描总线上的所有设备
q:使用SMBus的“quick write”命令进行检测,不建议使用该参数
r:使用SMBus的“receive byte”命令进行检测,不建议使用该参数
i2cbus:指定i2c总线的编号
first、last:扫描的地址范围
返回值
'-':表示该地址被检测,但是没有芯片应答
'UU':表示该地址当前由内核驱动程序使用
'**':** 表示以16进制表示的设备地址编号,如“68”
例子:
<code>i2cdetect -a 0</code>
i2cdetect:i2cdetect命令
-a:总线上所有设备
0:标号为 0 的 I2C,即是 I2C 1。

上图中扫描出存在设备地址为 0x1e 和 0x68 的设备。
<code>i2cdetect -F i2cbus</code>:查询 i2c 总线的功能,参数 i2cbus 表示 i2c 总线(看上)
<code>i2cdetect -V</code>:打印软件的版本号
<code>i2cdetect -l</code>:检测当前系统有几组 i2c 总线
i2cget
用于读取 I2C 设备的某个寄存器的值
<code>i2cget [-f] [-y] i2cbus chip-address [data-address [mode]]</code>
f:强制访问
y:关闭交互模式,使用该参数时,不会提示警告信息
i2cbus:指定 I2C 总线的编号
chip-address:I2C 设备地址
data-address:I2C 寄存器地址
mode:指定读取的大小, 可以是b, w, s或i,分别对应了字节,字,SMBus块, I2C块
i2cset
写入指定 I2C 设备的某个寄存器的值
<code>i2cset [-f] [-y] [-m mask] [-r] i2cbus chip-address data-address [value] … [mode]</code>
m:
r:写入后立即回读寄存器值,并将结果与写入的值进行比较
value:要写入的值
i2cdump
读取指定设备的全部寄存器的值
<code>i2cdump [-f] [-r first-last] [-y] i2cbus address [mode [bank [bankreg]]]</code>
r:指定寄存器范围,只能扫描从 first 到 last 区域
f:强制访问设备
y:关闭人机交互模式
address:指定设备地址
例子
<code>i2cdump -V</code>:打印软件的版本号
采用MPU6050设备进行实验
步骤:
先编写基础的 I2C 基础函数
编写 MPU6050 初始化函数和关闭设备文件函数
编写获取 MPU6050 数据函数
编写业务函数
编写好 MPU6050 需要的宏
extern 外部函数
bsp_mpu6050.c
编写 I2C 读写函数
编写 MPU6050 设备初始化函数及关闭文件函数
编写获取 MPU6050 设备寄存器数据函数
源码