首先,信号的电平转换或信号的隔离应当接触很多,TI有众多不同速度、不同电压的此类逻辑芯片,或称缓冲器或电平转换器,非隔离器件中,也有自动双向电平转换、可控单向电平转换芯片。此处主要讨论IO隔离器件中的双向IO的情况,实际应用中,就有IIC的SDA信号,SWD接口的数据线等。IIC还是有一些专用芯片,例如ISO1640、ISO1641就是IIC专用的双向IO隔离器件,不过要用作其他,速度就太低了。
平常,更易获取的器件,例如ADI的磁耦隔离器、TI的电容隔离器件,或者近些年的国产纳芯微、荣湃。
随便看一个:
问题就是:
如何用此类器件,做一个双向IO隔离电路?
先做一个假设,这些器件的输出都是具备推挽结构,就是输出L=GND,输出H= VCC(便于分析,肯定不是开漏输出,至于具体什么结构,只能说都是L和H不能短路的电路)
最初的想法有什么问题?
太简单了,直接左右短接,信号能传输?肯定不能!具体为什么不能?
1. 初始态中的短路因素
当B是高的时候,A输入0,导致A侧短路;
当B是0的时候,A输出高,A侧一样短路;
反向,一样,注意,此处的短路是应为隔离芯片的输出电路和信号输入短路,而不是信号的A输入和B输入,AB是电器隔离的,短路只发生在各自一侧,并且是在隔离器件“L和H不能短路”的假设之上。
2. 传输中的短路因素
信号回环,A输入H,B变成H,又传回A处,都是H没有问题,但是传输中,下降沿发生,A变成L,这一瞬间,隔离器件输出的H与此时A的L短路!
3. 通信双方配合不畅导致短路
提前剧透,即使AB信号间只有一根导线,这样的故障一样存在,就是应为发送双方都在发数据,而A发的H,B发的L,就像一根导线会导致短路一样,此时器件左右两侧都会短路。
再次剧透,这样的短路因素,是一根线或者一个电路同时需要传输两个方向信号导致的,逻辑上不可避免,解决方法只能是协商一致,硬件上顶多保护却不能根除这种逻辑问题。
所以,此后的分析要剔除这种因素,才能得到最后的结论。
如何解决初始态的短路问题?
“当B是高的时候,A输入0,导致A侧短路;”的问题解决了,因为B的H无法传到A,当B=H时,左侧D1视作开路的开关。
“当B是0的时候,A输出高,A侧一样短路;”这个问题没有解决。首先要搞清楚谁在发送信号,上文说到,同时发送的情况不需要电路来处理也无法处理。
以SWD调试接口数据线SWDIO为例。数据线空闲状态为H,发送数据时候,配合同步时钟SWCLK变化,当A为高时候,两种情况空闲或发送H,当B为0的时候,只有一种可能就是B在发送数据,综合上文的【3】,A发送H的情况被排除。这是B在向A发数据。
所以问题变成了,B向A发送L的时候,数据线的空闲状态H不能导致短路,注意此时是B发送L给A,A输入某设备,此时该设备已切换为输入状态了。
输入时线路上的空闲电平
为解决上边提出的问题,此时在左侧A信号处加入了上拉电阻,A作为某设备的输入信号,空闲状态电平为高。因为是输入信号,不存在被推挽电路拉到高进而与B传过来的低信号短路的情况。
以上解决了初始态的短路问题。
如何解决传输中的短路问题
最后的问题就是信号回环导致的短路,A从H->L,L信号不能通过B向A返回 ,加入D2电路进行阻断。D2不能影响B向A的正常传输,只能是A发送L时候才能断开,所以D2的开启条件就是D1前端 线路是L时候才会断开,如果是H,被D1阻断,不会影响到B处电平,此时A处的H没有直接传到B,高电平是在低电平变化后被上拉电阻拉倒VCC的,所以电平变化的速度受该阻值控制。
D1和D2的选型
D1的功能是输入高,输出断路,输入低则输出低;一个逻辑器件可实现,输入低,输出低,输入高,输出高阻态。
D2需要正常传输信号,所以必须具备传输高低电平能力,并且受第三个脚的控制。一个单路模拟开关即可。
如果空闲电平变成低,那该怎么修改?
很快发现,如果传输线默认电平是L,必须改上拉电阻为下拉。上电初始都是L,D2永远不会打开,数据无法传输!
按照上文分析步骤,可以得到结论:
下拉电阻。D1改为过H阻L,D2改为高电平切断,这样高电平被传递,低电平靠下拉。
或者左右加反相器。
看看成品芯片
3peak看起来是家很厉害的公司,偶然看到也在做隔离器件,这是IIC隔离芯片的框图,其中SDA双向,SCL单向,其中结构是不是和上文很相似……