王昱顺 发表于 2024-11-15 20:46:15

htr 发表于 2024-11-15 20:12
不知道为啥,高阻状态也不行,不是相当于开路吗,怎么也形成回路给单片机供电了 ...
按原理是这个样子的,为啥不行我也不清楚了。
或者你给从机电源接入一个电容,让单片机断开gnd后有足够的能量切换io状态?

VCC 发表于 2024-11-16 02:06:39

楼主描述的这个现象从芯片内部ESD保护二极管,是完全解释得通的。

具体就是:单片机的每个IO口,都对GND有一个反向的二极管,可以确保IO口电压不低于GND

VCC正常,SCL弱上拉,SDA弱上拉,GND断开。这时候整个PCB模组都处于VCC电位,没什么问题。

但是一旦开始通讯


VCC正常,SCL下拉,SDA下拉,GND断开。这时候整个PCB模组会通过SCL和SDA得到新的地线。GND的电压大约是SCL或SDA电压最小值+0.7V

故障节点通过SCL和SDA抽取了过多电流,将会使I2C波形无法正常产生。


另外,楼主的做法本身就是不符合I2C总线的本意。I2C和SPI从设计上并不支持跨板。

如需跨板,请使用RS232、RS485、CAN、LIN等通讯接口

htr 发表于 2024-11-17 11:06:03

VCC 发表于 2024-11-16 02:06
楼主描述的这个现象从芯片内部ESD保护二极管,是完全解释得通的。

具体就是:单片机的每个IO口,都对GND有 ...

对啊,我就怀疑是芯片内部导通了但是没有芯片内部电路图,有ESD二极管就说得通了,
今天只接5V电源一根线,测量公共地和STC8的GND电压压降0.47V左右,电压4.3V左右,接入信号线,拉低的时候,GND电压4.3V就通过二极管流向信号线,使信号线不能正常拉低。

htr 发表于 2024-11-17 11:06:52

本帖最后由 htr 于 2024-11-17 11:09 编辑

VCC 发表于 2024-11-16 02:06
楼主描述的这个现象从芯片内部ESD保护二极管,是完全解释得通的。

具体就是:单片机的每个IO口,都对GND有 ...
当时这个项目通信距离不远最远1米,用串口速度又太慢了,所以就搞得IIC,那知道还有这坑,有没有解决办法啊,只剩这个问题没解决了{:4_184:}

htr 发表于 2024-11-17 11:38:00

本帖最后由 htr 于 2024-11-17 11:56 编辑

VCC 发表于 2024-11-16 02:06
楼主描述的这个现象从芯片内部ESD保护二极管,是完全解释得通的。

具体就是:单片机的每个IO口,都对GND有 ...电源串个电阻,整个电源电压又不够了。。
页: 1 [2]
查看完整版本: 用STC8H做IIC从机内部导通故障