请教7113的问题

[复制链接]
2792|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 | 显示全部楼层

...

不会的.肯定哪里有问题.<br />这种芯片最好不好连续读写.<br />最好每个寄存器重新开启一次i2c流程
 楼主| Joys 发表于 2009-4-5 22:40 | 显示全部楼层

谢谢4楼

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

本版积分规则

8

主题

27

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部