单片机/MCU论坛
直播中

王飞云

8年用户 1579经验值
私信 关注
[问答]

使用NUC123当I2C slave,累积3次后reset就没有用了怎么处理?

使用NUC123当I2C slave。
在某些形况下,master发生错误后,产生一个不正常的波形,最后,再製造一个stop波形。
上述的形况,导致NUC123得到一个status code 0x00,之后,在也不ack设定的address了。
将I2C reset,重新config后,可正常work。但是累积3次后,reset就没有用了。

请问除了chip reset之类的,还有别的方式可以让I2C恢复正常吗?

回帖(2)

沈艳丽

2024-1-16 09:56:42
试试看下面步骤:
1. 先下STOP (STA,STO,SI,AA)=(0,1,1,x)
2. 然后release bus (STA,STO,SI,AA)=(0,0,1,X)
3. 再重新下START(STA,STO,SI,AA)=(1,0,1,X)
举报

旧念

2024-1-16 16:54:30
如果在NUC123上使用I2C作为slave时出现问题,可以尝试以下方法来恢复其正常工作:

1. 确保I2C时钟配置正确:检查时钟设置是否正确,并确保I2C时钟在规范范围内。如果时钟设置不正确,可能会导致通信错误。

2. 检查硬件连接:确保I2C引脚连接正确,没有短路或断路等问题。

3. 配置I2C模式:重新配置I2C模式和控制寄存器,确保其设置正确。可以使用适当的库函数或直接设置相关寄存器来实现。

4. 清除I2C错误标志:在发生错误后,可能需要清除I2C模块中的错误标志。这可以通过读取相关寄存器并重置它们来完成。

5. 检查I2C时序:确保I2C的时序符合规范要求。可能需要调整I2C总线的速度设置以适应特定的环境和设备。

6. 使用不同的I2C地址:尝试使用不同的I2C地址配置来解决问题。有时主设备可能会出现错误,导致从设备无法正确检测到地址。

如果上述方法仍无法解决问题,可能需要考虑使用芯片级复位或其他硬件恢复方法来重置整个芯片。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分