在STM32F101控制器中,由于通信由于复位而中断,因此设置了I2C BUSY标志。恢复机制也失败了

时间:2018-07-24 17:13:43

标签: c embedded stm32 i2c

在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:content/translations/en.CD00190234.pdf

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

1 个答案:

答案 0 :(得分:1)

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

在此之后可以重置I2C外设。