本帖最后由 colin2135 于 2015-10-22 09:19 编辑
话说,拿到M2几个星期了,一直没停下来,每天都在捣腾。从上周开始,一直在弄I2C和SPI的接口,用的是Raspbian 4.0(HDMI),内核是3.3的版本。真是苦不堪言,怎么调也弄不出波形数据。
这周开始,怀疑是系统的原因了,因为虽然我是新手,但按照各种教程都没弄好。所以让美国朋友帮我下了内核4.0的Raspbian版本,上传回百度云了。http://pan.baidu.com/s/1kTwAhsN
接着就开始一帆风顺了。
这两天试了I2C TOOLS的方式和wiringPi来驱动I2C,2个都能正确连接到I2C,方法也非常简单。
和一篇来讲讲使用I2C TOOLS连接MPU6050.
第一步:安装I2C TOOLS。- sudo apt-get install i2c-tools
复制代码
第二步:装好了之后,就可以检测了。因为没有使用I2C IO扩展板,所以只有俩I2C。
第三步:我的MPU6050接的是板上的I2C1,所以使用以下命令就可以查询到挂在I2C总线上设备的地址。
这个0X68就是MPU6050的地址。
第四步:顺利检测到MPU6050的地址后,为了方便客户知道已经顺利连接到MPU6050,在内部有一个专门寄存器叫WHO AM I ,里面有一个固定的值ox68。- sudo i2cget -y 1 0x68 0x75
复制代码
最后一步:将0x6B寄存器的值改为0X00,就可以读取线加速度和角加速度的值了。
线加速度:ax,ay,az
角加速度:gx,gy,gz
因为mpu6050内部寄存器是8位的,而它们的值是16位的,所以这些加速度的值的地址分别是:
高位 低位
ax: 0X3B 0X3C
ay: 0X3D 0X3E
az: 0X3F 0X40
temp: 0X41 0X42
gx: 0X43 0X44
gy: 0X45 0X46
gz: 0X47 0X48
使用说明:
如果向I2C设备中写入某字节,可输入指令i2cset -y 1 0x68 0x6b 0x10 -y 代表曲线用户交互过程,直接执行指令 1 代表I2C总线编号
0x68 代表I2C设备地址,
0x6b 代表存储器地址
0x10 代表存储器地址中的具体内容
如果从I2C从设备中读出某字节,可输入执行i2cget -y 1 0x68 0x6b,可得到以下反馈结果
-y 代表曲线用户交互过程,直接执行指令 1 代表I2C总线编号
0x68 代表I2C设备地址
0x6b 代表存储器地址
|