打印

请教7113的问题

[复制链接]
1460|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Joys|  楼主 | 2009-3-6 17:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
按照I2C数据流格式,写完Slave地址以后,下一个是写01H地址(00H只读),然后再写数据,我的问题是写01H写不进去,收不到ACK,但跳过01H直接从02H写就没有问题了,查了好久怎么也没想到是这个问题,郁闷我坏了。不知道有没有谁遇到过类似的问题。还请比较熟悉的人指点一下,非常感谢。

相关帖子

沙发
Joys|  楼主 | 2009-3-7 18:16 | 只看该作者

已解决

用的是FPGA的IO作为数据线,SDA配置为INOUT,收不到ACK的解决办法是在ACK时钟周期内将SDA输出配置为高阻,否则读SDA只是读到FPGA内部给SDA引脚的赋值。

使用特权

评论回复
板凳
lplplplp| | 2009-4-1 22:45 | 只看该作者

路过路过路过路过路过路过路过路过路

使用特权

评论回复
地板
alex74| | 2009-4-2 11:08 | 只看该作者

...

不会的.肯定哪里有问题.
这种芯片最好不好连续读写.
最好每个寄存器重新开启一次i2c流程

使用特权

评论回复
5
Joys|  楼主 | 2009-4-5 22:40 | 只看该作者

谢谢4楼

问题已经解决。简言之就是应该用Variable而不是Signal。因为Signal在当次赋值不立即发生改变,所以所有第一位都是上一次的值而我当时没发现后面的值也存在这种问题,用Variable的话立即生效就没有问题了。
PS:我采用的是连续赋值地址自动增加,当然要跳过只读寄存器重新写,呵呵。

使用特权

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

本版积分规则

8

主题

27

帖子

0

粉丝