柳树苗儿 发表于 2024-12-1 14:08:05

8H硬件IIC卡在wait()中, 不外接实际的I2C器件


8H硬件I2C卡在wait()中 | 不外接实际的I2C器件, 没外部器件




用8H1K08T的硬件IIC与空气温湿度连接,当插着空气温湿度传感器的时候通讯正常,
但是IIC线有虚接或者不插传感器的时候,用硬件IIC查询中断的方式就会卡在wait()中,
这是为什么呢。

王昱顺 发表于 2024-12-1 14:23:18

本帖最后由 王昱顺 于 2024-12-1 14:24 编辑

这是因为iic漏掉数据,没有走完一整个流程就会卡死在wait里面了。
iic等对面回复,对面回复因为虚接或者其他原因漏掉。而对面不再次查询又不会回复,所以两边就僵持住了
需要给wait改成超时退出或者使用其他手段进行监控

柳树苗儿 发表于 2024-12-1 14:36:11

王昱顺 发表于 2024-12-1 14:23
这是因为iic漏掉数据,没有走完一整个流程就会卡死在wait里面了。
iic等对面回复,对面回复因为虚接或者其 ...

主机状态下什么情况下会出等待iic回复呢,按道理主机模式下时序是主机控制的,一般情况下不会出现流程没走完卡死吧,用硬件IIC主机模式,发送起始位为都会卡在wait中,这应该不是你说这种情况吧

王昱顺 发表于 2024-12-1 14:55:26

柳树苗儿 发表于 2024-12-1 14:36
主机状态下什么情况下会出等待iic回复呢,按道理主机模式下时序是主机控制的,一般情况下不会出现流程没 ...

因为sda需要电平上拉啊,你看看是不是sda电平没上去,被认成总线挂起了

柳树苗儿 发表于 2024-12-1 16:17:43

王昱顺 发表于 2024-12-1 14:55
因为sda需要电平上拉啊,你看看是不是sda电平没上去,被认成总线挂起了

有上拉,而且电平测量也确实被拉高了。

DebugLab 发表于 2024-12-1 21:16:49

接收ACK时,从机会下拉SDA,主机读到ACK表示从机接收正常
一般需要进行错误处理,比如ACK不正常,过一段时间重试几次,或者尝试修改SCL频率后再通信,过一段时间或反复尝试失败,就确认从机没有正确连接,主机程序需要跳过或报错,需要按具体的应用场合设计
页: [1]
查看完整版本: 8H硬件IIC卡在wait()中, 不外接实际的I2C器件