Ist diese Kommunikation I²C?


9

Ich muss die Kommunikation zwischen zwei Geräten dekodieren, habe jedoch keine Informationen zu diesen Geräten. Ich weiß nur, dass vier Drähte benötigt werden (GND, VCC und zwei Kommunikationsdrähte). Ich vermute, dass es sich um I²C-Kommunikation handelt.

Ich versuche es mit dem Oszilloskop-Dekodierungswerkzeug zu dekodieren, bin mir aber nicht ganz sicher. Ich kann Elemente der I²C-Kommunikation nicht angemessen identifizieren, wenn ich die Wellenformen visuell überprüfe.

Beim Betrachten der Wellenformen habe ich die folgenden Annahmen getroffen, und vielleicht kann jemand helfen. Dies waren meine Annahmen:

  1. Alles lässt vermuten, dass die Uhr das blaue Signal und die Daten das rote Signal sind.
  2. Die Uhr scheint invertiert zu sein, da sich ihr Ruhezustand nicht auf einem hohen Pegel befindet.
  3. Ich bin nicht sicher, ob das Datensignal auch invertiert ist, aber es scheint zu sein.

Sind meine Annahmen richtig?

In der letzten Abbildung ist die Abbildung mit der Nummer 5 in einem Kreis angegeben, und es gibt einen Teil des Signals. Ich kann die Start-, Bestätigungs- und Stoppbits nicht identifizieren. Kann jemand diese Elemente identifizieren, wenn er nur die Figur betrachtet?

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

[Bearbeitet] Einige Leute fragten mich nach den Geräten, die in der Kommunikation enthalten sind. Die Kommunikation erfolgt zwischen einem Autoschlüssel und einem Werkzeug, das ich nicht sagen darf, aber ich versuche, ein Reverse Engineering durchzuführen.


1
Sie haben die Startbedingung am äußersten linken roten Rand (SDA). Es geht niedrig, während invertiertes Blau (–SCL) niedrig gehalten wird. Danach scheinen Änderungen an Rot (SDA) nur dann aufzutreten, wenn das invertierte Blau (–SCL) hoch ist. Das ist ein gültiges I²C-Gespräch.
Janka

2
@Janka, das ist nur dann ein gültiges I2C-Gespräch, wenn Sie davon ausgehen, dass SCL invertiert ist. Es gibt keinen Grund, das anzunehmen.
Annie

2
@Janka, das OP hat das als Annahme aufgeführt. Diese Annahme basiert auf der Annahme, dass dies I2C ist. Es gibt mehrere Gründe zu der Annahme, dass dies kein I2C ist - einer davon ist, dass die Uhr im Leerlauf niedrig ist.
Annie

5
@ Daniel, könnten Sie uns sagen, was die beiden Geräte sind?
Annie

2
Anstatt sich Gedanken darüber zu machen, was es ist, sollten Sie vielleicht darüber nachdenken, was es sagt. Finden Sie heraus, welche Kante (n) Sie abtasten müssen. Besorgen Sie sich einen Logikanalysator, wahrscheinlich den USB-Streaming-Typ, und schreiben Sie einen Decoder, der den Umfang der Variabilität erfasst. Suchen Sie dann nach Mustern in den Daten.
Chris Stratton

Antworten:


6

Ich vermute, dass es sich um das von einem Unternehmen selbst entwickelte "I2C-ähnliche" Protokoll handelt. Es gab einige von denen damals, als die Verwendung von I2C bedeutete, Philips Geld geben zu müssen.

Es scheint eine ACK zu haben (der kurze Impuls auf der Datenleitung vor der Taktstrecke ähnelt stark der Datenleitung, die vom Master zum Slave geleitet wird).

Seltsamerweise scheint es 7 Bits gleichzeitig zu übertragen.


1
Wenn es sich um eine proprietäre Version des Protokolls handelt, wird möglicherweise auch eine 7-Bit- oder weniger-Bit-Kommunikation verwendet
Maple,

6
@ Maple Ja. Ich kann mir einen Ingenieur vorstellen, der sagt: "Wie machen wir das wie I2C, aber gerade so unterschiedlich, dass wir keine Lizenzgebühren zahlen müssen? Drehen Sie die Uhr um und senden Sie jeweils 7 Bits." Aber ich kann nur raten.
Annie

11

Angesichts der Tatsache, dass es nur 8 Takte pro Byte gibt (I2C erfordert einen 9. Takt für das ACK / NAK-Bit) und der Taktleerlaufzustand niedrig zu sein scheint, würde ich sagen, dass dies eher eine SPI-Schnittstelle (oder eine SPI-ähnliche Schnittstelle) ist.

