如何测量I2C建立时间?

时间:2018-08-02 07:26:48

标签: hardware timing transitions i2c

嗨,谢谢你帮助我。

我正在尝试使用示波器测量I2C建立时间。据我了解,建立时间是指数据在保持有效之前必须保持稳定的时间。

建立时间是在相对于SDA和SCL线路的某些点测量的,被认为是某些SCL频率的标准时间。

我正在以快速模式(400KHz)运行我的I2C总线,根据I2C规范,该时间至少需要100ns的建立时间。

在下降沿期间测量SDA线的30%振幅,在上升沿期间测量70%的振幅的建立时间。两种情况都从该点开始测量,直到达到SCL上升沿的30%。

这张照片显示了在最后一个字节的第一位输出期间,在I2C事务的最后一个字节读取期间进行的测量。绿线是SCL线,黄线是SDA线。

Scope Capture

该位应读为0,但是MCU认为它是1。我的第一个假设是I2C建立时间。因此,我尝试对其进行度量。我使用了VDDIO(2.15V)的30%,即645mV。我将SDA和SCL线的水平光标都设置为650mV(我能得到的最近的)。

然后,我使用两个垂直光标来测量这两个点之间的时间,您可以在“光标”部分中看到两个光标之间的增量为71ns。这可行。设备会正确读取该位。

如果我对固件进行了一些修改并重新运行测试,则会得到90ns的变化量,并且大多数情况下都会失败。

所以从技术上讲,我有两个问题:

  1. 我可以正确测量设置时间吗?
  2. 如果我进行了正确的测量,则我将假定两种情况都将失败,因为I2C规范指出,在快速模式下运行时,建立时间至少需要100ns的时间。为什么它在90ns而不是71ns失败?

我也不确定在此发布此问题是否正确。我通常会发布编程问题,而不是与硬件相关的问题。但是我不确定在哪里发布与硬件相关的问题。

感谢大家的帮助!我爱社区。

0 个答案:

没有答案