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.

[参考译文] TDA4VE-Q1:频繁调用 I2C 可能会导致 I2C 卡住。

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1621078/tda4ve-q1-frequent-calls-to-i2c-can-cause-i2c-to-get-stuck

器件型号: TDA4VE-Q1

尊敬的 TI 专家:

在将摄像头的诊断周期缩短到 250ms 后、我们发现 I2C 可能会卡在 while 循环中而无法退出。 具体位置如下所示。 请帮助分析卡住这里的原因。  

image.png

while ((0U == I2CMasterIntRawStatusEx (hwAttrs->baseAddr、CSL_I2C_INT_RECV_READY))&&\(0U == I2CMasterIntRawStatusEx (hwAttrs->baseAddr、CSL_I2C_INT_RECV_READY  
谢谢!
 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、xie JC、

    “我不会介意的,我想要的只是要和你在一起。“

    感谢您的耐心。

    此致、

    Vinit

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

    您好、xie JC、

    看起来您使用的是轮询模式。

    TI 建议使用中断模式而不是轮询。

    然后切换到中断模式(如果可能)。

    如果您在中断模式下也遇到相同的问题、请告诉我。

    此致、

    Vinit

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

    如何切换到中断模式、如何进行配置?

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

    您好、

    为此、您需要将 i2c 配置为如下所示的中断模式、

    您需要进行两项更改、

    1.配置 i2c 时,启用中断。  

    2.初始化参数时, 将 transfermode 作为阻塞模式

     I2C_HwAttrs i2c_cfg;
    
          /* Get current I2C configuration */
          I2C_socGetInitCfg(i2cInstance, &i2c_cfg);
    
          /* Enable interrupt mode */
          i2c_cfg.enableIntr = true;              // KEY CHANGE: Enable interrupts
    
          /* Apply the configuration */
          I2C_socSetInitCfg(i2cInstance, &i2c_cfg);

    /* Set parameters for interrupt mode */
          I2C_Params_init(&i2cParams);
          i2cParams.transferMode = I2C_MODE_BLOCKING;     // Blocking with interrupts
    
          /* Open handle */
          handle = I2C_open(i2cInstance, &i2cParams);

    注意:- 如果问题仍然存在、那么我想您提到您决定继续(轮询或中断)的模式、并提供问题发生前和问题发生时的寄存器转储、以便调试问题。

    此致、

    Vinit