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.

[参考译文] CC2340R5-Q1:I2C 驱动程序配置为回调模式、启动2C_transfer(I2cHandle,&i2cTransaction )后;API 调用、我们遇到 fault_isr()可能会出现什么问题?

Guru**** 2339340 points
Other Parts Discussed in Thread: CC2340R5, LP-EM-CC2340R5
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1450100/cc2340r5-q1-i2c-driver-configured-in-callback-mode-after-initiating-the-2c_transfer-i2chandle-i2ctransaction-api-call-we-are-getting-fault_isr-what-could-be-issue

器件型号:CC2340R5-Q1
主题中讨论的其他器件:LP-EM-CC2340R5、CC2340R5

工具与软件:

上电复位时、我可以看到 I2C 时钟和数据都按预期高。 我 可以看到 I2C 传输已启动、但 API 除外   I2C_TRANSFER (I2cHandle、&i2cTransaction); 但 API 未返回成功。 此 API 可能有什么问题。

另请注意、我正在为 I2C 事务使用驱动程序中提供的非阻塞功能。

 

I2C 线路连接到 评估套件 LP-EM-CC2340R5中的 DIO_0和 DIO_25

 

请参阅随附的 I2C 总线上逻辑分析仪捕获的图像。 此外、我看到 I2C 时钟线保持低电平并且未被释放。

 

在这种情况下,ISR 中出现了故障,您能告诉我们问题可能是什么吗?

 

 

 

堆栈 版本:    simplelink_lowpower_f3_sdk_7_40_00_64

控制器:           CC2340R52 BLE MCU

使用的硬件:LP-EM-CC2340R5

IDE:                       Code Composer Studio : 版本:12.6.0.00008

主机操作系统:             Windows 11.

 

 代码片段:

 

   i2cTransaction .targetAddress = i2cSlaveAddress;

   i2cTransaction .writeBuf = pTxBuffer;

   i2cTransaction .writeCount = size;

   i2cTransaction .readBuf = NULL;

   i2cTransaction .ReadCount = 0;

   i2cTransaction。arg = syncObject;

 

   状态= I2C_TRANSFER (I2cHandle、&i2cTransaction);

 

   如果 (status == false)

   {

       retVal = I2C_API_CALL_SUCCESS;

   }

   设计

   {

        retVal = I2C_API_CALL_FAILED;  //此处出现代码命中

   }

 

 

请告知我需要任何其他信息。

我们将使用 CC2340R5 MCU I2C 驱动程序 API 附加 I2C 驱动器以供参考、非常感谢您在这方面提出建议并了解该驱动器的相关知识  

 e2e.ti.com/.../hal_5F00_i2c.ce2e.ti.com/.../hal_5F00_i2c.h

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

    您好!

    我对提供的代码有点困惑:

       if (status == false)
    
        {
    
            retVal = I2C_API_CALL_SUCCESS;
    
        }
    
        else
    
        {
    
            retVal = I2C_API_CALL_FAILED;   // Code hits here
    
        }

    如果成功、i2c_transfer 的状态应为 true。 在该 if 语句中、您要检查其是否为 false、如果为 false、则表示已成功?

    您是否介意多解释一下?

    此致!

    Nima Behmanesh

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

    您好 Nima Behmanesh ,感谢您在我们的代码中找到逻辑错误。 借助 I2C 轮询传输模式、我可以实现 I2C 通信。 但要 测试我的 I2C 中断传输模式,让我测试一下 ,并提供反馈。  

    感谢您的支持   

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

    您好!

    不用担心。 请告诉我结果。

    此致!
    Nima Behmanesh