|
本帖最后由 QianFan 于 2015-5-24 17:53 编辑 Master是一个用Nucleo334编写的一个调试设备,结合串口显示软件,可以帮助我们产生一定的时序,方便我们的调试。有关更多细节可以查看:I am Master! 今天就结合MPU6050,一个加速度,角加速度模块,来介绍一下如何使用。
这次试验中,使用的是一个MPU6050模块,接入VCC,GND,SCL,SDA,AD0这几条线。AD0可以接高电平,也可以接低电平。这个只会关系到我们实际使用的设备地址。我接的是GND。接完线之后,准备工作就完成了。 可能一提到I2C设备,首先想到的是设备地址是多少。查数据手册很麻烦,也懒得查了。直接使用i2c-online来查找一下所有在线的设备吧。
查到0xd0就是6050的设备地址。在之后进行读写的时候就要使用这个地址了。 找到设备地址之后,可以去查看一下Who Am I这个寄存器。判断一下芯片是不是还活着。
读出来的数值是0x68 。和数据手册上面提到的相符。这个6050可用。 在判断6050可用的时候,肯定会想到的是直接读取加速度的数值:加速度数值是连续相连的6个地址,2个为一组,高字节在前。
为什么读取的数值都是0x00呢?是Master的事情还是6050挂了?可能会这样想。其实不用担心,只不过是现在6050还没有工作。在上电之后是不会工作的。
读了0x6B这个寄存器中的值发现,是0x40(0b0100_0000),也就是sleep位是1 。 在上电之后是不工作的,为了让他工作,只好将这个寄存器改成0了。
现在6050应该能工作了。在试着读取三轴的加速度看看:
现在三轴的加速度读取完毕,分别对应三轴的加速度:
数据是使用补码表示的,也就是说0xFFE0是一个负数。转换成十进制是-32 。 还是一个很小的数值。 如何将这些数字换成我们能读的加速度呢?上图中有一个换算值。只要将读出的原始数据除以当前满量程下的分辨率即可。但是我们当前的满量程值是多少呢?
数值是0x00,也就是现在的满量程是+-2g。结合上图,分辨率是16384.最后可以得出我们三轴的加速度数值:
: |
微信公众号
手机版
一个星期吧,只是爱好啊,还是在校生,没有工作
强大!膜拜了~!
谢谢了,过几天会出一个SD卡的
真图是什么??方言吗?