主机死机。
现象:部分脉冲后波形不再变化。
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;
}
2022/11/17 15:36
说明:当主机发送部分脉冲后,没有收到停止位,而波形不再变化。主机一开始能正常输出波形,说明主机外设配置正确,而后面不再输出,很可能是主机程序死循环到某些地方了。
当发生这种问题后可以去debug主机,查看代码走到哪里了。
解决:避免I2C传输过程中设置死循环。