总线上挂了多个设备,谁都想说话,谁都不让谁,这就是总线竞争。后果是冒烟还是数据乱?取决于你的电路怎么设计。

1、什么是总线竞争?
简单说,就是同一时刻,两个或多个设备同时向同一根总线输出不同的电平。
一个输出高电平,一个输出低电平,电流直接从VCC经两个输出级灌到GND,形成短路通路。
2、到底会怎样?
分两种情况。
第一种:推挽输出对推挽输出。一个拉高,一个拉低,大电流直接对灌。轻则数据出错,重则输出级过热烧毁。真的会冒烟。
第二种:开漏输出对开漏输出。两个都只能拉低,不能主动拉高,靠上拉电阻提供高电平。这种情况不会短路,只是逻辑变成了线与。数据会出错,但不会烧片。I2C总线用的就是这种方式。
3、怎么避免?
第一招:三态门控制。同一时刻只允许一个设备使能输出,其余全部进入高阻态,总线让给一个人说话。
第二招:开漏加上拉。所有设备都用开漏输出,谁都不会主动输出高电平,自然不会对灌。
第三招:仲裁机制。CAN总线靠优先级仲裁,SPI靠片选信号,本质都是同一时间只让一个设备发言。
本文凡亿教育原创文章,转载请注明来源!
暂无评论