用STC8H做IIC从机内部导通故障
本帖最后由 htr 于 2024-11-15 19:48 编辑项目使用STC32G做主机,多个STC8H做从机,IIC通信,每个从机并联4根线,GND,SCL,SDA,5V,
正常连接能通信,但是只要其中一个从机GND断了,整个通信系统就不能通信了,除GND外其他线断了不会影响整个系统,只有单个从机没反应
实际在只接SCL,SDA,5V的情况下,测量从机GND和5V两端电压,居然还有1.8左右V的电压,相当于SCL或SDA芯片内部和GND是导通的,SCL和SDA只有10K上拉电阻,另一端连接到IO口,
如何解决单个从机坏了不影响整个IIC通信啊
电源有1.8V左右电压
SCL电压有部分负
未接入能正常通信
接入后数据有部分电压不能拉低,程序说设置了高阻状态
低压中断也设置高阻
根据你测试的电压数据,你可以试一下低压复位功能
因为电压在1.9V的时候单片机有可能并没有停止工作,所以加入低压复位,并且提高低压复位门槛电压。
这样在GND断掉的时候会直接触发复位。因为复位后的IO默认是高阻态,此时应该就不会有问题了。
这个功能可以通过初始化代码加入以下语句实现:
RSTCFG |= 0x43;如果这个代码测试不可用的话,可能是复位没有切换IO模式。
此时可以试一下使用低压中断,在低压中断里给SCL和SDA全部切换成高阻。
这样电流就不会流进来了
具体代码为:
ELVD = 1;//打开低压中断
RSTCFG |= 0x03;//设置为3.0V门槛
RSTCFG &= ~0x40;//低压不复位,产生中断
void lvd_isr(void) interrupt 6
{
//设置对应的IO端口模式为高阻
}
王昱顺 发表于 2024-11-15 09:17
根据你测试的电压数据,你可以试一下低压复位功能
因为电压在1.9V的时候单片机有可能并没有停止工作,所 ...
好的,感谢,我试试 王昱顺 发表于 2024-11-15 09:17
根据你测试的电压数据,你可以试一下低压复位功能
因为电压在1.9V的时候单片机有可能并没有停止工作,所 ...
没有用,设置为高阻,应该是开路才对,但是还是把数据和信号影响了 htr 发表于 2024-11-15 19:36
没有用,设置为高阻,应该是开路才对,但是还是把数据和信号影响了
用的哪种方法?还是两种都试过了 htr 发表于 2024-11-15 19:36
没有用,设置为高阻,应该是开路才对,但是还是把数据和信号影响了
这样,你给vcc和gnd接一个1k电阻。
让断gnd的时候保证两个电源端口电平同步变化,尽量走外边的电阻。
不确定是否有效,不过可以试一试? 王昱顺 发表于 2024-11-15 19:49
用的哪种方法?还是两种都试过了
两种都试了,高阻状态没有用 htr 发表于 2024-11-15 20:02
两种都试了,高阻状态没有用
那可能是根本没有进入用户程序
一直在复位 王昱顺 发表于 2024-11-15 19:57
这样,你给vcc和gnd接一个1k电阻。
让断gnd的时候保证两个电源端口电平同步变化,尽量走外边的电阻。
不确 ...
外接了1.2K电阻,5V和地还是不行 王昱顺 发表于 2024-11-15 20:06
那可能是根本没有进入用户程序
一直在复位
不知道为啥,高阻状态也不行,不是相当于开路吗,怎么也形成回路给单片机供电了
页:
[1]
2