找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 1858|回复: 22
打印 上一主题 下一主题

请问一个I2C的问题

[复制链接]

160

主题

313

帖子

3313

积分

五级会员(50)

Rank: 5

积分
3313
跳转到指定楼层
1#
发表于 2014-5-25 08:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

您需要 登录 才可以下载或查看,没有帐号?注册

x
我有一个ST的RTC芯片m41t0,用I2C与beaglebone black的I2C1口通信,有个奇怪的问题,开机以后用i2cdetect -y -r 1可以读到正确的chipID 0x68. 但是,放一会后,再用i2cdetect -y -r 1读,就读不到ID了。主机是跑了一个Debian linux系统。请问到底是什么问题呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

8

主题

2339

帖子

5400

积分

EDA365版主(50)

Rank: 5

积分
5400
推荐
发表于 2014-5-27 10:49 | 只看该作者
如果你只挂了一个这个RTC的话,可以证明硬件没有问题。

0

主题

84

帖子

666

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
666
推荐
发表于 2014-6-10 11:12 | 只看该作者
本帖最后由 djxf 于 2014-6-10 11:19 编辑
1 Q$ O$ Y  K4 T) A" z4 ?% c# K# }" d2 }- H
fallen 发表于 2014-6-10 10:31
) d7 v, |3 a4 T, p, I" C9 ~+ O那你可以分享一下,你是如何解决的吗?越详细越好
+ {$ N. T5 v1 ^2 c& G
0 j6 M* j2 P2 k; W0 R3 \: z* E$ M: z( s
做硬件好像没啥敲门,数字电路无非是,逻辑正确、电平和时序匹配、驱动能力足够、信号质量满足要求。, |- g0 M+ ?( `
所以有人说数字电路玩的是时序,射频电路玩的是电磁场(这是宏观角度看,从微观看可能是量子力学或弦理论或其他什么理论,反正我没搞懂过。电磁场也是,很多也没搞明白,虽然看起来只有那么几个微/积分方程和物质方程)。: {$ J/ e4 e: J

# [0 H5 W: d0 X- K# g像之前遇到的I2C问题,首先检查硬件有没有问题(逻辑正确,电平匹配,驱动能力是否合适,时序很简单都不需要计算),其次就是看管脚配置是否正确(读写高低电平是否正常,顺带检查是否有虚焊短路等硬件问题)、上电及初始化是否符合要求、时序是否正常(从上电和初始化就挂示波器监控,顺带看看电平、驱动能力和信号质量,但一般来说这种低速信号的信号质量不会有太大问题,即使有过冲之类的,调整时序避开就好了,或者调整管脚的驱动能力比如驱动电流等尽量改善),到此基本就知道问题出在哪里了,剩下的就是不断调整时序(先放宽再收紧到合适的位置,兼顾速度和可靠性),当然,还需要一些耐心。。。8 a  h7 C% J) e6 s) f6 i- s, T
8 \: u# N/ @6 G9 C) C
多啰嗦一句,说到时序大家更多想到的是信号之间的读写时序,但往往忽略地、电源和信号之间的上/下电时序要求,有可能电路设计有问题,一上电或者掉电后再上电就导致芯片状态异常甚至出现栓锁了。

0

主题

84

帖子

666

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
666
推荐
发表于 2014-6-10 10:22 | 只看该作者
fallen 发表于 2014-6-10 09:51
5 [* x& M3 A7 ]( n8 P深究估计就是无解。
% _9 B/ a3 s  y; C& ~, [- e4 p对于1  加密IC跟DEMOD之类的相连,很多情况下都不行------所以大家都开始分开给I2C ...
8 P5 D! H! P1 |" H6 p' o
我用过micrel和neowine的加密芯片(深圳也有加密芯片,但我没试过),没有遇到过硬件上解决不了的问题。0 U2 |  u6 s, t( m9 Q$ S) |
软件有个还算有经验的小伙曾经花了一个月调试neowine的加密芯片没有调好,找了原厂的FAE也没解决,后来耍聪明把加密芯片跳过去了,这事我很久以后才知道。随便找了个软件(因为我当时对那个平台的软件架构不熟悉),我跟他一起调,两个小时就搞定了,除非芯片本身有问题(我选器件会比较慎重,独家的尽量不选,如果必须选,会先尽量多了解和测试),我遇到过很多难解的问题(有些甚至搞得焦头烂额)但还没遇到过无解的问题,只要有心就一定有解。

8

主题

2339

帖子

5400

积分

EDA365版主(50)

Rank: 5

积分
5400
2#
发表于 2014-5-26 11:42 | 只看该作者
这种问题,查查软件吧,顺便跟你分享一些在实际情况中碰到I2C问题  E4 E& X* V& x9 Z! g7 ~
1 。I2C号称可以挂很多外设,实际上各个外设会相互干扰,导致有些外设不能正确读取。比如加密IC和其他的一些外设,最好分开使用。
, y$ B  R% N" ^( P9 `3 T2。有些时候,比如你接了两个外设A,B。如果你先初始化A,则B就不能被初始化。这个时候可以考虑,先初始化B,再初始化A.
& J, W8 h$ z& o6 m  U8 F8 H: L7 d3。两个外设A,B,如果其中一个断电了,另外一个将不能初始化。

160

主题

313

帖子

3313

积分

五级会员(50)

Rank: 5

积分
3313
3#
 楼主| 发表于 2014-5-27 10:41 | 只看该作者
本帖最后由 zsuhh 于 2014-5-27 10:43 编辑
; g4 h* }9 g: F3 ~! H1 A! U9 t" C
那是否意味着我这种情况硬件没有问题?在开始的时候,运行多次没有问题,只是放一会就不行了,奇怪。

12

主题

219

帖子

659

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
659
4#
发表于 2014-5-27 10:49 | 只看该作者
fallen 发表于 2014-5-26 11:42
' H- m  H" n, @: \  u这种问题,查查软件吧,顺便跟你分享一些在实际情况中碰到I2C问题
' X7 M. D6 Q# D8 ~7 i4 \0 X2 W1 。I2C号称可以挂很多外设,实际上各个 ...
) k# n( Y- a+ k' Y. `4 n  ~. _1 N
谢谢分享。

48

主题

566

帖子

4212

积分

五级会员(50)

Rank: 5

积分
4212
6#
发表于 2014-5-27 20:21 | 只看该作者
那你怀疑硬件有问题,就让硬件去抓波形啊,波形形状OK但波形数据不对就是软件。数据ok,但就是不对,那就是硬件问题。建议硬件抓波形形状(上下沿等),软件抓打印信息。不是一方面的问题

10

主题

111

帖子

369

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
369
7#
发表于 2014-5-29 11:54 | 只看该作者
看是否管脚复用了没,有可能启动了什么程序,管脚复用了,导致读不到了

1

主题

38

帖子

705

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
705
8#
发表于 2014-5-30 15:48 | 只看该作者
建议你抓一下IIC的波形,抓一个完整的读时序,从起始位到结束位,看IIC的时序信号在哪里出现了错误。你这样说IIC出问题是分析不出原因的。我之前有个案例和你类似,IIC起始位OK,地址/读写位也OK,但是Slave没有发送ACK信号,导致master无法读slave。你看一下你的IIC挂在哪里了?我的问题原因是IIC读的时候master发生了软复位,而slave没有复位,导致IIC总线挂起。另外,你可以测量一下当你的IIC出现问题时,clk和data的电平分别是什么?

160

主题

313

帖子

3313

积分

五级会员(50)

Rank: 5

积分
3313
9#
 楼主| 发表于 2014-5-31 00:54 | 只看该作者
非常感谢大家的回复

1

主题

38

帖子

705

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
705
10#
发表于 2014-6-4 12:52 | 只看该作者
zsuhh 发表于 2014-5-31 00:54
6 A- K, N* b1 v5 ?* F6 Y非常感谢大家的回复
5 G+ E7 E9 L( F1 S( @1 S$ N
没有后续了?问题解决了吗?解决了分享一下经验啊!

160

主题

313

帖子

3313

积分

五级会员(50)

Rank: 5

积分
3313
11#
 楼主| 发表于 2014-6-5 07:16 | 只看该作者
想用示波器量,可是实验室没买,对目前这个应用,只要开机时能读对数据,就行,先将就着用,正在layout第二板,上面layout另一个I2C器件,看看效果如何再说。

0

主题

6

帖子

-8982

积分

未知游客(0)

积分
-8982
12#
发表于 2014-6-9 18:54 | 只看该作者
看看你挂了几个设备?特别是否有支持400k以上的设备,如果有的,这个要仔细对待,要不改版很难解决这个问题。
/ ~0 M' o5 G7 s" d* {i2cdetect -y -r 后,iic总线是什么状态?" p9 ~4 V# D8 ^- u, x7 D

0

主题

84

帖子

666

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
666
13#
发表于 2014-6-9 19:16 | 只看该作者
本帖最后由 djxf 于 2014-6-9 19:58 编辑
5 y- U, N0 ?4 @- W# z! `' }4 W
fallen 发表于 2014-5-26 11:42) I5 c" b. Q; i- ^8 c& @0 R( H: d
这种问题,查查软件吧,顺便跟你分享一些在实际情况中碰到I2C问题7 R" S8 a4 E5 j" Z+ B: ^/ Y
1 。I2C号称可以挂很多外设,实际上各个 ...

2 g$ m- V! k3 L2 Y7 |. y$ d- E+ A
) T9 \2 c! `% z+ }% h$ S+ G% e对于1,2,如果添加了合适的上拉,电平也是匹配的话,感觉不好理解,呵呵。
" ?' O9 w) d  b我也建议先抓下data和clk的波形,看看电平、驱动能力和时序(因为data脚是双向的,读写之间的切换和配置时机也要把握好,尤其是用GPIO脚模拟I2C时)有没有问题,应该不太可能出现这么怪异的问题。! w6 q9 w8 R8 k, R; q1 M/ o

0 `3 ?: Q8 ?3 C. ~对于3,可以理解。
& ^) M4 w# U' g0 {% }5 C

