I2C的奇怪问题,高手进!

sherlock_lai 2009-10-16 09:25:01
I2C线上挂了3个器件,2个正常工作,有一个对它发送读写指令时,它能回应ACK信号,但是读写却得不到正确的值。

而我用另一个CPU控制时,却可以。另一个CPU不是我做的,但是我抓它的时序和我是一样的! 有谁知道吗?
...全文
213 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwpplltt 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sherlock_lai 的回复:]
谢谢楼上的帮忙

1、I2C的频率是50HZ
2、硬件的I2C接口有一个芯片不行,但是另一个CPU不是我做的,不知道他怎么操作
3、我用示波器抓的,0,1都很清晰,没有过冲和毛刺

但是据我分析,我CPU的硬件I2C的上升时间达到了2uS,而另一个CPU出的I2C的上升时间只有40nS,
这是我观察波形后的唯一区别了(可能有遗漏),I2C对上升时间要求这么严格吗?  他不是只要在CLK的‘0’跳变数据,‘1’保持数据就行的?
[/Quote]
就说你最后说明的问题 这个时间相差这么大 很值得怀疑?
还有 不是有两个I2C的器件可以操作吗?和这个操作有问题的器件一样吗?
建议横向 纵向都做对比。
sherlock_lai 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zyzhang365 的回复:]
看起来是上拉有问题。还有看看芯片支持的工作电压和CPU外设支持的电压是否匹配。
[/Quote]
匹配的,这个是肯定要注意的问题,不会错的
zyzhang365 2009-10-16
  • 打赏
  • 举报
回复
看起来是上拉有问题。还有看看芯片支持的工作电压和CPU外设支持的电压是否匹配。
sherlock_lai 2009-10-16
  • 打赏
  • 举报
回复
谢谢楼上的帮忙

1、I2C的频率是50HZ
2、硬件的I2C接口有一个芯片不行,但是另一个CPU不是我做的,不知道他怎么操作
3、我用示波器抓的,0,1都很清晰,没有过冲和毛刺

但是据我分析,我CPU的硬件I2C的上升时间达到了2uS,而另一个CPU出的I2C的上升时间只有40nS,
这是我观察波形后的唯一区别了(可能有遗漏),I2C对上升时间要求这么严格吗? 他不是只要在CLK的‘0’跳变数据,‘1’保持数据就行的?
guetcw 2009-10-16
  • 打赏
  • 举报
回复
I2c的频率是多少,模拟的还是硬件的I2C接口,你用的什么抓它的时序,怎么判断和你的是一样的?
sherlock_lai 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sherlock_lai 的回复:]
引用 8 楼 guetcw 的回复:
硬件的I2C都不行,那要看看你的协议了
是什么单片机什么器件

主器件是AT91RM9200,从器件是AT24LC512,PCA9539,SII9013
前两个无论如何都可以正常读写,第三个我不能正常读写,但是另外一个CPU可以
[/Quote]
另外一个CPU是fujitsu的单片机,代码不是我写的。
sherlock_lai 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 guetcw 的回复:]
硬件的I2C都不行,那要看看你的协议了
是什么单片机什么器件
[/Quote]
主器件是AT91RM9200,从器件是AT24LC512,PCA9539,SII9013
前两个无论如何都可以正常读写,第三个我不能正常读写,但是另外一个CPU可以
sherlock_lai 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 guolh 的回复:]
2uS?上升时间怎么会那么长?
[/Quote]
我将上拉电阻调低,现在上升时间和正确读写的情况下一样了,还是不行。
guetcw 2009-10-16
  • 打赏
  • 举报
回复
硬件的I2C都不行,那要看看你的协议了
是什么单片机什么器件
guolh 2009-10-16
  • 打赏
  • 举报
回复
2uS?上升时间怎么会那么长?
sherlock_lai 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wwpplltt 的回复:]
引用 2 楼 sherlock_lai 的回复:
谢谢楼上的帮忙

1、I2C的频率是50HZ
2、硬件的I2C接口有一个芯片不行,但是另一个CPU不是我做的,不知道他怎么操作
3、我用示波器抓的,0,1都很清晰,没有过冲和毛刺

但是据我分析,我CPU的硬件I2C的上升时间达到了2uS,而另一个CPU出的I2C的上升时间只有40nS,
这是我观察波形后的唯一区别了(可能有遗漏),I2C对上升时间要求这么严格吗?  他不是只要在CLK的‘0’跳变数据,‘1’保持数据就行的?

就说你最后说明的问题  这个时间相差这么大  很值得怀疑?
还有  不是有两个I2C的器件可以操作吗?和这个操作有问题的器件一样吗?
建议横向  纵向都做对比。
[/Quote]
一样的,和正确操作的时候,时序都一样

2,425

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 其他硬件开发
社区管理员
  • 其他硬件开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