工具与软件:
背景:
在当前项目中、我使用了 I2C 模块、同时使用了 I2C 主机和 I2C 从机。
2.项目中使用了两个 I2C 模块(均具有主/从功能)
3.为了方便测试,两个 I2C 模块对接,一个作为主模块,另一个作为从模块进行测试
4.正常通信没有问题、持续降低 CLK 或 SDA 也没有问题。
例外:
1.人为制造异常,不断接触 SDA,并尝试约10-30次,很可能 I2C 从机设置为异常,SDA 此时保持低电平。 从器件的 MCS 状态通常为0x60
电流处理:
1.查看数据表、说您想发送停止条件
2.尝试发送 STOP、多次尝试均未能解决该异常
3.关闭从器件 AF GPIO 映射(电平变为高电平),尝试发送停止,然后打开和关闭从器件 AF GPIO 映射。 多次传输后、可以联系它并恢复正常
2.人为制造异常,不断接触 SCK 与 GND ,尝试约20-50,可能会导致 I2C 从机或主机进入异常,
a)从器件的从器件 MCS 状态为0x60 (SDA 目前保持低电平)。 按照上述步骤处理异常、但无法消除该异常。 只有重新启动 MCU 才能消除该问题
b)主监控器 MCS 状态为0x60/0x70 (SDA 目前保持低电平)、按照上述异常处理可以消除异常并恢复正常运行
c) 主器件 MCS 状态为0x41 (此时 SDA SCK 电平为高电平)、无法再次发送数据。 根据上述处理、无法消除异常、只有重新启动 MCU 才能消除异常
关于 a)&b)问题、根据数据表中的说明、它指出可以复位 I2C 模块。 但是、如果我只是简单地关闭然后打开 I2C 外设、则不起作用。 Re 初始化也无效。
请帮助您识别和处理问题以及如何正确复位单个 I2C 外设