关于#stm32#的问题:IIC的空闲状态只能有外部上拉, 而此时空闲设备被拉到了高阻态,也就是相当于断路, 整个IIC总线只有开启了的设备才会正常进行通信

问题:i2c的高电平与高阻态迷惑

我们知道IIC的所有设备是接在一根总线上的,那么我们进行通信的时候往往只是几个设备进行通信,那么这时候其余的空闲设备可能会受到总线干扰,或者干扰到总线,怎么办呢?

为了避免总线信号的混乱,IIC的空闲状态只能有外部上拉, 而此时空闲设备被拉到了高阻态,也就是相当于断路, 整个IIC总线只有开启了的设备才会正常进行通信,而不会干扰到其他设备。

问题在于,SDA与SCL总线都外接了一个上拉电阻,这不应该是给予了一个高电平而不是高阻态了吗?

img

在IIC总线上,每个设备都需要有一个唯一的7位或10位地址,以便其他设备能够找到它。当一个设备不需要与其他设备通信时,可以通过设置自身地址为0x00,使其在总线上保持静默。这样可以避免该设备向总线发送干扰信号,同时也可以避免总线向该设备发送干扰信号。

此外,还可以采取以下措施来减少总线干扰:

  • 合理布局PCB,降低总线线长、线宽、线间距等参数,以减少信号的串扰和互相干扰。
  • 在总线的两端加上电阻和电容等元器件,以防止信号反射和抑制干扰。
  • 选择合适的总线驱动芯片和总线保护器件,以提高总线的抗干扰能力和可靠性。
  • 在设计中考虑使用总线控制器或者操作系统的IIC驱动程序,以便更好地管理总线的访问和使用。
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^