打印
[AVR单片机]

AVR I2C接口把I2C总线拉低了!

[复制链接]
4098|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
aolin|  楼主 | 2008-3-12 15:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个模块使用AVR单片机的I2C从功能与主MCU通讯, 这个模块不使用时由主MCU控制断电,但这时AVR单片机的I2C接口把I2C总线拉低了,以至于其他的I2C器件也无法进行通讯!
这个模块不用时,必须关电,功耗太大.
各位有什么招? 难道要加一个I2C总线开关?

相关帖子

沙发
yewuyi| | 2008-3-13 08:44 | 只看该作者

AVR用完IIC后关掉IIC功能模块

这主要是你在IIC通信中出现了器件断电等事件,造成IIC总线挂死。

解决的办法:禁止IIC模块,再次启动IIC,发9个CLK强制复位从器件

使用特权

评论回复
板凳
aolin|  楼主 | 2008-3-13 09:11 | 只看该作者

LS理解错了

主MCU是我做的,AVR单片机是系统中的其中一个I2C从器件,它的程序是别人做的,现在是当AVR所在的模块(是一个独立模块)断电后,它的I2C接口把系统的I2C总线拉低了,以至于系统的I2C总线被挂起.

使用特权

评论回复
地板
农民讲习所| | 2008-3-13 10:06 | 只看该作者

没法,你系统设计错误

MCU无电,基本上表现为1K左右电阻。
可以将你断电行为,看作是带电插拔:
1)这时你不该使用I2C连接,这是系统设计错误。
2)你不该上位机主动断电,而应该改为下位机断外部电,然后进入STOP。
估计只有2才能将就解决。

使用特权

评论回复
5
xwj| | 2008-3-13 10:18 | 只看该作者

也有其他方法

1、总线隔离,比如在通信接口串继电器或数据开关;
2、从模块的MCU不断电,而是进掉点、休眠模式
3、主要问题还是设计上的失误,没考虑到接口非正常状态的相互影响

使用特权

评论回复
6
computer00| | 2008-3-13 10:24 | 只看该作者

在你的模块的I2C线路上加电子开关。

使用特权

评论回复
7
aolin|  楼主 | 2008-3-13 11:35 | 只看该作者

唯有加电子开关了

以前直接跟模块上的DSP的I2C接口通讯,模块断电后也不影响I2C总线,后来模块加了个AVR做桥,问题就来了!

使用特权

评论回复
8
jasonell| | 2008-3-14 15:28 | 只看该作者

这个我也碰到过,

不过我的是双主的情况,最后我这复位,i2c 也就好了,

使用特权

评论回复
9
hotpower| | 2008-3-17 20:48 | 只看该作者

AVR确实这方面有问题,不过主机可以转IO后再转TWI即可解决

我用过M8/M16/M32做主机,T26做从机的类似问题.

后采用了主题所述的方法,以后在批量中再无此类问题...

虽然现在更新为ARM->I2C专用设备,沿用此方法皆无任何问题...

使用特权

评论回复
10
pantodd| | 2008-3-20 12:58 | 只看该作者

一点问题,农民兄:

你说的:
MCU无电,基本上表现为1K左右电阻。
可以将你断电行为,看作是带电插拔:
你的意思是:在MCU没有上电情况,其IO口表现为1K左右的电阻?这是为什么?谢谢了。

使用特权

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

本版积分规则

101

主题

396

帖子

2

粉丝