这是I²C通讯吗?


9

我需要解码两个设备之间的通信,但是我没有关于这些设备的信息。我所知道的是,需要四根线(GND,VCC和两根通信线)。我怀疑这是I²C通讯。

我正在尝试使用示波器解码工具对其进行解码,但是我不太确定。目视检查波形时,无法正确识别I²C通信的元素。

查看波形,我做了以下假设,也许有人可以帮忙。这些是我的假设:

  1. 一切都导致人们相信时钟是蓝色信号,数据是红色信号。
  2. 时钟似乎已反转,因为其空闲状态未处于高电平。
  3. 我不确定数据信号是否也反转了,但事实似乎如此。

我的假设正确吗?

在最后一个图中,数字5的圆圈用圆圈表示,并且信号的一部分。我无法识别开始,确认和停止位。任何人都可以仅通过查看数字来识别这些元素吗?

在此处输入图片说明 在此处输入图片说明

[编辑]有些人问我有关通信中的设备的信息。通信是在汽车钥匙和我不能说的工具之间进行的,但是我正在尝试对其进行逆向工程。


1
您的最开始红色(SDA)边缘处有开始条件。当反相蓝色(–SCL)保持低电平时,它变低。此后,仅当蓝色反转(-SCL)较高时,才会出现红色(SDA)的变化。这是有效的I²C谈话。
Janka '18

2
@Janka,仅当您假定SCL反向时,这才是有效的I2C对话。没有理由假设。
安妮

2
@ Janka,OP将其列为假设。该假设基于这是I2C的假设。有很多理由认为这不是I2C,其中之一是时钟空闲为低电平。
安妮

5
@Daniel,您能告诉我们这两个设备是什么吗?
安妮

2
也许不用担心“它是什么”,而应该考虑“它说什么”。找出需要采样的边缘。获取一个逻辑分析仪(可能是USB流式分析仪),并开始编写一个捕获可变性范围的解码器。然后开始寻找数据中的模式。
克里斯·斯特拉顿

Answers:


6

我的猜测是这是某公司自产的“类似于I2C”协议。在过去,有些时候使用I2C意味着必须向飞利浦捐款。

它似乎有一个ACK(时钟延长之前,数据线上的短脉冲看起来很像数据线从主机传递到从机)。

奇怪的是,它似乎一次传输7位。


1
如果它是该协议的专有版本,它可能也会使用7位或更少的通信
Maple

6
@枫是。我可以想象一个工程师说:“我们如何使它像I2C一样,但又有足够的不同,我们不必支付专利使用费?倒置时钟并一次发送7位。” 但是我只能猜测。
安妮

11

鉴于每个字节只有8个时钟(I2C要求ACK / NAK位使用第9个时钟),并且时钟空闲状态似乎很低,我想说这很可能是SPI(或类似SPI)的接口。

但是,不确定每个字节的第一位的额外时钟宽度。


1
另一方面,时钟序列末尾的窄脉冲看起来很像NACK。同样,看起来空闲低的可能是时钟延长,这不再是规范所允许的,而是可以由旧的从机使用。上的图像(1)和(2)的初始状态是高实际上
枫树

1
@Maple:我看到您的数据脉冲很窄,但仍然看不到第9个时钟脉冲。数据模式与时钟相位和时钟极性的某些SPI配置完全一致。
Dave Tweed18年

1
是的,我实际上同意您的要求。对我来说奇怪的是,(1)的结尾处SDI / SDO(无论是什么)的空闲行为都不一致(
Maple

1
@Maple I2C不会将线路释放到空闲高吗?
Selvek '18

1
@Selvek是的,这正是我在图片(1)和图片开头(2)上看到的。但是,正如Dave所指出的,其余部分与SPI更一致。好吧,除了令人惊讶的看起来像起始位的第一个时钟。嗯...起始位...这可能是...

3

我将帽子扔进戒指...

如果这些是旧设备,那么您可能正在研究一些“裸机” 7位同步RS-232变体:

  • 每帧开头的那个较长的脉冲可能是一个起始位,并且

  • 在开始时,时钟信号中的平稳段可以在变为负“标记”之前返回到0。(您没有在屏幕截图上提供电压,所以我在这里猜测)。


1
噢,这对我来说是新的。它有ACK吗?(在我的简短Google搜索中找不到一个)。如果没有,还有什么能解释第八次时钟之后数据线上的短脉冲的吗?
安妮

1
从来没听说过。而且无论如何,如果这确实是老式的串行,则任何其他方向的通信都将需要单独的电线。该脉冲太短而无意义。驱动程序很可能在下一帧之前重置自己。正如您自己所说,所有这些都是猜测。除非OP提供有关设备的更多详细信息,否则我们只能这样做。
Maple

@Maple,通讯是在汽车钥匙和我不允许说的工具之间进行的,但是我正在尝试对其进行逆向工程。
丹尼尔(Daniel)

RS232是用于电气级别的标准,而不是用于对数据字进行编码的标准
克里斯·斯特拉顿

@ChrisStratton在我的答案中,您在哪里找到有关编码的任何信息?我要说的是,如果电压电平对应于RS232并且信号类似于同步串行,那么很可能不是I2C
Maple

-1

根据我在I2C方面的经验,我可以使用万用表设备通过将设备设置为测量频率(以赫兹为单位)来检查时钟,因此,如果它读取的稳定值如2k,则为I2C时钟。


3
不,那根本不是一个有效的结论。许多不是I2C的东西都有稳定的时钟。实际上,I2C 没有稳定的时钟,而是突发时钟。如果您的电表在一段时间内进行计数,则实际上是对带有空闲间隔的有效时钟进行平均-您需要测量脉冲宽度的倒数,理想情况下,在可以确定自己的示波器上实际测量意图。相反,其他一些方案,例如I2S,则往往具有连续运行的时钟。但是时钟频率只能排除某些东西,不能排除
克里斯·斯特拉顿
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.