最近刚买了块树梅派3b,打算重新玩下linux驱动等,正好身边有mpu9250模块,用来研究正好。
操作环境:
1.PC:FEDORA28
2.交叉编译环境
3.树莓派3b,并且系统为linux
4.mpu9250模块
5.MotionSensorExample
以上的第五点就是在github上的一份案例代码,修改一部分就可以用。
main函数在main.c,lib–I2Cdev是i2c读取的一些底层函数,不需要动这里,主要是在inv_mpu_lib目录下的inv_mpu.c,修改的主要是这里。
修改Makefile,尝试编译
先看MontionSensor目录下的Makefile
CXX=arm-linux-gnueabihf-g++
AR=arm-linux-gnueabihf-ar
CXXFLAGS=-Wall -g -O2
CXX_OPTS=-c -DMPU9250 -DMPU_DEBUG -I../libs/
省略无关代码
我用的模块是9250,所以DMPU9250 -DMPU_DEBUG,这里做出修改,如果你的是6050,就改成相应的数字。编译顺利。但是放到派上,出现了MPU init failed!经过追踪,错误是在下面的代码里。
#elif defined MPU6500
#define MPU6500_MEM_REV_ADDR (0x17)
if (mpu_read_mem(MPU6500_MEM_REV_ADDR, 1, &rev))
return 1;
if (rev == 0x1)
st.chip_cfg.