找回密码
 立即注册
查看: 509|回复: 14

用STC8H做IIC从机内部导通故障

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-10-15 09:05:36

7

主题

20

回帖

125

积分

注册会员

积分
125
发表于 2024-11-15 08:29:28 | 显示全部楼层 |阅读模式
本帖最后由 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通信啊
screenshot-1731670710634.png
电源有1.8V左右电压
微信图片_20241115193947.jpg
SCL电压有部分负
1.jpg
未接入能正常通信
2.jpg
接入后数据有部分电压不能拉低,程序说设置了高阻状态
3.png
低压中断也设置高阻
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2024-11-15 09:17:47 | 显示全部楼层
截图202411150909131431.jpg

根据你测试的电压数据,你可以试一下低压复位功能
因为电压在1.9V的时候单片机有可能并没有停止工作,所以加入低压复位,并且提高低压复位门槛电压。
这样在GND断掉的时候会直接触发复位。因为复位后的IO默认是高阻态,此时应该就不会有问题了。
这个功能可以通过初始化代码加入以下语句实现:
  1. RSTCFG |= 0x43;
复制代码
如果这个代码测试不可用的话,可能是复位没有切换IO模式。
此时可以试一下使用低压中断,在低压中断里给SCL和SDA全部切换成高阻。
这样电流就不会流进来了
具体代码为:
  1. ELVD = 1;//打开低压中断
  2. RSTCFG |= 0x03;//设置为3.0V门槛
  3. RSTCFG &= ~0x40;//低压不复位,产生中断
  4. void lvd_isr(void) interrupt 6
  5. {
  6. //设置对应的IO端口模式为高阻
  7. }
复制代码



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-10-15 09:05:36

7

主题

20

回帖

125

积分

注册会员

积分
125
发表于 2024-11-15 09:28:39 | 显示全部楼层
王*** 发表于 2024-11-15 09:17
根据你测试的电压数据,你可以试一下低压复位功能
因为电压在1.9V的时候单片机有可能并没有停止工作,所 ...

好的,感谢,我试试
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-10-15 09:05:36

7

主题

20

回帖

125

积分

注册会员

积分
125
发表于 2024-11-15 19:36:00 | 显示全部楼层
王*** 发表于 2024-11-15 09:17
根据你测试的电压数据,你可以试一下低压复位功能
因为电压在1.9V的时候单片机有可能并没有停止工作,所 ...

没有用,设置为高阻,应该是开路才对,但是还是把数据和信号影响了

点评

这样,你给vcc和gnd接一个1k电阻。 让断电的时候保证两个电源端口电平同步变化,尽量走外边的电阻。 不确定是否有效,不过可以试一试?  详情 回复 发表于 2024-11-15 19:57
用的哪种方法?还是两种都试过了  详情 回复 发表于 2024-11-15 19:49
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2024-11-15 19:49:14 | 显示全部楼层
ht*** 发表于 2024-11-15 19:36
没有用,设置为高阻,应该是开路才对,但是还是把数据和信号影响了

用的哪种方法?还是两种都试过了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2024-11-15 19:57:02 | 显示全部楼层
ht*** 发表于 2024-11-15 19:36
没有用,设置为高阻,应该是开路才对,但是还是把数据和信号影响了

这样,你给vcc和gnd接一个1k电阻。
让断gnd的时候保证两个电源端口电平同步变化,尽量走外边的电阻。
不确定是否有效,不过可以试一试?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-10-15 09:05:36

7

主题

20

回帖

125

积分

注册会员

积分
125
发表于 2024-11-15 20:02:22 | 显示全部楼层
王*** 发表于 2024-11-15 19:49
用的哪种方法?还是两种都试过了

两种都试了,高阻状态没有用

点评

那可能是根本没有进入用户程序 一直在复位  详情 回复 发表于 2024-11-15 20:06
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2024-11-15 20:06:54 | 显示全部楼层
ht*** 发表于 2024-11-15 20:02
两种都试了,高阻状态没有用

那可能是根本没有进入用户程序
一直在复位
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-10-15 09:05:36

7

主题

20

回帖

125

积分

注册会员

积分
125
发表于 2024-11-15 20:09:45 | 显示全部楼层
王*** 发表于 2024-11-15 19:57
这样,你给vcc和gnd接一个1k电阻。
让断gnd的时候保证两个电源端口电平同步变化,尽量走外边的电阻。
不确 ...

外接了1.2K电阻,5V和地还是不行
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-10-15 09:05:36

7

主题

20

回帖

125

积分

注册会员

积分
125
发表于 2024-11-15 20:12:09 | 显示全部楼层
王*** 发表于 2024-11-15 20:06
那可能是根本没有进入用户程序
一直在复位

不知道为啥,高阻状态也不行,不是相当于开路吗,怎么也形成回路给单片机供电了

点评

按原理是这个样子的,为啥不行我也不清楚了。 或者你给从级电源接入一个电容,让单片机断开gnd后有足够的能量切换io状态?  详情 回复 发表于 2024-11-15 20:46
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:44 , Processed in 0.153147 second(s), 111 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表