Czy ta komunikacja to I²C?


9

Potrzebuję zdekodować komunikację między dwoma urządzeniami, ale nie mam informacji o tych urządzeniach. Wiem tylko, że potrzebne są cztery przewody (GND, VCC i dwa przewody komunikacji). Podejrzewam, że jest to komunikacja I²C.

Próbuję go zdekodować za pomocą narzędzia do dekodowania oscyloskopu, ale nie jestem do końca pewien. Nie mogę prawidłowo zidentyfikować elementów komunikacji I²C, gdy wizualnie sprawdzam przebiegi.

Patrząc na kształty fal, podjąłem następujące założenia i być może ktoś może pomóc. Oto moje założenia:

  1. Wszystko prowadzi do przekonania, że ​​zegar to niebieski sygnał, a dane to czerwony sygnał.
  2. Zegar wydaje się być odwrócony, ponieważ jego stan bezczynności nie jest na wysokim poziomie.
  3. Nie jestem pewien, czy sygnał danych jest również odwrócony, ale wydaje się, że tak.

Czy moje założenia są prawidłowe?

Na ostatniej figurze cyfra 5 oznaczona jest okręgiem i jest tam część sygnału. Nie mogę zidentyfikować bitów początku, potwierdzenia i stopu. Czy ktoś może zidentyfikować te elementy, patrząc tylko na postać?

Wpisz opis zdjęcia tutaj Wpisz opis zdjęcia tutaj

[Edytowane] Niektóre osoby pytały mnie o urządzenia, które są w komunikacji. Komunikacja odbywa się między kluczem samochodowym a narzędziem, o którym nie wolno mi mówić, ale staram się na tym dokonać inżynierii wstecznej.


1
Warunek początkowy znajduje się na skrajnie lewej lewej krawędzi (SDA). Staje się niski, podczas gdy odwrócony niebieski (–SCL) jest utrzymywany na niskim poziomie. Następnie zmiany na czerwony (SDA) wydają się występować tylko wtedy, gdy odwrócony niebieski (–SCL) jest wysoki. To ważna rozmowa I²C.
Janka

2
@Janka, to ważna rozmowa I2C tylko wtedy, gdy założymy, że SCL jest odwrócony. Nie ma powodu, aby to zakładać.
Annie

2
@Janka, OP podało to jako założenie. To założenie opiera się na założeniu, że jest to I2C. Istnieje kilka powodów, aby sądzić, że to nie I2C - jednym z nich jest to, że zegar jest bezczynny.
Annie

5
@Daniel, czy możesz nam powiedzieć, jakie są te dwa urządzenia?
Annie

2
Być może zamiast martwić się o to, co to jest, powinieneś pomyśleć o tym, co mówi. Dowiedz się, które krawędzie chcesz próbkować. Zdobądź analizator logiczny, prawdopodobnie rodzaj przesyłania strumieniowego USB i zacznij pisać dekoder, który uchwyci zakres zmienności. Następnie zacznij szukać wzorców w danych.
Chris Stratton

Odpowiedzi:


6

Domyślam się, że jest to protokół firmowy „I2C”. W przeszłości było kilka takich, kiedy używanie I2C oznaczało konieczność przekazania pieniędzy Philipsowi.

Wygląda na to, że ma ACK (krótki puls na linii danych przed rozciągnięciem zegara wygląda bardzo podobnie do linii danych przekazywanej z mastera na slave).

Co dziwne, wydaje się, że przesyła 7 bitów na raz.


1
Jeśli jest to zastrzeżona wersja protokołu, może równie dobrze wykorzystywać komunikację 7-bitową
Maple

6
@Maple Tak. Mogę sobie wyobrazić inżyniera mówiącego: „Jak to zrobić, tak jak I2C, ale tylko tyle, że nie musimy płacić tantiem? Odwróć zegar i wysyłaj 7 bitów na raz”. Ale mogę tylko zgadywać.
Annie

11

Biorąc pod uwagę, że na bajt jest tylko 8 zegarów (I2C wymaga dziewiątego zegara dla bitu ACK / NAK), a stan bezczynności zegara wydaje się niski, powiedziałbym, że jest to bardziej prawdopodobne interfejs SPI (lub podobny do SPI).

Nie jestem jednak pewien dodatkowej szerokości zegara w pierwszym bicie każdego bajtu.


1
Z drugiej strony ten wąski puls na końcu sekwencji zegarowej przypomina NACK. Również coś, co wygląda na bezczynny niski, może rozciągać się w czasie, co nie jest już dozwolone przez spec, ale może być używane przez starych niewolników. Stan początkowy na zdjęciach (1) i (2) jest w rzeczywistości wysoki
Maple

1
@Maple: Widzę twój wąski puls danych, ale nadal nie widzę impulsu 9-tego zegara. Wzorzec danych jest doskonale zgodny z niektórymi konfiguracjami SPI fazy zegara i polaryzacji zegara.
Dave Tweed,

1
To prawda, zgadzam się z tobą ponownie. Dziwne dla mnie jest niespójne SDI / SDO (cokolwiek to jest) bezczynne zachowanie na końcu (1)
Maple

1
@Maple Czy I2C nie zwolni linii do wysokiego poziomu bezczynności?
Selvek

1
@Selvek Tak, i dokładnie to widzę na zdjęciu (1) i na początku obrazu (2). Reszta jest jednak bardziej spójna z SPI, jak zauważył Dave. Oprócz zaskakującego pierwszego zegara, który wygląda jak bit startowy. Hmm ... bit startowy ... czy to może być ...
Maple

3

Wrzucę kapelusz na ring ...

Jeśli są to stare urządzenia, możesz spojrzeć na jakiś 7-bitowy synchroniczny wariant RS-232 „minimum”.

  • Ten dłuższy puls na początku każdej ramki może być bitem początkowym, i

  • Płaskowyż w sygnale zegarowym na samym początku może być ustawiony na zero przed przejściem do ujemnego „znaku”. (Nie podałeś napięcia na zrzutach ekranu, więc zgaduję tutaj).


1
Oooh, to dla mnie nowe. Czy ma jakieś potwierdzenie? (Nie mogłem znaleźć w mojej bardzo krótkiej wyszukiwarce Google). Jeśli nie, cokolwiek innego, co tłumaczyłoby krótki puls na linii danych po 8. kliknięciu?
Annie

1
Nie żebym o tym wiedział. W każdym razie, jeśli jest to rzeczywiście staromodny serial, jakakolwiek komunikacja w innym kierunku wymagałaby oddzielnych przewodów. Ten puls jest zbyt krótki, aby mógł być znaczący. Najprawdopodobniej sterownik zresetuje się przed następną klatką. Wszystko to zgaduje, jak sam powiedziałeś. O ile OP nie poda więcej szczegółów na temat urządzeń, to wszystko, co możemy zrobić.
Klon

@Maple, komunikacja odbywa się między kluczem samochodowym a narzędziem, o którym nie wolno mi mówić, ale staram się na tym dokonać inżynierii wstecznej.
Daniel

RS232 jest standardem dla poziomów elektrycznych, a nie do kodowania słów danych
Chris Stratton

@ChrisStratton Gdzie znalazłeś coś na temat kodowania w mojej odpowiedzi? Mówię tylko, że jeśli poziomy napięcia odpowiadają RS232, a sygnały przypominają synchroniczny szeregowy, najprawdopodobniej nie jest to I2C
Maple

-1

Zgodnie z moim doświadczeniem z I2C, mogę używać miernika wielometrowego do sprawdzania zegara, ustawiając urządzenie do pomiaru częstotliwości (w hercach), więc jeśli odczytuje stałą wartość jak 2k, to jest to zegar I2C.


3
Nie, to wcale nie jest prawidłowy wniosek. Wiele rzeczy, które nie są I2C, ma stałe zegary. W rzeczywistości I2C nie ma stałego zegara, a raczej pęknięty. Jeśli Twój licznik liczy się przez pewien czas, będzie to faktycznie uśrednianie aktywnego taktowania z bezczynnymi przerwami - musisz zmierzyć odwrotność szerokości impulsu, najlepiej w zakresie, w którym możesz mieć pewność, że jesteś mierzenie tego, co jest zamierzone. W przeciwieństwie do tego, niektóre inne schematy, takie jak I2S, mają zwykle stale działające zegary. Ale częstotliwość zegara może tylko wykluczyć coś, a nie
Chris Stratton
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.