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

[复制链接]
6355|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 | 显示全部楼层

碰到干么呢?
产品实际使用不会这么恶劣吧;
tingna 发表于 2016-2-22 19:33 | 显示全部楼层
aixiao1314 发表于 2016-2-22 16:50
你好,具体的问题是iic主机和从机正常工作,每隔100ms传一次数据。如果镊子碰下时钟或数据线,主机iic死 ...

死机后,数据线和时钟线都是高电平?
Varus 发表于 2016-2-22 21:22 | 显示全部楼层
为什么不让单片机再复位
xyz549040622 发表于 2016-2-22 22:57 | 显示全部楼层
你的测试就有问题,拿镊子去碰,再好的芯片也会出错。
奔牛滚滚 发表于 2016-2-22 23:11 | 显示全部楼层
xyz549040622 发表于 2016-2-22 22:57
你的测试就有问题,拿镊子去碰,再好的芯片也会出错。

碰的目的就是要出错,这个没问题,出错以后不能恢复,这个问题就严重了.
xyz549040622 发表于 2016-2-23 07:25 | 显示全部楼层
奔牛滚滚 发表于 2016-2-22 23:11
碰的目的就是要出错,这个没问题,出错以后不能恢复,这个问题就严重了.

主机接收从机发过来的信息,一段时间没反馈后,硬件IIC重新初始化。
清风致影 发表于 2016-2-23 08:31 | 显示全部楼层
为什么要用镊子去碰。。。。 这是什么测试方法啊
看门狗用上呗
 楼主| aixiao1314 发表于 2016-2-23 09:08 | 显示全部楼层
mmuuss586 发表于 2016-2-22 19:16
碰到干么呢?
产品实际使用不会这么恶劣吧;

实际应用中存在干扰!这只是模拟出错时怎么处理!
 楼主| aixiao1314 发表于 2016-2-23 09:09 | 显示全部楼层
tingna 发表于 2016-2-22 19:33
死机后,数据线和时钟线都是高电平?

对,都是高电平,并且再次初始化后,起始信号发不出来
sjnh 发表于 2016-2-23 09:18 | 显示全部楼层
aixiao1314 发表于 2016-2-23 09:09
对,都是高电平,并且再次初始化后,起始信号发不出来

看看有没有原来错误的标示没有清除
 楼主| aixiao1314 发表于 2016-2-23 09:40 | 显示全部楼层
xyz549040622 发表于 2016-2-22 22:57
你的测试就有问题,拿镊子去碰,再好的芯片也会出错。

实际中存在干扰,去模拟让它恢复,却恢复不了!
 楼主| aixiao1314 发表于 2016-2-23 09:44 | 显示全部楼层
xyz549040622 发表于 2016-2-23 07:25
主机接收从机发过来的信息,一段时间没反馈后,硬件IIC重新初始化。

主要是硬件iic重新初始化后起始信号还是发不出来!
 楼主| aixiao1314 发表于 2016-2-23 11:02 | 显示全部楼层
sjnh 发表于 2016-2-23 09:18
看看有没有原来错误的标示没有清除

读I2C_SR2的寄存器值为0x00 ,I2C_SR3的值也为0x00.
hehailun 发表于 2016-2-23 11:07 | 显示全部楼层
自己模拟iic  自己写嘛   这样就好容易解决问题了  
xyz549040622 发表于 2016-2-23 13:50 | 显示全部楼层
aixiao1314 发表于 2016-2-23 11:02
读I2C_SR2的寄存器值为0x00 ,I2C_SR3的值也为0x00.

看来,真是芯片死了。此时,芯片的中断还在工作么,看来只能喂狗了
wahahaheihei 发表于 2016-2-26 19:43 | 显示全部楼层
你要模拟实际的工作环境,实际工作中,是不会被神马镊子去碰短路的。
 楼主| aixiao1314 发表于 2016-2-27 09:59 | 显示全部楼层
xyz549040622 发表于 2016-2-23 13:50
看来,真是芯片死了。此时,芯片的中断还在工作么,看来只能喂狗了

芯片其他工作正常,iic不正常,换用io口模拟了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

16

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部