[技术问答] I2C主机死机

[复制链接]
417|1
 楼主| jcky001 发表于 2022-11-18 09:54 | 显示全部楼层 |阅读模式
主机死机。
现象:部分脉冲后波形不再变化。

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

{

    g_u8MstRxData = (unsigned char) I2C_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;

}


cr315 发表于 2022-11-19 09:00 | 显示全部楼层
说明:当主机发送部分脉冲后,没有收到停止位,而波形不再变化。主机一开始能正常输出波形,说明主机外设配置正确,而后面不再输出,很可能是主机程序死循环到某些地方了。
当发生这种问题后可以去debug主机,查看代码走到哪里了。
解决:避免I2C传输过程中设置死循环。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1651

主题

5751

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部