TI的电压转换芯片TXS0108E在MDIO总线上的运用

TI的电压转换芯片TXS0108E在MDIO总线上的运用
现在在做的板子处理单元使用的是英伟达的xavier模组,利用nxp的SJA1105Q芯片做switch拓展网络,使用的phy是KSZ9031芯片。前期做设计时考虑较少,希望将网络部分独立出来。所以就单独给网络部分供电使用了VDD_ETH_3.3\1.8V\1.2V。因为sja1105每个rgmii接口的供电都是3.3v、1.8v选配的,xavier模组的电压是1.8v的,ksz9031选择了3.3v。这中间就出现了一个问题,ksz9031的SMI总线需要挂在xavier上,但是电压不匹配。我们选择了TXS0108E 这颗料做电平的转换。但是xavier在通过MDIO读PHY的寄存器的时候总是0xffffffff这种,没有任何信息。
TXS0108在phy端MDIO上上拉4.7k,其他不做处理。我测试了txs0108的输入输出,波形很正常。
MDIO在TXS0108输入输出波形对比:TI的电压转换芯片TXS0108E在MDIO总线上的运用
MDC在TXS0108输入输出波形对比:TI的电压转换芯片TXS0108E在MDIO总线上的运用
连TI的fae都不知道问题在哪里!
我们尝试过直接将phy修改VDD_IO为1.8V供电,跳过电压转换芯片,可以接收到PHY的返回值是0x221622h。
对比了正常读到数据的示波器波形和异常的波形如下:
正常读值波形:TI的电压转换芯片TXS0108E在MDIO总线上的运用
异常读值的波形。TI的电压转换芯片TXS0108E在MDIO总线上的运用
后来查阅了SMI总线的协议,如下。
MDC\MDIO时序图:TI的电压转换芯片TXS0108E在MDIO总线上的运用
总结是在turnaround位之前是MAC端输出单向的,MDC是单向的数据,这些都可以正常输出。但是在turnaround的时,如果是读的话,需要mac是高阻状态,因为txs0108e芯片内部有上拉,对phy来讲,几遍mac高阻了,phy也无法得到对应的电流感应值。phy有两种方式来确定mac端是否为高阻状态,第一种是因为phy规格书建议MDIO上拉电阻是1k到4.7k,电压支持1.8v,2.5v,3.3v。可以直接取最大值和最小值中间所有的电流值认为是高祖。另一种是上电初始化的时候读一下电流。经过试验,很明显是后一种。
因为我们电压转换芯片A端电压使用的是板子的电VDD_1V8;B端使用的网络的VDD_ETH_3.3v。网络的电是长电,所以phy在初始化的时候读电流时,txs0108e输出时高祖的,但是在mac读phy状态中间,mac高祖时,phy读电流的时候是将电压转换芯片本身内部上拉部分的电流都考虑进去了。这个偏差导致phy没有办法转换成驱动端。将网络修改为VDD_3.3V供电这个问题就解决了。

中间还做过其他的试验,过程很漫长。。。。结果很美好啊~

上一篇:P2107 小Z的AK计划


下一篇:[牛客网] 推箱子【离散,线段树区间覆盖】