首页 > 解决方案 > 在 STM32F101 控制器中,由于复位导致通信中断,I2C BUSY 标志置位。恢复机制也失败了

问题描述

在 STM32F101 中,由于复位发生了一些意外,BUSY 标志保持高电平。为了摆脱它,我遵循了 STM 以下文档第 26 页中给出的步骤:

https://www.st.com/content/ccc/resource/technical/document/errata_sheet/7d/02/75/64/17/fc/4d/fd/CD00190234.pdf/files/CD00190234.pdf/jcr:内容/翻译/en.CD00190234.pdf

在做这些步骤时,我可以做第一步。在第二步(将 SCL 和 SDA 设置为开漏输出,其值为高),我已将 SCL 和 SDA 设置为输出开漏,但如果我将引脚设置为高,则只有 SCL 的 IDR 寄存器设置为高,而 SDA 引脚的无法设置 IDR 寄存器(但设置了 ODR 寄存器)。因此,我无法继续执行进一步的步骤。请帮我解决这个问题

标签: cembeddedstm32i2c

解决方案


在这种情况下,这不是问题。从设备保持 SDA 为低电平。要退出这个死锁,您需要提供 8 到 12 个时钟。您需要切换 SCL 引脚,并且在每个时钟之后您需要检查 SDA 线是否已被从设备释放。这与本勘误表没有任何共同之处。

在这之后很好地重置 I2C 外设。


推荐阅读