11. I2C 通信

本章介绍在Android中使用I2C总线与外部设备的通讯。

本章主要以带有40Pin引脚的LubanCat-2N为例,如下

../../_images/2N_40pin.png

11.1. i2c引脚

在LubanCat-2N板子40Pin上,存在i2c-3引脚。

I2C

引脚

功能

I2C3-SCL

5

i2c3的时钟信号线

I2C3-SDA

3

i2c3的数据线

11.2. 使能IIC通信接口

IIC接口在默认情况是关闭状态的,需要使能才能使用

这里以激活 I2C-3 为例,如下图:

../../_images/2N_i2c3.png

然后重新编译固件,刷机重启。

11.2.1. 检查IIC 设备

可以通过一下命令查看i2c总线有没有开启

1
2
adb shell
ls /dev/i2c-*

11.3. 连接设备

将mpu6050接入到i2c-3的总线上,如下图所示

../../_images/2N_mpu6050.png
1
2
3
4
5
6
7
#板卡与mpu6050连接

板子  ------  mpu6050
3.3V(1)  ------  VCC
GND(39)   ------  GND
SCL(5)   ------  SCL
SDA(3)   ------  SDA

11.4. IIC 第三方工具- i2c-tools

使用i2c-tools工具包提供了一些非常方便的工具来对系统的I2C总线进行调试, 在Android 系统上,已经存在i2c-tools工具

查看挂载在i2c-3上的器件情况,输出内容如下所示:

../../_images/i2c_dete.png

其中 “68” 是为MPU6050的设备地址,常用的命令还有以下几个。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#检测当前系统有几组i2c总线
i2cdetect -l

#查看i2c-3接口上的设备
i2cdetect -a 3

#读取指定设备的全部寄存器的值。
i2cdump  -f -y 3 0x68

#读取指定IIC设备的某个寄存器的值,如下读取地址为0x68器件中的0x01寄存器值。
i2cget -f -y 3 0x68 0x01

11.5. 读取陀螺仪传感器数据实验

11.5.1. 实验说明

本教程将通过IIC接口读取陀螺仪(MPU6050)的原始数据。 本次实验会以i2c-3做为示例,其他板子的操作与本次讲解的所差不多。

11.5.2. Android应用程序

../../_images/catscreen001.png

在这个应用程序中,点击查看按钮,可以每两秒刷新mpu6050的数据。如图:

../../_images/catscreen002.png