0

主题

84

帖子

666

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
666
14#
发表于 2014-6-9 19:38 | 只看该作者
xanthecrab 发表于 2014-5-30 15:48
% N' H- {6 V7 y. E4 g建议你抓一下IIC的波形,抓一个完整的读时序,从起始位到结束位,看IIC的时序信号在哪里出现了错误。你这样 ...
' }$ O& N% H0 @9 H7 [$ e
为什么在master软复位而slave没有复位的情况下会导致I2C总线挂死?I2C接口一般是OC门或者OD门啊?
' j/ C) j8 J  Y  }' E如果你说的现象成立,那也只能说slave芯片工作异常了(比如启动时没有通过复位进入到正常状态,等等),与I2C接口无关。

8

主题

2339

帖子

5400

积分

EDA365版主(50)

Rank: 5

积分
5400
15#
发表于 2014-6-10 09:33 | 只看该作者
djxf 发表于 2014-6-9 19:16
; [- d4 R+ c% x4 L; s  D8 g  Z# I对于1,2,如果添加了合适的上拉,电平也是匹配的话,感觉不好理解,呵呵。
6 e* P" o5 M: O3 _我也建议先抓下data和clk的 ...
% H$ a) F1 ]8 d7 }( Q
这些都是我经历过的,我很深刻。你说的合适的上拉,这个是很基础的问题。发生问题后,我们修改了上拉,修改了软件,还是无果。对于这些问题,我现在已经不怪异了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-23 13:27 , Processed in 0.064734 second(s), 34 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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