Skocz do zawartości

Dekodowanie komunikacji PIC i nadajnika RF


michal8989

Pomocna odpowiedź

Mam pilot bezprzewodowy a wewnątrz, mikrokotroler (PIC18F25K20) i nadajnik rf(PIC12LF1840T39A). Wpiąłem się w magistralę komunikacyjną między nimi, zrobiłem to analizatorem stanów logicznych. Pinout wygląda jakby była zwykła komunikacja szeregowa. Niestety, na analizatorze dioda pokazuje  odbiór danych na analizatorze ale jakby sygnał był ciągły niski. Jedyna wskazówka to, że oba układy mają oscylatory 32mhz a analizator dobija do 24, dziwi mnie że nie pokazuje nawet losowo żadnego piku, bo zakładam że tak by było gdyby próbkowanie było za rzadkie.
Układy komunikują się tymi pinami:
PIC18F25K20 - RA3, RA4, RA5
PIC12LF1840T39A - RA0, RA1, RA2
Piny są wyprowadzone na złącze ISP jak na zdjęciu.


Co mam na celu? Chcę programowo wysyłać komendy takie jak pilot potrafi wysyłać. Podsłuchać komunikację i wysyłać to samo do nadajnika ale z innego mikrokotrolera. 
Próbowałem rf-replay, na inne urządzenia działa, w tym nie dałem rady. Nagrana próbka może być zbyt uboga.

Skończyły mi się pomysły jak dobrać się do komunikacji. 
Proszę o jakiekolwiek rady. 

IMG_20200217_182259.thumb.jpg.2bae2cd3b2abe6665d56412bd759d70d.jpg1815465014_Beznazwy-1.thumb.jpg.fefed1567a37d4201b8337f51ab3396e.jpg

Link do komentarza
Share on other sites

3 godziny temu, michal8989 napisał:

zwykła komunikacja szeregowa

Czyli UART? SPI? I2C? Wszystkie są w jakimś sensie "zwykłe". No dobra, typowe I2C i UART raczej odpadają, bo linie są "zaparkowane" w stanach niskich. Zostaje dwukierunkowe SPI czyli zegar i dane full duplex albo zegar, dane w jedną stronę i CS.

Analizator ma swoje progi dyskryminacji tj. łapie tylko sygnały logiczne, które poziomami odpowiadają bramkom na jego wejściach. Jeżeli Twój analizator pracuje np. z sygnałami 5V a tutaj jest zasilanie procesorów np. 2.5 albo 1.8V to nic nie zobaczysz. Zawsze zaczynaj od pomiaru oscyloskopem, wtedy wiesz czego się spodziewać na warstwie fizycznej - jakich napięć, jak długich impulsów itp. Analizator to krok drugi i to zawsze z dopasowaniem poziomów gdy jest ono wymagane.

3 godziny temu, michal8989 napisał:

Niestety, na analizatorze dioda pokazuje  odbiór danych na analizatorze ale jakby sygnał był ciągły niski.

Tego nie rozumiem.

A komunikacje szeregowe, szczególnie gdy nie trzeba się wysilać a ilości danych są niewielkie, zwykle są rzędy wielkości wolniejsze niz zegary procesorów. Podejrzewam, że aktywność na liniach mógłbyś wykryć (tj. odróżnić stan pasywny od transmisji) nawet zwykłym multimetrem, który wahnie się z 0.00V np. na 0.20V.

Link do komentarza
Share on other sites

Anonim
1 godzinę temu, marek1707 napisał:

Podejrzewam, że aktywność na liniach mógłbyś wykryć (tj. odróżnić stan pasywny od transmisji) nawet zwykłym multimetrem, który wahnie się z 0.00V np. na 0.20V.

Z całą pewnością tak by było i podejrzewam, że nawet tak jest. Ten "ciągły niski sygnał" to być może jakiś znacznik końca/początku czy coś takiego. Spróbuj tą transmisję skopiować w domenie czasu a nie aktywności tj. zmierz czas trwania ramki. Najlepiej gdyby wysyłać na przemian różne komendy i przeanalizować cały ciąg pod kątem różnicy stanów w każdej z nich. Takie moje pierwsze skojarzenie.

Link do komentarza
Share on other sites

Wiem, że to stary temat ale może się komuś przyda na przyszłość. Mam piloty do rolet na tych samych mikrokontrolerach: dwa oparte na PIC18F25K20 i jeden oparty na PIC16F. W obydwu przypadkach sygnał RF jest wysyłany przez PIC12LF1840T39A. We wszystkich przypadkach połączenie do PIC12 jest na tych pinach:

RA0 - [IN] sygnał rozpoczęcia transmisji (niski)

RA1 - [OUT] sygnał gotowości (niski)

RA2 - [IN] data

Transmisja wygląda następująco. Przesyłane jest 24 bity, każdy bit ma okres ~200us, w proporcjach 100us+/-30us (1: 130:70, 0: 70:130):

1. RA0 - ustawione na stan niski

2. RA1 - ustawione na stan niski

3. Przerwa ~270us

4. Przesyłanie danych, każdy bit ~200us. Bit 1: 130us wysoki, ~70us niski, Bit 0: ~70us wysoki, ~130us niski

5. Po 2.5s od początku RA0 i RA1 ustawiane są na stan wysoki

Pojęcia nie mam czy to jakiś standardowy protokół, zastanawiająca jest ta przerwa 270us przed wysłaniem pierwszego bitu.

 

Pakiet danych wygląda tak:

KANAŁ (8 bitów), KOMENDA (8 bitów), CRC ? (8 bitów) 

Wszystkie piloty wysyłają te same dane do PIC12, przykład:

KANAŁ 00:
      DOWN: 10000000  11000000  00010000  [0x80c010]
      STOP: 10000000  10010000  00110001  [0x809031]
        UP: 10000000  10100000  00101110  [0x80a02e]
DOWN LAMEL: 10000000  11010000  10010110  [0x80d096]
  UP LAMEL: 10000000  10110000  10101000  [0x80b0a8]

KANAŁ 03:
      DOWN: 10000011 11000000 01110101 [0x83c075]
      STOP: 10000011 10010000 01010100 [0x839054]
        UP: 10000011 10100000 01001011 [0x83a04b]
      PAIR: 10000011 11100000 11101100 [0x83e0ec]
DOWN LAMEL: 10000011 11010000 11110011 [0x83d0f3]
  UP LAMEL: 10000011 10110000 11001101 [0x83b0cd]

KOMENDY:
0x90 - STOP
0xa0 - UP
0xb0 - UP LAMEL
0xc0 - DOWN
0xd0 - DOWN LAMEL
0xe0 - PAIR (niedostępne dla kanału 00)

 

Nie jestem pewien co oznacza trzecia wartość, pewnie jest to jakiś checksum ale nie udało mi się rozszyfrować jak jest wyliczany.

 

 

Zrzut ekranu 2023-06-11 103824.png

Zrzut ekranu 2023-06-11 104337.png

Edytowano przez jacek89
Dodatowe informacje
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.