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.

[参考译文] CC2640R2F:连续 UART 读取回调会影响 I2C LIS3DH 加速计自检。

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

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/597088/cc2640r2f-continuous-uart-read-callback-affects-i2c-lis3dh-accelerometer-self-test

器件型号:CC2640R2F

您好!

  在我们基于 CC2640R2F 的产品中、我们有一个"测试模式"。 在"测试模式"下、我们测试 LED、蜂鸣器和 I2C 加速计等外设。 进入"测试模式"后、我们通过 UART 输入命令示例"acce"来测试我们的加速计。  在“测试模式”下,只有 TestApp__Accelerometer()失败。 如果我在 TI-RTOS 主任务中调用此 TestApp__Accelerometer (),而不是在“测试模式”中,它将一直起作用。  

下面是我在进入测试模式后的观察结果。

1.如果我在 测试模式初始化时调用 TestApp__Accelerometer (),它将通过。

/*配置 UART */
UartApp__Init();
UartApp_WriteString ("测试已开始\r\n);
TestApp__Accelerometer(); 

注意:将此 UART 设置为重复读取回调以接受命令后、请参阅"ace"示例。

2.重复的 UART 读取回调初始化后, 它会使 TestApp__Accelerometer()失败,特别是读取加速计的器件标识寄存器。

STATUS_t LIS3DH_GetWho_AM_I (uint8_t* val)
{
if (!LIS3DH_ReadReg (LIS3DH_WH_AM_I_ADDR、val))
{
返回 MEMS_ERROR;
}
其他
{
返回 MEMS_SUCCESS;
}
} 

我调试 TestApp__Accelerometer,特别是 I2C 部件,它能够 sensor_select()并返回 I2C 句柄。

我的结论是 UART 重复读回调会影响 I2C。 这不应该由 TI-RTOS 驱动程序处理? 此问题的正确解决方案是什么?

-克尔

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

    您好!

      不管怎样、我已经使它生效了。

      我在 TI-RTOS 主任务上调用 TestApp__Accelerometer ()。 TestApp__Accelerometer()通过2次,第三次失败。 据称主 TI-RTOS 任务应该重复执行。 但是,我已经得出结论,主要 TI-RTOS 任务进入了“待机模式”或“空闲模式”。 因此,当应用程序进入“待机模式”或“空闲模式”时,它似乎会影响 I2C。 为了解决此问题,我发布了一个事件来“唤醒”应用程序。  

      键入 Tera Term "acce"后,程序将调用 TestApp_AccEventPost()以发布事件。

    void TestApp_AccEventPost (void)
    {
    EVENT_POST (synctEvent、SBP_ACC_TEST_EVT);
    } 

      然后在 TI-RTOS 主任务上、它将处理该事件并调用 TestApp__Accelerometer ()。

    IF (事件和 SBP_ACC_TEST_EVT)
    {
    TestApp__Accelerometer();
    } 

    问题得到解决。

    但是、我想知道 CC2640R2F 相关文档中指出、当应用程序进入 "待机模式"或"空闲模式"时 I2C 会受到影响的位置。

    -克尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不确定问题是什么、但如果您执行任何驱动程序操作、可能建议禁用/防止待机。

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

    如何禁用/防止待机模式?

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

    您可以呼叫
    power_setConstraint (PowerCC26XX_SB_disallow);
    power_setConstraint (PowerCC26XX_IDLE_PD_Disallow);

    祝你一切顺利