看了invensense官网的 MPU6050的specification: PS-MPU-6000A.pdf , 给出读写I2C时序如下
写函数,及写时序
writeBytes(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint8_t *data);
读函数,及读时序:
readBytes(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint8_t *data, uint16_t timeout=I2Cdev::readTimeout);
6050的寄存器都是 单字节的, 如果连续读2个BYTE的话,应该是读到了 regAddr 和 regAddr+1 两个BYTE.
但是在 dmpInitialize() 函数里面, 因为要把好多 代码 写入到 6050里面去, 这里的I2C读写地址空间是咋么个样子呢? 有人知道吗?
dmpInitialize() 调用了函数 I2Cdev::writeByes(advAddr, MPU6050_RA_MEM_R_W, chunkSize, progBuffer )
其中 宏MPU6050_RA_MEM_R_W == 0x6F,chunkSize是数据块的大小,DEBUG跟了下,好像是把数据块分成多个16字节大小写入。
这时的I2C不可能写入寄存器空间: 0x6F, 0x70, 0x71, ... ; 因为0x75就是 WHO AM I 寄存器了
那又是那个空间呢?
期待大侠给指点指点
|