Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Analiza komunikatu w transmisji szeregowej

costa 12 Apr 2021 20:28 447 3
  • #1
    costa
    Level 10  
    Za pomocą prostego analizatora logicznego oraz oprogramowania Logic próbuję podsłuchać komunikat, który jest cyklicznie wysyłany (co 100ms) z jednego urządzenia do drugiego (RTI, z nawigacji/napędu DVD do ekranu, w Volvo).

    Do rzeczy... Wszystko po to, by samodzielnie wysterować sam ekran. Wysterowanie ekranu sprowadza się do ustalenia, czy ma być zamknięty, czy otwarty i które źródło video ma być aktywne oraz do sterowania jasności ekranu.
    W internecie można znaleźć już "rozkminiony" powyższy protokół: np. za pomocą arduino, ustawiając port szeregowy na prędkość 2400 (pozostałe parametry domyślne, czyli 8N1) można wysłać 3 bajty:
    0x83,
    0x40 (tu mogą się pojawić jeszcze 3 inne wartości),
    0x40 (tu może się pojawić jeszcze 15 innych wartości).

    No i to działa.



    Ja jednak chciałem bardziej zgłębić temat i podejrzeć jak wygląda komunikacja pomiędzy dedykowaną nawigacją a ekranem. No i nie bardzo się to pokrywa z powyższą rozkminką. Aplikacja Logic pokazuje 5 bajtów, choć 2 z nich uszkodzone(?), a ich wartości tych "dobrych" nie bardzo się pokrywają z tymi 3 działającymi.
    Próbowałem chyba wszystkich kombinacji parametrów protokołu w Logic (liczba bitów stopu, parzystości, znaczący bit, MDB...) i nadal nie widzę w tym sensu. Nie mówiąc o próbie nadania takiego komunikatu z arduino.

    Analiza komunikatu w transmisji szeregowej

    Komunikat na obrazku daje dokładnie taki sam efekt (otwarcie ekranu z wejściem RGB) jak wysłanie komunikatu 3 bajtowego, który opisałem wyżej (oczywiście jak podsłucham komunikację w Logic, na takich samych ustawieniach, widzę dokładnie to, co wysyłam, czyli 3 bajty).

    Nie mam w tej kwesti doświadczenia. A wy co o tym sądzicie?
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
  • Helpful post
    #2
    alecki99
    Level 16  
    Jeśli przyjąć, że transmisja ma parametry 9N1, to kolejne słowa z obrazka to 0x185 0x140 0x000 0x000 0x108. O ile czasówki są takie że zmieści się bit startu i stopu, na obrazku nie widać.
  • Helpful post
    #3
    __Grzegorz__
    Level 29  
    to wygląda na zwykłe 8E1 (8 bit danych, parzystości tak aby w sumie była parzysta liczba bitów, no i bit stopu...)...
  • #4
    costa
    Level 10  
    alecki99 wrote:
    Jeśli przyjąć, że transmisja ma parametry 9N1, to kolejne słowa z obrazka to 0x185 0x140 0x000 0x000 0x108. O ile czasówki są takie że zmieści się bit startu i stopu, na obrazku nie widać.


    Tak, jak tak ustawię parametry w Logic, nie zgłasza błędu ramki.
    Ale wszystko wskazuje, że
    __Grzegorz__ wrote:
    to wygląda na zwykłe 8E1 (8 bit danych, parzystości tak aby w sumie była parzysta liczba bitów, no i bit stopu...)...


    Ustawienie parametrów w Logic nie zgłasza błędów. Ale ale! Wymuszenie takich parametrów w arduino (bo domyślnie jest 8N1) i wysłanie dokładnie takiej samej sekwencji powoduje oczekiwany efekt - otworzenie ekranu z RGB!

    Zatem wszystko jasne: 8E1, 2400. No i wynika z tego, że dwoma różnymi komunikatami (3 bajty i 5 bajtów) można osiągnąć to samo.
    Dzięki.