logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak ustawić parametry RS232 dla komunikacji układu z PC?

pmalczyk18 01 Gru 2008 11:36 13192 5
REKLAMA
  • #1 5804204
    pmalczyk18
    Poziom 12  
    Posty: 89
    Ocena: 4
    Witam. Próbuję nawiązać komunikację układu z PC ale prawde mówiąc nie znam się na tym i w związku z tym prosiłbym o wyjaśnienie co znaczą kolejne opcje i co jest w nich ważnego o czym powinienem wiedzieć:

    Port - jasne - wybór portu do komunikacji
    Baud rate - od 110 do 256000 - prędkość transmisji?
    Data Bits - od 5 do 8
    Stop Bits - 1; 1,5; 2
    Parity - None, Odd, Even, Mark, Space
    Flow control - Hardware, Software, None, Custom

    Wiem że aby wszystko działało poprawnie muszą być takie same ustawienia w układzie jak i aplikacji na PC. Tylko teraz tak?! Ustawienia w układzie (czyli wszystkie powyższe dane) znajdę w kodzie zaprogramowanego mikrokontrolera? Z góry wielkie dzięki za pomoc!
  • REKLAMA
  • #2 5804420
    al777
    Poziom 27  
    Posty: 646
    Pomógł: 105
    Ocena: 83
    Dla pytającego i wszystkich innych - objaśnienie (moje) terminów angielskich :

    Port - numer portu COMn (n-numer 1,2,3,...)
    Baud rate - prędkość transmisji - są znormalizowane, tzn. 110,300,1200,2400,4800,9600,19200,38400,57600 i nie zawsze obsługiwane prze PC 115200 oraz czasami jeszcze wyższe
    Data Bits - od 5 do 8 - ilość bitów danych w każdym przesyłanym znaku (przesyłaną wielkością jest tzw. znak - jak widać tylko czasami równy 1 bajtowi)
    Stop Bits - 1; 1,5; 2 - czas trwania STOP-u w porównaniu do długości 1 bitu danych
    Parity - None, Odd, Even, Mark, Space - kontrola parzystości każdego znaku
    None - brak kontroli, Odd - kontrola nieparzystości ilości jedynek w znaku, Even - kontrola parzystości ilości jedynek w znaku, Mark, Space - w tej chwili nie pamiętam
    Flow control - Hardware, Software, None, Custom - sterowanie przepływem danych : Hardware - sprzętowo (za pomocą linii RTS-CTS, DSR-DTR), Software - przesyłając dodatkowe znaki XON/XOFF, None - nie kontroluj transmisji (jak któraś strona nie nadąży, to komunikacja się urwie), Custom - własna metoda (nie wiem jak to się stosuje)

    Typowe wartości dla urządzeń z mikrokontrolerami (tych które sam widziałem):
    Baud rate - 4800,9600,19200,38400 lub 57600
    Data Bits - 8
    Stop Bits - 1
    Parity - None
    Flow control - None lub czasem Hardware w drukarkach termicznych na RS232

    Mam nadzieję że komuś się przyda.
  • REKLAMA
  • #3 5804479
    chudybyk
    Poziom 32  
    Posty: 1537
    Pomógł: 196
    Ocena: 298
    Baud rate to rzeczywiście prędkość transmisji i musi być taka sama w obu urządzeniach, bo inaczej będzie kaszana.
    Data bits - ilość bitów danych w pojedynczym bajcie. Najczęściej jest to 8, czasem można spotkać urządzenia, które działają w ASCII i wymagają 7 bitów, reszta to egzotyka i komplikowanie życia.
    Stop bits - każdy bajt kończy się bitem stopu, który nie jest zaliczany do danych, jednak fizycznie istnieje, żeby zaznaczyć koniec jednego znaku (bajtu). Może on mieć długość 1 standardowego bitu, 1.5 bitu lub pełnych 2 bitów. dobrze, by oba urządzenia miały taką samą długość tego bitu, albo mogą być sygnalizowane błędy transmisji, mimo, że bajt przeszedł dobrze.
    Parity - znacznik parzystości bajtu. Czyli prymitywna suma kontrolna. Można wykorzystać do sprzętowego wykrywania poprawności transmisji. Ma taką zaletę, że bit sam się "dokleja" do wysyłanego bajtu i automatycznie jest przeliczany przy odbieraniu. Fizycznie znajduje się za bitami danych a przed bitem stopu.
    Flow Control - to kontrola przepływu - informuje w jaki sposób regulować przebieg transmisji w sytuacjach przepełnionego/pustego bufora. Hardware wymaga dodatkowych sygnałów znajdujących się na złączu COM PC-ta. Software to dodatkowe bajty danych, które służą za znaczniki i nie są przekazywane do aplikacji, natomiast None to brak takiej kontroli, więc należy samodzielnie zadbać żeby bufory się nie przepełniły. Custom to hybryda tych powyższych i samemu trzeba je zdefiniować.
    Żeby działało na mikrokontrolerze to zadbaj przede wszystkim o szybkość transmisji (kwarc i dobrze policzone dzielniki), ustaw 8 bitów danych i np. 1 bit stopu. Sygnały RxD i TxD puść przez MAX232, żeby nic nie odpalić i łączysz trzy przewody do COM-a w PC: RxD do TxD, TxD do RxD, i masa do masy czyli pinu nr 5. W kompie uruchom sobie terminal z takimi samymi parametrami a dodatkowo sterowanie przeplywem na NONE. Zaprogramuj procek i uruchom. Na terminalu będzie to co wysyłasz, a to co wklepiesz pójdzie do procka.
    Powodzenia
  • REKLAMA
  • #4 5813478
    pmalczyk18
    Poziom 12  
    Posty: 89
    Ocena: 4
    Dzięki śliczne za pomoc! Bardzo mi to pomogło w ustawieniu parametrów. Ustawiłem tak:

    Port: COM9
    Baud Rate: 19200 (znalazłem taką prędkość w kodzie programu więc ustawiłem taki sam)
    Data bits: 8
    Stop bits: 1
    Parity: None
    Flow control: None

    Tylko pytanie mam. Po co musiałem instalować jakiś sterownik - Driver Installer? Coś obiło mi się o uszy że to wirtualny port którego używa układ. Ale nie wiem czy to prawda i do czego to jest?
    Pozdrawiam!
  • REKLAMA
  • #5 5815731
    al777
    Poziom 27  
    Posty: 646
    Pomógł: 105
    Ocena: 83
    Skoro masz port COM9 to pewnie używasz jakiejś przejściówki USB->RS232, albo sam układ ma ją w sobie (i podłączany jest na USB, ale działa jakby był na porcie szeregowym). Do takich rzeczy potrzebny jest sterownik. To oczywiście tylko moje domysły.
  • #6 5821058
    pmalczyk18
    Poziom 12  
    Posty: 89
    Ocena: 4
    Zgadza się. Używam konwertera RS232/USB i tak łączę się z PC. Czyli rozumiem że dane wychodzą w postaci szeregowej z mikrokontrolera, są konwertowane na USB i tak odbiera je PC. I do tego używa wirtualnego portu COM 9? Dobrze to rozumiem?
REKLAMA