i2c:SDA上的半幅

时间:2013-09-19 09:13:21

标签: linux embedded-linux i2c

我尝试使用i2ctools包中的i2cdetect实用程序检测i2c总线上的rtc设备。由于在扫描i2c总线时看不到任何内容,我使用示波器,在第9个SCL的上升沿(ACK位),我在SDA信号上得到半幅。

进一步详情:

  

您的测量电压通常是什么电压,以及在不寻常的情况下是什么电压?

正常电压:0V表示0逻辑,3.3V表示1逻辑电压。在不寻常的情况下,我测量1.4V(几乎是正常情况下1逻辑的半电压)

  

您是否应该按照自己的方式使用上拉电阻和开路集电极驱动器?

是的,SDA和SCL线用4k7电阻上拉,rtc器件配置为开漏(CMOS)。

  

主机和从机是否都以相同的电压工作?

是的,3.3V

@Martin Thompson:谢谢。那么,这是我的i2c总线的原理图(实际上,只连接了一个rtc设备)。

    3.3V                            3.3V                3.3V                3.3V
        ____                            ____                ____                ____
         |                                |                   |                   |
         |                              +--+                +--+                  |
         |                          4k7 |  |            4k7 |  |                  |
+-----------------+                     |  |                |  |            +--------------+
|                 |                     +--+                +--+            |              |
|  FPGA Cyclone 4 |                       |                   |             |   Real time  |
|     (Altera)    |                       |                   |             |   clock      |
|       GPIO      | ---SDA----------------+-------------------|-------------|   ST m41t83  |
|                 |                                           |             |              |
|                 | ---SCL------------------------------------+-------------|              |
|                 |                                                         |              |
|                 |                                                         |              |
+-----------------+                                                         +--------------+
        |                                                                           |
        |                                                                           |
      _____                                                                       ______
        0V                                                                          0V

这是示波器的屏幕​​截图,它可以获取SDA和SCL信号:

SDA
________        ______________         _________________________________                                        __       ___________
        |      |              |       |                                 |                                      |  |     |           |
        |      |              |       |                                 |                                      |  |     |           |
        |      |              |       |                                 |                                 _____|  |     |           |
        |      |              |       |                                 |                                |        |     |           |
        |______|              |_______|                                 |________________________________|        |_____|           |_______________


SCL 
____________     ___     ___     ___     ___                                 ___     ___     ___     ___     ___     _______________________________
            |   |   |   |   |   |   |   |   |                               |   |   |   |   |   |   |   |   |   |   |
            |   |   |   |   |   |   |   |   |                               |   |   |   |   |   |   |   |   |   |   |
            |   |   |   |   |   |   |   |   |                               |   |   |   |   |   |   |   |   |   |   |
            |   |   |   |   |   |   |   |   |                               |   |   |   |   |   |   |   |   |   |   |
            |   |   |   |   |   |   |   |   |                               |   |   |   |   |   |   |   |   |   |   |
            |___|   |___|   |___|   |___|   |_______________________________|   |___|   |___|   |___|   |___|   |___|

当我使用i2cdetect实用程序( i2cdetect 0 0x68 0x68 )从linux shell向地址0x68的rtc设备发送请求时,会获得这些信号。

顺便说一下,请原谅我糟糕的ascii设计,但由于我是论坛上的新手,我无法发布图片。希望这是可以理解的; - )

关于“屏幕截图”的澄清:SCL和SDA的幅度约为3.5V,而在不寻常的情况下(在第9个scl的上升沿)它是1.4V

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,它与主机上的SDA / SCL IO配置有关(应使用开漏,而不是推拉)。