为什么要做软件复位,I2C协议?

Why we need to make a software reset, I2C protocol?

我正在研究I2C协议,我想用STM32微控制器实现它。所以阅读文档文件我展示了 I2C 的初始化流程图,它建议在开始时进行软件重置(在我们进行启动器初始化设置之后)。我已在文档中阅读有关软件重置的参考资料,但我无法在脑海中说清楚为什么我们需要软件重置。

您没有指定您正在使用的确切部件,但对于许多 STM32,I2C 外设会在 RCC 计时时监视总线。如果在您的 power-on 序列期间 I2C 总线的状态没有明确定义,那么 I2C 外设可能会看到它认为是总线的内容 activity。然后它监视总线以寻找停止序列。如果你指示它在它仍然认为总线繁忙时进行启动序列,它将失败。

软件复位的目的不仅是将寄存器复位到它们的默认值,而且让外设认为总线处于空闲状态。