I2C SDA口如何作为输出
时间:10-02
整理:3721RD
点击:
i2c总线协议,SDA是作为输入输出的双向口,SDA是采用开漏结构,如图所示

理论上,当SDA作为输出的时候,若是输出低电平,NMOS管导通,SDA被拉至地;若是输出高电平,NMOS截止,SDA通过电阻上拉至电源电压,实现高电平的输出。
但是,SDA是双向口,当SDA作为输出的时候,SDA口肯定还是有输入信号的,怎样实现输入输出的隔离?如何使SDA的输入信号不影响到输出?

理论上,当SDA作为输出的时候,若是输出低电平,NMOS管导通,SDA被拉至地;若是输出高电平,NMOS截止,SDA通过电阻上拉至电源电压,实现高电平的输出。
但是,SDA是双向口,当SDA作为输出的时候,SDA口肯定还是有输入信号的,怎样实现输入输出的隔离?如何使SDA的输入信号不影响到输出?
在G极缺个反相器吧,在这个电路结构上加个反相器,其实你理解有问题,SDA作为总线是双向的,但是在模块内部还是单向的(包括sda_i、sda_o),其中sda_o与G极相连,sda_i与D极相连,同样总线SDA与D极相连。当发出数据,sda_o高会使SDA高,sda_o低会使SDA低,当接收数据时本方一定要先释放总线这时会有sda_o拉高,SDA的会把数据通过sda_i传输过来。因此,你不用考虑隔离的问题,发出sda_o和接收sda_i是两个方向的数据传输,一方传输时另一方必须要释放总线,根据总线协议,模块内部会处理这个问题的。
分时复用,输入输出,控制器会对IO进行不同的配置。
一个时刻只能是input 或者output
