This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/LAUNCHXL-CC2650:使用 I2C_TRANSFERT 返回 FALSE 从 I2C ADXL345读取数据?

Guru**** 2587365 points
Other Parts Discussed in Thread: CC2650

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/597402/rtos-launchxl-cc2650-reading-data-from-i2c-adxl345-with-i2c_transfer-return-false

器件型号: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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Huy、

    您是否也探测了 ardunio 的 I2C 线路?

    尝试比较示波器捕获、可能是由于极性问题或相位问题。

    驱动程序代码看起来正常!

    此致、
    反叛分子
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Rebel,

    感谢你的答复。 当我返回到我的 PC 时、我会尝试它。 为了澄清、什么是极性问题和相位问题、我们如何解决?

    非常感谢、
    Henry
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Huy、

    抱歉、我想 SPI -极性和时钟相位是可调参数。

    对于 I2C、最常见的问题往往是上拉电阻设置不正确。 (但是、建议是相同的、请检查范围捕获以验证问题所在的位置)

    此致、
    反叛分子