嗨,谢谢你帮助我。
我正在尝试使用示波器测量I2C建立时间。据我了解,建立时间是指数据在保持有效之前必须保持稳定的时间。
建立时间是在相对于SDA和SCL线路的某些点测量的,被认为是某些SCL频率的标准时间。
我正在以快速模式(400KHz)运行我的I2C总线,根据I2C规范,该时间至少需要100ns的建立时间。
在下降沿期间测量SDA线的30%振幅,在上升沿期间测量70%的振幅的建立时间。两种情况都从该点开始测量,直到达到SCL上升沿的30%。
这张照片显示了在最后一个字节的第一位输出期间,在I2C事务的最后一个字节读取期间进行的测量。绿线是SCL线,黄线是SDA线。
该位应读为0,但是MCU认为它是1。我的第一个假设是I2C建立时间。因此,我尝试对其进行度量。我使用了VDDIO(2.15V)的30%,即645mV。我将SDA和SCL线的水平光标都设置为650mV(我能得到的最近的)。
然后,我使用两个垂直光标来测量这两个点之间的时间,您可以在“光标”部分中看到两个光标之间的增量为71ns。这可行。设备会正确读取该位。
如果我对固件进行了一些修改并重新运行测试,则会得到90ns的变化量,并且大多数情况下都会失败。
所以从技术上讲,我有两个问题:
我也不确定在此发布此问题是否正确。我通常会发布编程问题,而不是与硬件相关的问题。但是我不确定在哪里发布与硬件相关的问题。
感谢大家的帮助!我爱社区。 p>