请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:LAUNCHXL-CC2650 Thread 中讨论的其他器件:CC2650
工具/软件:TI-RTOS
大家好、
我正在尝试读取 x、y、z 的数据、从我的 adxl345到 cc2650、但由于某种原因、每次 调用 I2C_transfer 时 I2C 事务都会失败(返回 false)。 adxl345可与 Arduino 完美配合使用。 此外、我对 SCL 和 SDA 线应用了探头、发现信号实际上正在发送、并且正在使用正确的写入地址、但 ADXL345加速计未能发回确认位(对于加速计:ACK = 0、NACK = 1)。
是否有人可以帮助我确定以下代码的错误(它尝试通过 I2C 读取 ADXL345上的电源控制寄存器)。
ADXL345_GetRegisterValue (ADXL345_POWER_CTL); //ADXL345_POWER_CTL = 0x2D
UINT32_t ADXL345_GetRegisterValue (uint32_t registerAddress){
uint32_t ReadData[1];
uint32_t writeData[1];
uint32_t 寄存器值= 0;
I2C_Handle I2C;
I2C_Params i2cParams;
I2C_Transaction i2cTransaction;
//创建 I2C 以供使用
I2C_Params_init (&i2cParams);
i2cParams.bitrate = I2C_400kHz;
I2C = I2C_open (Board_I2C、&i2cParams);
if (i2c == NULL){
System_abort ("初始化 I2C\n 时出错");
}
否则{
System_printf ("I2C 读取初始化:正在工作!\n");
system_flush();
}
//设置事务
writeData[0]=寄存器地址;
i2cTransaction.slaveAddress = ADXL345_address; //ADXL345_address = 0x53
i2cTransaction.writeBuf = writeData;
i2cTransaction.writeCount = 1;
i2cTransaction.readBuf = ReadData;
i2cTransaction.ReadCount = 1;
if (I2C_transfer (i2c、&i2cTransaction)){
registerValue = ReadData[0];
System_printf ("读取工作\n");
system_flush();
} 否则{
System_printf ("I2C 总线故障....。 读取寄存器函数\n");
system_flush();
}
/*已取消初始化 I2C */
I2C_Close (i2c);
返回寄存器值
;}
感谢您的任何帮助。 提前感谢。
此致、
Henry