直接简单复制rom_i2cm_polling工程,使用同步阻塞方式操作I2C,刚开始,就不讲究了,怎么简单怎么来。。
看MPU手册,MPU6050使用400kbit/s的速率,跟例程中一致,无需更改,重新 #define MPU_ADDR 0x68 一个i2c从机地址。
开始验证I2C通信是否正常,方法为读取MPU6050的WHO_AM_I寄存器(117),默认应返回0x68.
例程只需做少许修改即可/* Write address, write 1 btye, read 8 bytes back */
mXfer.slaveAddr = I2C_ADDR_7BIT; // 0x68
#define MPUADDR_WHO_AM_I 117
tx[0] = MPUADDR_WHO_AM_I;
mXfer.txBuff = tx;
mXfer.rxBuff = rx;
mXfer.txSz = 1;
mXfer.rxSz = 1; // 1 byte!!!
/* I2C master driver will block if blocking flag is used */
mXfer.flags = ROM_I2CM_FLAG_BLOCKING;
/* Start transfer and wait for completion */
ROM_I2CM_Transfer(i2cmHandle, &mXfer);
|