I2C主机死机

chrishu |浏览250次
收藏|2022/11/17 15:35

主机死机。

现象:部分脉冲后波形不再变化。

else if(u32Status == 0x58 /* DATA has been received and NACK has been returned */

{

    g_u8MstRxData = (unsigned charI2C_GET_DATA(I2C0);

    if(g_u8MstRxData != 0x0D)

    {

        printf("Received data error.\n"); 

        while(1);

     }

     I2C_SET_CONTROL_REG(I2C0, I2C_CTL_STO_SI);

     g_u8MstEndFlag = 1;

}

满意回答

2022/11/17 15:36

说明:当主机发送部分脉冲后,没有收到停止位,而波形不再变化。主机一开始能正常输出波形,说明主机外设配置正确,而后面不再输出,很可能是主机程序死循环到某些地方了。

当发生这种问题后可以去debug主机,查看代码走到哪里了。

解决:避免I2C传输过程中设置死循环。

nuvoton2022

其他回答(0)
0人关注该问题
+1
 加载中...