[ZLG-MCU] LM3S8962 i2c问题???

[复制链接]
4731|11
 楼主| wahahaabc 发表于 2008-8-8 12:57 | 显示全部楼层 |阅读模式
最近写了一个I2C的I/O端口扩展器的VHDL程序,功能就和I/O端口扩展芯片PCA9555相似,FPGA使用EP1C6T144。电路板上还有一个I2C的热插拔芯片PCA9511。<br />硬件连接方式:<br />LM3S8962的I2C引脚SDA,SCL接到FPGA(EP1C6T144)的任意两个I/O引脚上,将FPGA的这两个脚配置为auto&nbsp;open-drain。LM3S8962的I2C做主机,FPGA作为I2C从机,为了测试FPGA端的程序是否正确,LM3S8962的程序流程如下:<br /><br />LM3S通过I2C总线向FPGA的一个端口写入数据<br />for(i=0;i&lt10;i++);软件延迟一下<br />LM3S通过I2C总线读取刚才写入的数据<br />if(读出的数据不等于写入的数据)<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(1);<br />}<br />else<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;重复以上步骤<br />}<br /><br />出现的问题如下:<br />(1)如果将LM3S的I2C引脚接到FPGA的I/O脚上,同时,将FPGA的I/O脚配置为auto&nbsp;open-drain,按照上述“写入-读出-判断”流程,只能执行几次就down机,有时甚至一次就down机<br />硬件连接方式:<br />LM3S8962_SDA&nbsp;&lt---&gt&nbsp;FPGA_I/O(配置为开漏且电路板上有10K上拉电阻)<br />LM3S8962_SCL&nbsp;&lt---&gt&nbsp;FPGA_I/O(配置为开漏且电路板上有10K上拉电阻)<br /><br />(2)因为电路板上有一个I2C的热插拔芯片PCA9511,如果将LM3S8962的SCL引脚不但接到FPGA上,还接到PCA9511的SCL_IN脚上(PCA9511的ENABLE脚接高电平),按照上述“写入-读出-判断”流程,连续测试2天都没有一次错误出现。<br />硬件连接方式:<br />LM3S8962_SDA&nbsp;&lt---&gt&nbsp;FPGA_I/O(配置为开漏且电路板上有10K上拉电阻)<br />LM3S8962_SCL&nbsp;&lt---&gt&nbsp;FPGA_I/O(配置为开漏且电路板上有10K上拉电阻)<br />LM3S8962_SCL&nbsp;&lt---&gt&nbsp;PCA9511的SCL_IN脚<br /><br />请问大侠这是什么问题???<br /><br />
 楼主| wahahaabc 发表于 2008-8-8 13:00 | 显示全部楼层

电路图如下

  <br /> 相关链接:<a href='https://bbs.21ic.com/upfiles/img/20079/2007923131653284.pdf'>https://bbs.21ic.com/upfiles/img/20079/2007923131653284.pdf</a>
 楼主| wahahaabc 发表于 2008-8-8 13:02 | 显示全部楼层

FPGA的I2C从机地址为0x4E

  
 楼主| wahahaabc 发表于 2008-8-11 08:33 | 显示全部楼层

怎么没人

  
zlgmcu 发表于 2008-8-11 10:52 | 显示全部楼层

re

您好!可能的问题:<br />1.根据您提出的第一和第二个问题,可能是您的I2C波特率过高,而上拉电阻太大,导致I2C通信失败,而当您采用以下方式连接时,其SCL引脚并联,导致上拉电阻减小,所以I2C通信才有可能成功。<br />LM3S8962_SDA&nbsp;&lt---&gt&nbsp;FPGA_I/O(配置为开漏且电路板上有10K上拉电阻)<br />LM3S8962_SCL&nbsp;&lt---&gt&nbsp;FPGA_I/O(配置为开漏且电路板上有10K上拉电阻)<br />LM3S8962_SCL&nbsp;&lt---&gt&nbsp;PCA9511的SCL_IN脚<br />2.另外建议您先用LM3S8962的I2C对FM24CL64进行操作,从而便可知是芯片问题还是其它方面的问题,此外LM3S8962的I2C经过测试是没有问题的。<br />
 楼主| wahahaabc 发表于 2008-8-11 11:51 | 显示全部楼层

RE: 5楼

(1)I2C的速率是100K,原来偶也怀疑是上拉电阻太大所致,偶前几天将上拉电阻从10K改为1K,问题依然。<br />(2)FM24LC64虽然是铁电存储器,写入速率非常快,但是,也不可能长时间,连续,大量的写入数据,不做任何延迟又读出数据,写入数据以后也要延迟一下,只不过延迟的时间是us级的。所以,FM24LC64不满足偶测试的要求。<br /><br />也怪俺们连台逻辑分析仪都没有,一旦出现问题连问题在哪儿都难找
 楼主| wahahaabc 发表于 2008-8-13 08:55 | 显示全部楼层

问各位大侠一个弱弱的问题

如何知道I2C总线上的总线电容的值,<br /><br />是电路板制作完成以后,通过一种方法测量出来的吗?如果是这样,如何测量?<br /><br />还是在设计时根据I2C芯片datasheet中的参数计算出来的?如果是这样,是哪一个参数,如何计算?
 楼主| wahahaabc 发表于 2008-8-14 08:55 | 显示全部楼层

7楼的问题 怎么没人 高手快出招

  
zlgmcu 发表于 2008-8-15 11:55 | 显示全部楼层

re

您好!<br />I2C的总线电容,可以通过将总线速率降低,在总线上串联一个电阻,然后<br />用示波器观察SCL的特性,根据RC充放电时间公式,就可以得出总线电容值。<br /><br />另一种方法就是在I2C总线串电阻,然后在端口上加入脉冲信号源,用示波<br />器观察端口特性,原理同上。
amini 发表于 2011-4-25 15:26 | 显示全部楼层
ty新气象 发表于 2011-4-30 14:13 | 显示全部楼层
学习了。
diny 发表于 2011-5-4 22:06 | 显示全部楼层
3年前的贴子了?真强啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

119

主题

627

帖子

0

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