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.

[参考译文] F28M36P63C2:I2C 从机中断

Guru**** 2589280 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/661646/f28m36p63c2-i2c-slave-interrupt

器件型号:F28M36P63C2

大家好、

我正在尝试实现一个基本 I2C 从设备、当主设备尝试读取一个字节时、该从设备始终应答相同的数据。  

数据为0xbb。

当我在复位微控制器后第一次尝试读取时、数据会按预期正确接收。 但是、如果我再次尝试读取、则主设备中接收到的数据会损坏。

我的主设备已经过测试、可以与其他设备正常配合使用。

这是我的 I2C ISR 代码。

void isr_i2c_slave_offboard_isolated (void)
{
if (I2CSlaveIntStatus (I2C_offboard_iso_slave_base、I2C_SLAVE_INT_DATA){

G_ui32Status = I2CSlaveStatus (I2C_offboard_iso_slave_base);

if (g_ui32Status 和 I2C_SLAVE_ACT_RREQ){
G_ui32DataRx = I2CSlaveDataGet (I2C_offboard_iso_slave_base);
}

if (g_ui32Status 和 I2C_SLAVE_ACT_TREQ){
I2CSlaveDataPut (I2C_offboard_iso_slave_base、0xbb);
}


}

I2CSlaveIntClear (I2C_offboard_iso_slave_base);
I2CSlaveIntClearEx (I2C_offboard_iso_slave_base、I2C_SLAVE_INT_DATA);

}

我需要检查 ISR 中的其他内容吗?

谢谢!

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

    请确认您正在使用 M3 I2C。

    第一次执行后、是否永远不会再次进入 I2C 中断?
    启动或停止中断是暂挂的吗?

    您的 ISR 看起来就像在做它所需要的一切。 您还采取了哪些其他调试步骤?

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

    几天以来,我没有听到您的声音,因此我假设您能够解决您的问题。 如果情况并非如此,请拒绝此解决方案或回复此主题。 如果此主题被锁定、请制作一个描述问题当前状态的新主题。

    谢谢、
    标记