依旧是I2C的问题

toshbia   2008-7-9 15:14 楼主
上次烧了块EK的板子.

这次换了块新的,该慎重了. 在这里向大虾们确认个问题.

我的从设备,在没有跟我主机连接前,上电后,SDA和SCL的电压全是3.0V左右.

我查遍了从设备的datasheet,没有找到对高低电平的值的定义,

只是有一个关于I2C的通信中高低电平的定义,如贴图.

我是这么想的:I2C在没有接上拉时,它的SDA和SCL脚应该是开漏的,它上电后输出应该是低电平,是吧??

这种情况是不是说明我的从设备出了问题?
现在我都不敢轻易将从设备与主机相连了,我怕再次烧坏.



回复评论 (14)

香水啊香水

上次很感谢帮忙,但问题依然没有进展.


点赞  2008-7-9 15:21

你这张表是设备的吗?当工作速度小于100KHz时,

输入高电平最小为3V。因此你只要将SDA、SCL的上拉电阻接到3.3V电源即可。

现在不清楚你将上拉电阻接到哪了?

另外,不知道你设备与板子之间的地线连接是否可靠?连线有多长?如果连线长的话,
也可能会导致高电压烧IO口的。可以考虑在SDA和SCL脚上串联100欧姆左右的电阻试试。
点赞  2008-7-9 15:33

回computer00

上面写得很清楚:从设备没有接上拉电阻,没有接主机的情况下,上电:SDA和SCL的电压依然是3.0V.

我就觉得纳闷了,我用过其他的从设备,在这种情况下,SDA和SCL是接近0伏的.

地线我连接了,

你指的地线牢不牢靠??

我的地线估计有50--60cm左右,这个算长吗??不应该吧
点赞  2008-7-9 15:44

回computer00

可以考虑在SDA和SCL脚上串联100欧姆左右的电阻试试???

SDA和SCL之间串连电阻的作用是什么???
点赞  2008-7-9 15:45

刚才试了下.

还是决定接上试了一下:程序运行到下面的最后的一行,就死掉了(一直在等待),原因应该是收不到ACK,我实测了一下电压:SDA为3.3V(上拉的),但SCL(当然也上拉了)为0V.  这是从设备地址不对的原因吗?还是另有原因??  谁有关于I2C详细故障排除的书或者文档啊.
I2C_GenerateSTART(I2C1, ENABLE);
  
  /* Test on EV5 and clear it */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));
   
  /* Send EEPROM address for write */
  I2C_Send7bitAddress(I2C1, MOTOR_WRITE_ADDRESS7, I2C_Direction_Transmitter);

  /* Test on EV6 and clear it */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
点赞  2008-7-9 16:01

难道是引脚设成输出了???

                                  
点赞  2008-7-9 16:08

这个问题在高速下 经常出现 速率低了 就好了

                                 费解  难道是硬件有缺陷
点赞  2008-7-10 09:14

所谓高速,速度是多少?

如果线路的匹配不好,信号的翻转速度可能跟不上,自然高速时会有问题。

I2C使用的是开漏输出,信号的翻转速度与片外上拉电阻的关系很大。

请用示波器看看波形,看看信号的上升下降沿是否陡峭,如果信号变化过于平缓,则应考虑减小上拉电阻。
点赞  2008-7-10 09:40

是不是你的设备内部有上拉电阻,上拉到3V了?

用100欧电阻接设备的SDA或者DCL,再测输出电压,从而计算内部上拉电阻多大。
你的设备I2C引脚是否为专用?否则可能如老X所说,模式设置错误?

STM32的引脚模式选择是否也对了?

在SDA和SCL上串联100欧电阻,是为了防止IO口过流。
点赞  2008-7-10 09:45

再回computer00

回上面几个问题:


1.      这是个专用的I2C,不会出现模式设置错误的问题.

2.      速率我已经调得很低,I2C 一般在100K--400Kbps,我调到30K了还不行.

3.      线路我一直都是用一般的连接线 连在一起的,线总长大概40cm.

4.      EEPROM的例程中,有时会出现单步无法通过,这算正常不?
点赞  2008-7-10 11:06

400k 例程都通不过

                                  
点赞  2008-7-10 13:28

请用示波器看看波形,看看信号的上升下降沿是否陡峭

                                 如果信号匹配有问题,什么例程都通不过!
点赞  2008-7-10 13:55

真有意思!

恐怕楼主是第一次用 硬件的I2C 。

电路按常规设计, 是如何都不合烧坏 引脚的。
点赞  2008-7-10 14:53

netjob兄见笑了,

我用了一个多月了,
电路就是常规设计,
烧了两个I2C,难道是人品问题??
点赞  2008-7-10 17:47
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复