搜索
bottom↓
回复: 3

问题:atmega32作为I2C从设备 ,主机重启设备时一定的几率出现sda一直被从设备拉低

[复制链接]

出0入0汤圆

发表于 2010-4-15 10:06:02 | 显示全部楼层 |阅读模式
一、环境:
1、I2C主设备为AMD CPU自带的I2C控制器,配成400Khz
2、从设备是atmega32自带的I2C控制器
3、主从设备共用一套电源系统

二、问题描述与测试方法:
    1、每隔1分钟软件重启主设备(主设备所在主板装有linux系统,用reboot指令进行重启)
    2、重启50次以上会出现:从设备在reboot时拉低sda线,造成主设备在启动后无法成功初始化I2C
    3、当出现问题之后,利用atmega32的reset引脚手动复位,均能释放sda
    补充:断电重启测试200次以上(进行了2小时左右)未遇到过此问题
   
  多谢支持!!!

出0入0汤圆

发表于 2010-4-17 17:02:49 | 显示全部楼层
I2C主设备为AMD,从设备是atmega32,那么CLK是由AMD控制的。

问题可能发生在AMD下发从atmega32读数据的命令,然后正常应该控制CLK发送8个时钟,此时atmega32根据AMD控制的CLK,在SDA上打出数据。

如果恰巧AMD只发了3个CLK脉冲,就停止了,此时atmega32正好输出“0”在SDA上。但是CLK没有了,atmega32只能保持现在的输出,等待下一个CLK的到来,所以锁死在这里了(注意“恰巧”!你的AMD RESET如果是随机的。这个是能发生的。也解释了你补充的情况:没碰上)。

建议:

1。AMD在正确完成一次I2C操作后才能RESET。
2。修改atmega32代码,检测I2C发送时间,如果超过时间,释放本次I2C的发送。

后面是比较好的办法。

以上供参考。

出0入0汤圆

 楼主| 发表于 2010-4-17 21:48:08 | 显示全部楼层
非常感谢马老师的回答!!
  
  分析得很有道理,
    1、AMD侧所给i2c总线的时钟在reboot命令后,什么时刻停止时钟的输出是不可控的。
    2、原先在AMD和atmega32的i2c两线间有一个颗解决I2C总线热插拔的芯片(型号:LTC4303),解决:
       If SDAOUT or SCLOUT is low for ≥ 30ms (typ), the LTC4303 automatically breaks the data and clock bus connection. At this time the LTC4303 automatically generates up to 16 clock pulses on SCLOUT in an attempt to free the bus. (芯片手册中的原话)

      有这颗芯片时不会发生这种情况,根据马老师的分析可以很好地解释其中的原因了。

      前段时间在一次整理bom时看到此器件,但是由于AMD侧和atmega32间的i2c在使用时是不需要热插拔的,准备去掉以节省成本,看来AMD侧的软件重启(用reboot命令)可以类似一次热插拔动作了!

关于马老师的建议:
建议1、此方法实现起来有些难度,需要在linux系统的reboot指令之后,使i2c驱动去进行相应的保障措施(保障一次完整的I2C操作)。
建议2、做了一个类似的解决方法:
   上周5时进行了这样的操作:atmega32不断去检测sda线,如果超时(超时时间设置成大于30ms),重新初始化i2c ,从从周五开始实验,每隔1分钟reboot,一直这样重复,刚才观察了一下,未出现问题。看似有些成效。
   不过还是马老师的建议2更接近问题的本身,有针对性地去解决,一会进行一下实验。

  再次谢谢马老师的帮助!!

出0入0汤圆

 楼主| 发表于 2010-4-18 12:54:52 | 显示全部楼层
回复【1楼】machao
-----------------------------------------------------------------------

仔细想了想,问题除了出现在主机的读期间外,主机的写周期中,atmega32返回ack时刻也有可能出现同样的问题,所以在atmega32的读写周期都要进行处理。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-2 16:26

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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