2025-11-08 05:29:22
ic开漏输出是为了让多个设备共享同一总线。开漏输出就是芯片只能把电平拉低,不能主动拉高,必须靠外接上拉电阻才能让电平恢复高电平。这样做的好处是多个设备同时拉低电平时不会烧坏芯片,还能自动检测总线冲突。比如当两个设备同时输出低电平时,系统会自动识别到短路,从而停止传输避免损坏硬件。
为什么ic必须用开漏输出呢?因为i2c总线是多个设备共用的通信线路,如果设备之间用推挽输出,当两个设备同时试图输出高电平时就会短路烧毁芯片。比如在5v系统中,推挽输出高电平电压是5v,低电平是0v,但开漏输出高电平实际是上拉电阻拉到5v,低电平是芯片内部导通的0v。根据i2c协议规定,总线上拉电阻阻值在4.7kΩ到10kΩ之间,这样既能保证高电平稳定,又不会让电流过大。当设备拉低电平时,电流最大值是40ma(参考ics51数据手册),推挽输出直接拉高电平时电流会达到芯片最大允许值,而开漏输出时电流只在拉低电平时流过,高电平时电流几乎为零。比如当设备1和设备2同时拉低总线时,总电流是40ma+40ma=80ma,但推挽输出时两个设备同时拉高电平就会导致短路,电流可能超过芯片承受极限烧毁。因此i2c必须采用开漏输出,配合上拉电阻实现总线共享和冲突检测。
本题链接: