Questa comunicazione è I²C?


9

Devo decodificare la comunicazione tra due dispositivi, ma non ho informazioni su questi dispositivi. Tutto quello che so è che sono necessari quattro fili (GND, VCC e due fili di comunicazione). Ho il sospetto che si tratti di comunicazione I²C.

Sto cercando di decodificarlo con lo strumento di decodifica dell'oscilloscopio, ma non ne sono del tutto sicuro. Non riesco a identificare correttamente gli elementi della comunicazione I²C quando controllo visivamente le forme d'onda.

Osservando le forme d'onda ho formulato le seguenti ipotesi e forse qualcuno può aiutare. Questi erano i miei presupposti:

  1. Tutto porta a credere che l'orologio sia il segnale blu e che i dati siano il segnale rosso.
  2. L'orologio sembra essere invertito perché il suo stato inattivo non è di alto livello.
  3. Non sono sicuro che anche il segnale dati sia invertito, ma sembra esserlo.

I miei presupposti sono corretti?

Nell'ultima figura, la figura con il numero 5 è indicata in un cerchio e c'è una parte del segnale. Non riesco a identificare i bit di start, ack e stop. Qualcuno può identificare questi elementi solo guardando la figura?

Inserisci qui la descrizione dell'immagine Inserisci qui la descrizione dell'immagine

[Modificato] Alcune persone mi hanno chiesto dei dispositivi presenti nella comunicazione. La comunicazione è tra una chiave dell'auto e uno strumento che non posso dire, ma sto provando a fare un reverse engineering su di essa.


1
Hai la condizione iniziale sul bordo rosso più a sinistra (SDA). Si abbassa mentre il blu invertito (–SCL) è tenuto basso. Successivamente, le modifiche al rosso (SDA) sembrano verificarsi solo quando il blu invertito (–SCL) è alto. È un discorso I²C valido.
Janka,

2
@Janka, questo è un discorso I2C valido solo se supponi che SCL sia invertito. Non c'è motivo di assumerlo.
Annie,

2
@Janka, l'OP lo ha elencato come un presupposto. Tale presupposto si basa sul presupposto che si tratti di I2C. Ci sono diverse ragioni per credere che questo non sia I2C - uno di questi è che l'orologio è inattivo.
Annie,

5
@Daniel, potresti dirci quali sono i due dispositivi?
Annie,

2
Forse invece di preoccuparti di "cosa è" dovresti pensare a "cosa dice". Scopri quale bordo / i devi campionare. Ottieni un analizzatore di logica, probabilmente il tipo di streaming USB, e inizia a scrivere un decodificatore che catturi l'ambito della variabilità. Quindi iniziare a cercare modelli nei dati.
Chris Stratton,

Risposte:


6

La mia ipotesi è che si tratti del protocollo "I2C-like" di alcune aziende. C'erano alcuni di quei tempi quando usare I2C significava dover dare soldi a Philips.

Sembra avere un ACK (il breve impulso sulla linea di dati prima del tratto dell'orologio assomiglia molto alla linea di dati che passa dal master allo slave).

Stranamente, sembra trasmettere 7 bit alla volta.


1
Se si tratta della versione proprietaria del protocollo, potrebbe utilizzare anche la comunicazione a 7 o meno bit
Maple,

6
@Maple Sì. Posso immaginare un ingegnere che dice "Come possiamo renderlo come I2C ma abbastanza diverso da non dover pagare royalties? Invertire il tempo e inviare 7 bit alla volta". Ma posso solo indovinare.
Annie,

11

Dato che ci sono solo 8 clock per byte (I2C richiede un nono clock per il bit ACK / NAK) e lo stato di inattività del clock sembra essere basso, direi che è più probabile un'interfaccia SPI (o SPI-like).

Non sono sicuro della larghezza di clock aggiuntiva sul primo bit di ogni byte, tuttavia.


1
D'altra parte, quel sottile impulso alla fine della sequenza di clock assomiglia molto a NACK. Inoltre, ciò che sembra inattivo potrebbe essere lo stretching dell'orologio, che non è più consentito dalle specifiche ma potrebbe essere utilizzato dai vecchi schiavi. Lo stato iniziale delle immagini (1) e (2) è in realtà alto
Maple,

1
@Maple: vedo il tuo stretto impulso di dati, ma non riesco ancora a vedere il nono impulso di clock. Il modello di dati è perfettamente coerente con alcune configurazioni SPI di fase e polarità del clock.
Dave Tweed,

1
È vero, in realtà sono d'accordo con te riguardo l'orologio. Ciò che è strano per me è incoerente comportamento SDI / SDO (qualunque esso sia) inattivo alla fine di (1)
Maple,

1
@Maple I2C non avrebbe rilasciato le linee al minimo?
Selvek,

1
@Selvek Sì, ed è esattamente quello che vedo nell'immagine (1) e all'inizio dell'immagine (2). Il resto, tuttavia, è più coerente con SPI, come ha sottolineato Dave. Bene, a parte il sorprendente primo orologio che sembra un po 'di partenza. Hmm ... inizia un po '... potrebbe essere ...
Maple,

3

Getterò il cappello sul ring ...

Se si tratta di vecchi dispositivi, si potrebbe osservare una variante RS-232 sincrona a 7 bit "minimo indispensabile":

  • Quel polso più lungo all'inizio di ogni fotogramma potrebbe essere un bit di inizio, e

  • Il plateau nel segnale dell'orologio all'inizio potrebbe essere riportato a 0 prima di passare al "segno" negativo. (Non hai fornito tensione sugli screenshot, quindi immagino qui).


1
Oooh, questo è nuovo per me. Ha qualche segno? (Non ne ho trovato uno nella mia brevissima ricerca su Google). Altrimenti, qualcos'altro che spiegherebbe il breve impulso sulla linea di dati dopo l'ottavo clk?
Annie,

1
Non che io sappia. E in ogni caso, se si tratta effettivamente di un seriale vecchio stile, qualsiasi comunicazione in un'altra direzione richiederebbe fili separati. Quel polso è troppo breve per essere qualcosa di significativo. Molto probabilmente il driver si reimposta prima del fotogramma successivo. Tutto questo è indovinare, come hai detto tu stesso. A meno che OP non fornisca maggiori dettagli sui dispositivi, questo è tutto ciò che possiamo fare.
Maple

@Maple, la comunicazione è tra una chiave dell'auto e uno strumento che non posso dire, ma sto provando a fare il reverse engineering su di esso.
Daniel,

RS232 è uno standard per i livelli elettrici, non per la codifica delle parole dei dati
Chris Stratton,

@ChrisStratton Dove hai trovato qualcosa sulla codifica nella mia risposta? Tutto quello che sto dicendo è che se i livelli di tensione corrispondono a RS232 e i segnali assomigliano a un seriale sincrono, molto probabilmente non è I2C
Maple

-1

Secondo la mia esperienza con I2C, posso usare un dispositivo multimetro per controllare l'orologio impostando il dispositivo per misurare la frequenza (in Hertz), quindi se legge un valore costante come 2k, allora è l'orologio I2C.


3
No, non è affatto una conclusione valida. Molte cose che non sono I2C hanno orologi costanti. In effetti, I2C non ha un orologio costante, ma piuttosto un orologio scoppiato. Se il tuo contatore sta contando per un periodo di tempo, in realtà sarà la media del clock attivo con intervalli intermedi - dovresti misurare il reciproco della larghezza di un impulso, idealmente su un ambito in cui puoi essere sicuro di essere effettivamente misurare ciò che si intende. Al contrario, alcuni altri schemi come I2S tendono ad avere orologi in esecuzione continua. Ma la frequenza di clock può solo escludere qualcosa, non in.
Chris Stratton,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.