主题中讨论的其他部件:CC2652RB、 LAUNCHXL-CC2640R2
i2cDeviceReadReg8是我正确使用此函数的
原型:i2cDeviceReadReg8 (#i2cAddr、regAddr8;值8)
从 I2C 器件中具有8位地址的寄存器中读取8位值。
这相当于以下序列:
- 起始条件(i2cStart()、状态位未清除)
- 发送 I2C 地址+ W (i2cTx ())
- 发送8位寄存器地址(i2cTx ())
- 如果成功:
- 重复起始条件(i2cRepeatedStart())
- 发送 I2C 地址+ R (i2cTx ())
- 接收8位寄存器值(i2cRxNack())
- 停止条件(i2cStop())
参数值
- #i2cAddr:I2C 从器件7位地址、向左移位一位([7:1]=地址、[0]=零)
- regAddr8:寄存器地址
返回值
- Value8:寄存器值
在下面、我认为它应该发送器件地址、读取寄存器地址、然后将第三个变量作为读取值存储到要在主程序中读取的输出中
i2cDeviceReadReg8 (BNO055_ADDRESS_ACCELGYRO、BNO055_ACC_DATA_X_LSB;outputBufferAccelXLSB);
U16 eco1;
i2cDeviceReadReg8 (BNO055_address_ACCELGYRO、0x05;eco1);
outputBufferAccelZLSB = eco1;
//安排下一次执行
fwScheduleTask (1);
上述两个函数都从 传感器控制器 RAM 传递第二个变量、而不是应该读取到第三个变量并传递到输出中的值、我做了什么错?
DataReadSensorController[0]= scifTaskData.readAndSetupBno055.outputBufferAccelXLSB;
DataReadSensorController[1]= scifTaskData.readAndSetupBno055.outputBufferAccelXMSB;
DataReadSensorController[2]= scifTaskData.readAndSetupBno055.outputBufferAccelYLSB;
DataReadSensorController[3]= scifTaskData.readAndSetupBno055.outputBufferAccelYMSB;
例如、对于第二个函数、读取的是0x05、而不是该寄存器中的值



