Hilfe bei der Identifizierung eines unbekannten Sync Serial Bus

Hat jemand eine solche synchrone serielle Buskommunikation gesehen?

Wiederholtes Muster:Geben Sie hier die Bildbeschreibung ein

Detail Anfang :Geben Sie hier die Bildbeschreibung ein

Ich persönlich bin nicht in der Lage, es selbst herauszufinden ...

Es scheint jedoch wie I2C:

  • Der Takt läuft mit 2 MHz (so wie es bei HS-I2C mindestens sein sollte)
  • Die Leitung scheint heruntergezogen zu sein (I2C wird normalerweise hochgezogen)
  • Ich kann anscheinend keine START-Bedingungen festlegen: Das erste Datenelement scheint sich nach 2 Taktzyklen zu bewegen ...

Es scheint auch wie SPI, aber:

  • Wenn die Datenleitung MOSI ist, wiederholt sich das Muster nach 5 Wörtern mit jeweils 9 Bit (während ein normales SPI-Wort 8 Bit hat). Später scheint sich ein anderes Muster zu wiederholen: 4 Wörter mit jeweils 6 Bit ... Ich habe noch nie eine SPI-Kommunikation gesehen, bei der sich die Wortlänge für dasselbe Master/Geräte-Paar ändert. Die kleinere Wortlänge könnte ein gemeinsamer Nenner sein, aber das sollte mir dann Wortlängen von 3 Bit geben ...
  • Wenn ich das Gerät vom Bus trenne, sendet der Master immer noch genau die gleichen Signale, obwohl er weiß, dass das Gerät nicht vorhanden ist und es keine andere Datenleitung gibt, also sieht es so aus, als ob diese Datenleitung bidirektional ist (wie I2C ) und irgendwo tritt eine Art Handshake (ACKnowledge) auf.

Ich denke, dass dies ein standardisierter Bus / ein standardisiertes Protokoll sein könnte, von dem ich einfach noch nichts gehört habe und das vielleicht jemand hier irgendwo gesehen hat.

Was ist der Kontext (Audio, Video, Ethernet usw.)? Gibt es Klimmzüge an einer oder beiden Linien? Sind Sie sicher, dass es nicht mehr Linien als diese beiden sind? (Meine erste Idee wäre I2S, aber das erfordert mindestens eine zusätzliche Zeile.)
So steuert ein Drucker seine Tintenpatrone. Der Master ist die Hauptplatine des Druckers. Der Slave ist die kleine Platine hinter der Tintenpatrone. Andere Signale auf dem Plattenkabel sind für Suspend oder andere Abtastsignale (analog). Die einzigen 2 digitalen Signale sind diese 2, und es sieht aus, als würden sie kommunizieren ... Der Zweck dieses Busses sollte also darin bestehen, Befehle zu erteilen wie: Etwas Tinte ausstoßen ,...
Bisher haben Sie meiner Meinung nach Ihre eigene Frage beantwortet - es handelt sich um eine serielle Verbindung zwischen Drucker und Patrone. Serielle Verbindungen gibt es in allen Formen und Größen, und einige sind einfach zu ergründen, andere sind schwierig – versuchen Sie, eine Verbindung zu finden, die verschlüsselt wurde oder ADC-Daten von sich schnell bewegenden analogen Sensoren enthält. Probieren Sie aus, wo Sie auch keine Uhr haben. Seien Sie nicht zu überrascht über die potenzielle Vielfalt dessen, was Sie finden können.
@moquette31 Ich kenne die Druckerhersteller, alles ist proprietär, Betriebsgeheimnis und patentiert. Es würde mich nicht überraschen, wenn dieses Protokoll nicht dokumentiert ist und nur mit diesem bestimmten Hersteller verwendet wird.
"Der Zweck dieses Busses sollte also sein, Befehle zu erteilen wie ..." - Das kann sein. Dies kann jedoch auch eine Art Authentifizierungsprotokoll sein, das vom Drucker durchgeführt wird, um zu überprüfen, ob die Patrone „echt“ ist (TM) und/oder um andere Parameter wie den aktuellen Tintenstand usw. auszutauschen.
Wie haben Sie die Wortlänge(n) bestimmt?
Im Gegensatz zu den meisten seriellen Protokollen scheint es bei jeder steigenden und fallenden Flanke der Uhr ein paar Informationen zu übermitteln. Ziemlich ungewöhnlich AFAIK..
Versuchen Sie, dasselbe Signal zu bitbangen (oder verwenden Sie ein FPGA oder CPLD) und variieren Sie dann das Signal leicht (machen Sie ein HIGH -> LOW oder umgekehrt) und sehen Sie, was passiert.

