打印

请教各位大神,我在长距离使用I2C遇到的问题!

[复制链接]
10390|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
经常补钙|  楼主 | 2011-8-19 18:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人在使用SHT11这块测量温湿度器件的时候,将其通过10M的传输线进行传输。其实SHT11也不是标准的I2C器件,但是很类似。在单片机发送数据给SHT11后等待ACK,却发现SHT11无法将电平拉低,导致单片机无法读取数据。但是很奇怪的现象出现了:当我将手或者其它类似镊子等触摸到SHT11的DATA焊盘上的时候,此时可以将电平拉低了,且输出的数据准确稳定;但是把手或者其它类似镊子等拿开的时候,立马没有数据输出,这让我很纳闷!请教各位,怎么解决此问题?程序是正确的,一开始在使用1M长的传输线时没有任何问题且数据稳定。现在的问题就是SHT11无法将电平拉低。使用3.3V电压。

相关帖子

沙发
SYHDJF| | 2011-8-19 18:38 | 只看该作者
还是我,刚又查了下资料,双机通信中TTL电平信号传输距离应当小于5M,不知道单片机与类似IIC总线器件通信是否也有距离上的要求。

使用特权

评论回复
板凳
NE5532| | 2011-8-19 19:29 | 只看该作者
I2C属板上总线,总长度不宜超过30cm,楼主已经严重违背了其特性,10米距离需要RS232

使用特权

评论回复
地板
经常补钙|  楼主 | 2011-8-19 19:35 | 只看该作者
3# NE5532 嗯我也知道,但是我用示波器看了波形,干扰很小,现在的错误是SHT11无法拉低DATA数据线以输出ACK。且困惑是为什么用手或者镊子等一触碰焊盘便有稳定且正确的数据输出。

使用特权

评论回复
5
NE5532| | 2011-8-19 19:48 | 只看该作者
干扰很小只代表实验室内的情况,如果你是学生做着玩,把速度调低可以通讯,如果是做产品建议你还是正规化设计,不然到了现场你就抓狂了。

想想RS232和RS485是怎么实现的,再想想I2C是怎么样的你就清楚了。

使用特权

评论回复
6
SYHDJF| | 2011-8-19 20:34 | 只看该作者
缥缈九哥(14131338)  20:31:55
三少(359828650),你给的脉冲有物有丢失。所以状态机没有切换。
缥缈九哥(14131338)  20:32:26
手摸 时,引入了干扰脉冲,状态机就转变了。
三少<dengjinfang1201@163.com>  20:36:14
谢谢九哥了,只是这个状态机有点难以理解
尤利(55443920)  20:37:18
slave器件也会维护一个状态机。   
缥缈九哥(14131338)  20:37:38
三少(359828650)  ,I2C从机不是给了8个时钟,状态机就在出数据时吞一个BYTE,即8个BIT出来,然后释放总线吗?如果你只给了6个脉冲,它只能释放6个BIT,肯定不释放总线,如果你用手一摸 ,干扰进了2个脉冲,那它就吐两个BIT出来,然后就状态机切换到了吐出数据的状态。
缥缈九哥(14131338)  20:38:23
换到了吐出数据结束的状态。释放总线 。
三少<dengjinfang1201@163.com>  20:39:08
哦,有点理解了,真是多谢九哥悉心指教
尤利(55443920)  20:39:08
假设若master访问时,一但受到干扰,或通迅到一半,没有结束标志,从设备就不知道该怎样了。

使用特权

评论回复
7
SYHDJF| | 2011-8-19 20:35 | 只看该作者
楼主可以看一下

使用特权

评论回复
8
SYHDJF| | 2011-8-19 20:45 | 只看该作者
缥缈九哥(14131338)  20:55:27
摸DATA线的话,就是上拉电阻太小了。
Mr.Wrong(44500789)  20:55:52
嗯,可能是线长后分布电容太大。

使用特权

评论回复
9
sxhhhjicbb| | 2011-8-19 21:02 | 只看该作者
LZ,TTL传多远主要由二个条件决定.一个是信号源的驱动能力,推挽的就很强,第二个是信号的频率.传几十米都是可以的.

使用特权

评论回复
10
MakeBetter| | 2011-8-19 23:02 | 只看该作者
把板子的镊子触的那端接10K或4.7K电阻到地。温感器件端最好也用电阻并一下,电阻值视驱动能力而定。
这个现象很像是能量在线上多次反射造成的错误,手摸只是吸收了一些能量,让反射变弱。所以我建议并电阻来吸收。

还有另一可能:你的板子使用的电源有小电容耦合到工频电源,而另一端的测量器件的壳则良好接地,导致地“漂”起来了,你用手抓或用镊子触,相当于这边也良好接地,让两边地相同了。

具体情况,楼主自己判断一下。

使用特权

评论回复
11
729144646| | 2011-8-19 23:52 | 只看该作者
恩恩

使用特权

评论回复
12
ayb_ice| | 2011-8-20 09:34 | 只看该作者
PHILIPS有专用的扩展IIC距离的IC

使用特权

评论回复
13
shizaigaole| | 2011-8-20 10:11 | 只看该作者
本人在使用SHT11这块测量温湿度器件的时候,将其通过10M的传输线进行传输。其实SHT11也不是标准的I2C器件,但是很类似。在单片机发送数据给SHT11后等待ACK,却发现SHT11无法将电平拉低,导致单片机无法读取数据。但 ...
经常补钙 发表于 2011-8-19 18:09


增大延时时间,放慢速度,做12米没问题,
但是得有软件上的冗余措施,
防止通讯不上死机

使用特权

评论回复
14
ddxx| | 2011-8-20 11:18 | 只看该作者
可能的原因是,布线太长,共模太强,把线加粗试试

使用特权

评论回复
15
eydj2008| | 2011-8-20 12:39 | 只看该作者
用示波器量量信号 线接好了没有

使用特权

评论回复
16
mywu2010| | 2011-8-20 15:28 | 只看该作者
你看看单片机与外围电路是否共地吧!

使用特权

评论回复
17
dengm| | 2011-8-20 17:21 | 只看该作者
最好MCU 用3个端口(SDA 用 2个端口)

使用特权

评论回复
18
沈老| | 2011-8-20 18:27 | 只看该作者
需要加I2C驱动器,网上有的。

使用特权

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

本版积分规则

2

主题

40

帖子

1

粉丝