在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4573|回复: 13

[求助] IIC 协议问题

[复制链接]
发表于 2014-6-19 17:07:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
本帖最后由 scibob 于 2014-6-22 16:11 编辑

在用FPGA给一个image sensor打数据,时序是和IIC差不多的,打出去的波形是正确的,示波器和signaltap均验证了,但是sensor返回ACK的时候SDA不能正常拉低,请问各位大神知道为什么吗?有遇到类似问题的吗?
捕获.PNG

signaltap 波形

signaltap 波形
发表于 2014-6-19 17:21:20 | 显示全部楼层
你在sensor回ack的时候你的data释放了吗,也就是是高阻态吗?
最好示波器截个图看看,截个fig9的波形
 楼主| 发表于 2014-6-19 19:29:02 | 显示全部楼层
回复 2# wgej1987
我添加了一个波形图,sda打入的是8位数据,start后,第九个scl周期进入ack状态,sdata_link为1代表sda为输出,sdata_link为0代表sda为高阻。
发表于 2014-6-19 19:51:58 | 显示全部楼层
1.检查逻辑,确定逻辑正常;
2.用示波器量FPGA近端波形,时钟与数据关系;
3.以上两点正常就是时序不满足导致;采样约束到IOB寄存器上,约束offsetin和 offsetout
 楼主| 发表于 2014-6-19 20:20:57 | 显示全部楼层
回复 4# lhlhualin


    逻辑应该是正确的,也用示波器看过数据和时钟,都没有问题,sensor的datasheet里面也没有提到时序约束的问题,你说的第三点能具体一点吗,不是很明白。
发表于 2014-6-20 09:44:23 | 显示全部楼层
你这个是restart吗,前面没有stop的。你第8个bit是1,难道是读的意思?其他从你的signaltap,没看别的问题
发表于 2014-6-20 11:06:33 | 显示全部楼层
I2c 协议是支持NACK返回的  当slave没有ready的时候返回nack表示当前要读的数据没有准备好
你可以试一下:1 连续读两次相同的地址,给slave准备数据的时间。
2 换个地址读一下 可能你所读的地址是不存在的呢
3 你给出的波形不是很全,之前有没有把寄存器的地址写进去呢? i2c需要先把寄存器的地址通过写操作写入到芯片里面,然后再restart发起一个读操作。
发表于 2014-6-20 17:17:30 | 显示全部楼层
回复 1# scibob

你做功能仿真了吗?如果还是这样说明你的时序有问题。若功能仿真正常,有可能是硬件问题。因为我之前遇到过类似的问题,就是ack时SDA状态不是高阻(是在写完数据后的最后一个ack响应时,其他的ack响应都正常),重看了器件的datasheet发现该器件需要负的电压供电,改完后就正常了。
发表于 2014-6-20 18:31:50 | 显示全部楼层
如果确认逻辑功能没问题,那就看一下外接的上拉电阻有没有接对
发表于 2014-6-20 19:09:47 | 显示全部楼层
LZ情况不明,说一下自己碰到的!
之前用了两个FPGA模拟芯片功能,一个从,一个主,一切功能波形正确,死活通讯不了!
后来乱弄了一下,发现仅同GND不行,同VDD后就可以了,虽然电平是一样的!
解决是解决了,还是没搞懂!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-12 18:16 , Processed in 0.034023 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表