Antworten (2)

Diese 2 Zeilen sind wahrscheinlich nicht verwandt

Meine Vermutung ist, dass diese beiden Leitungen überhaupt kein serieller "Daten" -Bus sind, da es wirklich unwahrscheinlich ist, dass die Datenleitung an beiden Taktflanken abgetastet wird. Zumindest sind sie nicht Teil desselben Kommunikationsschemas.

Die uhrähnliche Spur ist wahrscheinlich der "Step"-Befehl. Sein Zweck besteht darin, die Hauptplatine des Tintenwagens darüber zu informieren, dass der Schrittmotor den Wagen zur nächsten Position über die Seite bewegt hat.

Einige Alternativen?

Die datenähnliche Spur ist möglicherweise ein Endschalter oder ein anderer Sensor irgendeiner Art, der die Ausgangsposition, den Beginn der Reihe, das Ende der Reihe usw. anzeigt.

Oder alternativ könnte es eine asynchrone (kein übertragenes Taktsignal) serielle Datenverbindung sein. Die langen Leerlaufperioden zwischen Bytes können notwendig sein, um Intersymbolinterferenzen zu verhindern und die Taktwiederherstellung zu fördern.

Das obere Signal scheint ein UART -Signal zu sein. Visuell scheint es, dass in jedem Zeichen 11 Bits übertragen werden. Dies entspricht wahrscheinlich 1 Startbit, 9 Datenbits und 1 Stoppbit für 1 Zeichen. Es ist möglich, dass eines der Datenbits ein Paritätsbit ist, anscheinend als XNOR der anderen 8 Datenbits. Außerdem erscheinen in dem von Ihnen bereitgestellten Screenshot nur zwei Zeichen (0 1000 0110 und 1 1111 1111). Es ist wahrscheinlich, dass dies ein gemeinsam genutzter Bus ist und Sie sehen (Befehl von dev1), (ack von dev2), (Befehl von dev1), (ack von dev2) usw. Es handelt sich wahrscheinlich um eine Master-Slave-Handshake-Konfiguration .

Das zweite Signal zeigt eine deutliche Abweichung vom ersten Signal, selbst in der kurzen Zeit, in der es aufgezeichnet wurde. Dies bedeutet, dass das Signal nicht nur unabhängig ist, sondern sich wahrscheinlich nicht einmal in derselben Taktdomäne wie das erste Signal befindet.

Es gibt einige Möglichkeiten, dies zu testen. Trennen Sie das Gerät, von dem Sie glauben, dass es der Master ist, und fälschen Sie den Master, indem Sie den Befehl 0 1000 0110 senden. Wenn Sie 1 1111 1111 vom Slave erhalten, wissen Sie, dass der Bus geteilt wird.

Wenn das funktioniert, können Sie auch testen, ob eines der Bits ein Paritätsbit ist. Ändern Sie einfach ein einzelnes Bit des ursprünglichen Befehls und fälschen Sie den Master erneut, indem Sie den Bus mit dem geänderten Zeichen fahren. Wenn Sie ein anderes Zeichen zurückerhalten, handelt es sich wahrscheinlich um das Fehler-Handshake-Zeichen.