Ich bin mir jedoch nicht sicher über die zusätzliche Taktbreite für das erste Bit jedes Bytes.


1
Andererseits sieht dieser schmale Impuls am Ende der Taktsequenz NACK sehr ähnlich. Was auch wie Leerlauf niedrig aussieht, könnte das Strecken der Uhr sein, was laut Spezifikation nicht mehr zulässig ist, aber von alten Sklaven verwendet werden könnte. Der Anfangszustand auf den Bildern (1) und (2) ist tatsächlich hoch
Maple

1
@Maple: Ich sehe Ihren schmalen Datenimpuls, aber ich sehe immer noch nicht den 9. Taktimpuls. Das Datenmuster stimmt perfekt mit bestimmten SPI-Konfigurationen der Taktphase und Taktpolarität überein.
Dave Tweed

1
Das ist wahr, ich stimme Ihnen tatsächlich zu. Was mir fremd ist, ist inkonsistentes SDI / SDO-Leerlaufverhalten (was auch immer es ist) am Ende von (1)
Maple

1
@Maple Würde I2C die Leitungen nicht freigeben, um im Leerlauf hoch zu sein?
Selvek

1
@Selvek Ja, und genau das sehe ich auf Bild (1) und Bildanfang (2). Der Rest stimmte jedoch eher mit SPI überein, wie Dave betonte. Abgesehen von der überraschenden ersten Uhr, die wie ein Startbit aussieht. Hmm ... Startbit ... könnte das sein ...
Maple

3

Ich werfe meinen Hut in den Ring ...

Wenn es sich um alte Geräte handelt, könnte es sich um eine "absolute" 7-Bit-RS-232-Variante handeln:

  • Dieser längere Impuls am Anfang jedes Rahmens könnte ein Startbit sein, und

  • Das Plateau im Taktsignal ganz am Anfang könnte auf 0 zurückkehren, bevor es zur negativen "Markierung" geht. (Sie haben keine Spannung für Screenshots angegeben, also rate ich hier).


1
Oooh, das ist neu für mich. Hat es eine Bestätigung? (In meiner sehr kurzen Google-Suche konnte ich keine finden). Wenn nicht, irgendetwas anderes, das den kurzen Impuls auf der Datenleitung nach dem 8. Klick erklären würde?
Annie

1
Nicht, dass ich davon Wüste. Und in jedem Fall, wenn dies tatsächlich eine altmodische Serie ist, würde jede Kommunikation in eine andere Richtung separate Drähte erfordern. Dieser Puls ist zu kurz, um etwas Bedeutendes zu sein. Höchstwahrscheinlich setzt sich der Treiber vor dem nächsten Frame zurück. All dies ist eine Vermutung, wie Sie selbst sagten. Wenn OP keine weiteren Details zu den Geräten bereitstellt, können wir dies nur tun.
Maple

@Maple, die Kommunikation erfolgt zwischen einem Autoschlüssel und einem Werkzeug, das ich nicht sagen darf, aber ich versuche, ein Reverse Engineering durchzuführen.
Daniel

RS232 ist ein Standard für elektrische Pegel, nicht für die Codierung von Datenwörtern
Chris Stratton

@ChrisStratton Wo haben Sie in meiner Antwort etwas über Codierung gefunden? Alles was ich sage ist, dass wenn die Spannungspegel RS232 entsprechen und die Signale synchron seriell ähneln, es höchstwahrscheinlich nicht I2C
Maple

-1

Nach meiner Erfahrung mit I2C kann ich die Uhr mit einem Multimetergerät überprüfen, indem ich das Gerät so einstelle, dass die Frequenz (in Hertz) gemessen wird. Wenn es also einen konstanten Wert wie 2k anzeigt, handelt es sich um eine I2C-Uhr.


3
Nein, das ist überhaupt keine gültige Schlussfolgerung. Viele Dinge, die nicht I2C sind, haben stabile Uhren. Tatsächlich hat I2C keine stabile Uhr, sondern eine platzende. Wenn Ihr Messgerät über einen bestimmten Zeitraum zählt, wird tatsächlich eine aktive Taktung mit Leerlaufunterbrechungen gemittelt. Sie müssen den Kehrwert der Impulsbreite messen, idealerweise in einem Bereich, in dem Sie sicher sein können, dass Sie es sind tatsächlich messen, was beabsichtigt ist. Im Gegensatz dazu neigen einige andere Schemata wie I2S dazu, kontinuierlich laufende Uhren zu haben. Aber die Taktfrequenz kann nur etwas ausschließen, nicht ein.
Chris Stratton
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.