打印
[ZLG-MCU]

LM3S8962 i2c问题???

[复制链接]
3816|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wahahaabc|  楼主 | 2008-8-8 12:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近写了一个I2C的I/O端口扩展器的VHDL程序,功能就和I/O端口扩展芯片PCA9555相似,FPGA使用EP1C6T144。电路板上还有一个I2C的热插拔芯片PCA9511。
硬件连接方式:
LM3S8962的I2C引脚SDA,SCL接到FPGA(EP1C6T144)的任意两个I/O引脚上,将FPGA的这两个脚配置为auto open-drain。LM3S8962的I2C做主机,FPGA作为I2C从机,为了测试FPGA端的程序是否正确,LM3S8962的程序流程如下:

LM3S通过I2C总线向FPGA的一个端口写入数据
for(i=0;i<10;i++);软件延迟一下
LM3S通过I2C总线读取刚才写入的数据
if(读出的数据不等于写入的数据)

      while(1);
}
else
{
      重复以上步骤
}

出现的问题如下:
(1)如果将LM3S的I2C引脚接到FPGA的I/O脚上,同时,将FPGA的I/O脚配置为auto open-drain,按照上述“写入-读出-判断”流程,只能执行几次就down机,有时甚至一次就down机
硬件连接方式:
LM3S8962_SDA <---> FPGA_I/O(配置为开漏且电路板上有10K上拉电阻)
LM3S8962_SCL <---> FPGA_I/O(配置为开漏且电路板上有10K上拉电阻)

(2)因为电路板上有一个I2C的热插拔芯片PCA9511,如果将LM3S8962的SCL引脚不但接到FPGA上,还接到PCA9511的SCL_IN脚上(PCA9511的ENABLE脚接高电平),按照上述“写入-读出-判断”流程,连续测试2天都没有一次错误出现。
硬件连接方式:
LM3S8962_SDA <---> FPGA_I/O(配置为开漏且电路板上有10K上拉电阻)
LM3S8962_SCL <---> FPGA_I/O(配置为开漏且电路板上有10K上拉电阻)
LM3S8962_SCL <---> PCA9511的SCL_IN脚

请问大侠这是什么问题???

相关帖子

沙发
wahahaabc|  楼主 | 2008-8-8 13:00 | 只看该作者

电路图如下

使用特权

评论回复
板凳
wahahaabc|  楼主 | 2008-8-8 13:02 | 只看该作者

FPGA的I2C从机地址为0x4E

使用特权

评论回复
地板
wahahaabc|  楼主 | 2008-8-11 08:33 | 只看该作者

怎么没人

使用特权

评论回复
5
zlgmcu| | 2008-8-11 10:52 | 只看该作者

re

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

使用特权

评论回复
6
wahahaabc|  楼主 | 2008-8-11 11:51 | 只看该作者

RE: 5楼

(1)I2C的速率是100K,原来偶也怀疑是上拉电阻太大所致,偶前几天将上拉电阻从10K改为1K,问题依然。
(2)FM24LC64虽然是铁电存储器,写入速率非常快,但是,也不可能长时间,连续,大量的写入数据,不做任何延迟又读出数据,写入数据以后也要延迟一下,只不过延迟的时间是us级的。所以,FM24LC64不满足偶测试的要求。

也怪俺们连台逻辑分析仪都没有,一旦出现问题连问题在哪儿都难找

使用特权

评论回复
7
wahahaabc|  楼主 | 2008-8-13 08:55 | 只看该作者

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

如何知道I2C总线上的总线电容的值,

是电路板制作完成以后,通过一种方法测量出来的吗?如果是这样,如何测量?

还是在设计时根据I2C芯片datasheet中的参数计算出来的?如果是这样,是哪一个参数,如何计算?

使用特权

评论回复
8
wahahaabc|  楼主 | 2008-8-14 08:55 | 只看该作者

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

使用特权

评论回复
9
zlgmcu| | 2008-8-15 11:55 | 只看该作者

re

您好!
I2C的总线电容,可以通过将总线速率降低,在总线上串联一个电阻,然后
用示波器观察SCL的特性,根据RC充放电时间公式,就可以得出总线电容值。

另一种方法就是在I2C总线串电阻,然后在端口上加入脉冲信号源,用示波
器观察端口特性,原理同上。

使用特权

评论回复
10
amini| | 2011-4-25 15:26 | 只看该作者
:o

使用特权

评论回复
11
ty新气象| | 2011-4-30 14:13 | 只看该作者
学习了。

使用特权

评论回复
12
diny| | 2011-5-4 22:06 | 只看该作者
3年前的贴子了?真强啊。

使用特权

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

本版积分规则

119

主题

627

帖子

0

粉丝