打印
[STM8]

stm8 的硬件iic受干扰死机,重新初始化下不能恢复

[复制链接]
5677|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
aixiao1314|  楼主 | 2016-2-22 16:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚用stm8 的单片机,硬件iic(主机)受干扰容易死机(用镊子碰数据线或者时钟线),重新初始化下不能恢复。哪位大神遇到过怎么解决(不让单片机再复位)?
沙发
wahahaheihei| | 2016-2-22 16:34 | 只看该作者
你说的问题是,初始化后被破坏,所以呢触碰后信号丢失的解决方法就是重新跳转到初始化函数,你也可以定时对各个初始化函数初始。也可以通过判断是否出错后重新调用初始化函数。

使用特权

评论回复
板凳
aixiao1314|  楼主 | 2016-2-22 16:50 | 只看该作者
wahahaheihei 发表于 2016-2-22 16:34
你说的问题是,初始化后被破坏,所以呢触碰后信号丢失的解决方法就是重新跳转到初始化函数,你也可以定时对 ...

你好,具体的问题是iic主机和从机正常工作,每隔100ms传一次数据。如果镊子碰下时钟或数据线,主机iic死机,数据线时钟线都是高电平,这时做的出错处理,重新初始化iic,但是iic通信的起始信号一直发不出来。

使用特权

评论回复
地板
mmuuss586| | 2016-2-22 19:16 | 只看该作者

碰到干么呢?
产品实际使用不会这么恶劣吧;

使用特权

评论回复
5
tingna| | 2016-2-22 19:33 | 只看该作者
aixiao1314 发表于 2016-2-22 16:50
你好,具体的问题是iic主机和从机正常工作,每隔100ms传一次数据。如果镊子碰下时钟或数据线,主机iic死 ...

死机后,数据线和时钟线都是高电平?

使用特权

评论回复
6
Varus| | 2016-2-22 21:22 | 只看该作者
为什么不让单片机再复位

使用特权

评论回复
7
xyz549040622| | 2016-2-22 22:57 | 只看该作者
你的测试就有问题,拿镊子去碰,再好的芯片也会出错。

使用特权

评论回复
8
奔牛滚滚| | 2016-2-22 23:11 | 只看该作者
xyz549040622 发表于 2016-2-22 22:57
你的测试就有问题,拿镊子去碰,再好的芯片也会出错。

碰的目的就是要出错,这个没问题,出错以后不能恢复,这个问题就严重了.

使用特权

评论回复
9
xyz549040622| | 2016-2-23 07:25 | 只看该作者
奔牛滚滚 发表于 2016-2-22 23:11
碰的目的就是要出错,这个没问题,出错以后不能恢复,这个问题就严重了.

主机接收从机发过来的信息,一段时间没反馈后,硬件IIC重新初始化。

使用特权

评论回复
10
清风致影| | 2016-2-23 08:31 | 只看该作者
为什么要用镊子去碰。。。。 这是什么测试方法啊
看门狗用上呗

使用特权

评论回复
11
aixiao1314|  楼主 | 2016-2-23 09:08 | 只看该作者
mmuuss586 发表于 2016-2-22 19:16
碰到干么呢?
产品实际使用不会这么恶劣吧;

实际应用中存在干扰!这只是模拟出错时怎么处理!

使用特权

评论回复
12
aixiao1314|  楼主 | 2016-2-23 09:09 | 只看该作者
tingna 发表于 2016-2-22 19:33
死机后,数据线和时钟线都是高电平?

对,都是高电平,并且再次初始化后,起始信号发不出来

使用特权

评论回复
13
sjnh| | 2016-2-23 09:18 | 只看该作者
aixiao1314 发表于 2016-2-23 09:09
对,都是高电平,并且再次初始化后,起始信号发不出来

看看有没有原来错误的标示没有清除

使用特权

评论回复
14
aixiao1314|  楼主 | 2016-2-23 09:40 | 只看该作者
xyz549040622 发表于 2016-2-22 22:57
你的测试就有问题,拿镊子去碰,再好的芯片也会出错。

实际中存在干扰,去模拟让它恢复,却恢复不了!

使用特权

评论回复
15
aixiao1314|  楼主 | 2016-2-23 09:44 | 只看该作者
xyz549040622 发表于 2016-2-23 07:25
主机接收从机发过来的信息,一段时间没反馈后,硬件IIC重新初始化。

主要是硬件iic重新初始化后起始信号还是发不出来!

使用特权

评论回复
16
aixiao1314|  楼主 | 2016-2-23 11:02 | 只看该作者
sjnh 发表于 2016-2-23 09:18
看看有没有原来错误的标示没有清除

读I2C_SR2的寄存器值为0x00 ,I2C_SR3的值也为0x00.

使用特权

评论回复
17
hehailun| | 2016-2-23 11:07 | 只看该作者
自己模拟iic  自己写嘛   这样就好容易解决问题了  

使用特权

评论回复
18
xyz549040622| | 2016-2-23 13:50 | 只看该作者
aixiao1314 发表于 2016-2-23 11:02
读I2C_SR2的寄存器值为0x00 ,I2C_SR3的值也为0x00.

看来,真是芯片死了。此时,芯片的中断还在工作么,看来只能喂狗了

使用特权

评论回复
19
wahahaheihei| | 2016-2-26 19:43 | 只看该作者
你要模拟实际的工作环境,实际工作中,是不会被神马镊子去碰短路的。

使用特权

评论回复
20
aixiao1314|  楼主 | 2016-2-27 09:59 | 只看该作者
xyz549040622 发表于 2016-2-23 13:50
看来,真是芯片死了。此时,芯片的中断还在工作么,看来只能喂狗了

芯片其他工作正常,iic不正常,换用io口模拟了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

16

帖子

0

粉丝