本帖最后由 强仔00001 于 2015-9-25 16:41 编辑
去玩了一个星期后终于回来了,手上正好有个MPU9250
和ADXL345
的模块,所以今天写了个小程序,来读取这两个模块的数据。I2C
底层是用ljj3166版主
提供的。MPU9250
和ADXL345
这两个模块是可以I2C
或者SPI
通信的。在I2C
通信时有个SAO
位来控制I2C
地址的最后一位是1
还是0
。如下手册: 这是MPU9250的部分截图,当我们SAO脚接地是7位地址就是1101000,假如补全到8位就是0xD0就是写地址,0xD1就是读地址。
ADXL345也是如此,就不多说了。
当我们写好程序后怎样可以确定是否通信成功。有一个办法就是读器件的ID,如MPU9250的寄存器就是WHOAMI,其他的加速度陀螺仪的I2C器件也是如此,一般都会有这个寄存器读。当我们读取这个寄存器时就会返回一个固定的值,MPU9250就是0x71,十进制就是113,ADXL345就是0xE5,十进制就是229。
今天写了个程序读取MPU9250的加速度的数值,把数值显示带OLED上,并且通过串口打印到电脑上。由于串口的管脚跟SPI管脚共用,所以我把OLED改成模拟的。
实验的效果:
这是读取X轴的数值,通过串口打印到电脑上。
OLED显示的器件ID正确,OLED还显示了3个加速度轴的数据。数值前的3个名字太长了,不过不影响显示。
源代码:
MPU9250.zip
(169.75 KB, 下载次数: 117)