Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

STM32 half-duplex przez RS485

prawicowiec 16 Kwi 2017 01:11 762 5
  • #1 16 Kwi 2017 01:11
    prawicowiec
    Poziom 7  

    Witam

    Wysyłam przykładowe ramki z terminala do STM32 przez driver MAX3485 i cały czas sypie mi błędami w odpowiedziach. Nie mam też pewności czy to co wysyłam z terminala do STM32 dociera bez błędów. Poniżej fragment kodu oraz zrzut ekranu. Powinienem otrzymać to co wysyłam. Czarny kolor to odebrane ramki. Proszę o pomoc

    Kod: c
    Zaloguj się, aby zobaczyć kod


    STM32 half-duplex przez RS485

  • Pomocny post
    #2 16 Kwi 2017 08:27
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Przestawienie kierunku po rozpoczęciu wysyłania ostatniego bajtu jest błędem. Należy go przestawić dopiero _PO_ tym gdy ustawi się flaga TC. Ty natomiast sprawdzasz tą flagę _PRZED_ rozpoczęciem wysyłania (ale tak czy siak po przestawieniu kierunku), co jest mało sensowne. Wewnątrz pętli powinieneś sprawdzać flagę TXE, a TC tylko przed zmianą kierunku na "odbiór".

  • #3 16 Kwi 2017 16:35
    prawicowiec
    Poziom 7  

    Zmodyfikowałem do takiej postaci i dalej sypie błędami, przy okazji gubi też ramki powrotne

    Kod: c
    Zaloguj się, aby zobaczyć kod

    STM32 half-duplex przez RS485

  • #4 16 Kwi 2017 18:22
    Piotrus_999
    Poziom 39  

    jedyne co możesz zrobić to podłaczyć analizator albo oscyloskop.

  • #5 17 Kwi 2017 00:35
    prawicowiec
    Poziom 7  

    Korzystam z tego modułu RS485 bazującego na układzie SP3485 ( schemat ), a nie jak pisałem MAX3485. Wyprowadzenia /RE oraz DE odpowiadające za kierunek transmisji są ze sobą połączone. Wykorzystuje zestaw ZL31ARM , konwerter AVTMOD14 oraz najnowsze środowisko TrueSTUDIO.

    Po przetestowaniu programu z konwerterem USB-UART zamiast konwertera RS485 zmodyfikowałem nieznacznie kod (zmiany poniżej). Zostały linijki sterujące kierunkiem transmisji przez RS485 ale to nie przeszkadzało. Program działał dobrze bez sypania błędami. Wróciłem do testowania z modułem RS485 i zaobserwowałem niepokojące zachowanie podczas transmisji. Zauważyłem, że zmiana stanu na pinach kierunku powoduje samoczynne generowanie jakiś śmieci i STM32 je odbiera jako ramki (LOL !!!).

    Przeprowadziłem taki eksperyment, że na wspomniany pin kierunku podawałem w pętli głównej na przemian stan wysoki i niski (250ms/250ms) nie wysyłając przy tym żadnych ramek, a na terminalu RealTerm odbierałem śmieci ! Ponadto zauważyłem lekkie przygaszanie diody POWER LED na tym module RS485 w takt tych zmian ! MASAKRA !

    Kod: c
    Zaloguj się, aby zobaczyć kod

  • #6 18 Kwi 2017 19:57
    prawicowiec
    Poziom 7  

    Działa zdecydowanie lepiej gdy zmieniłem ustawienia pinu Rx :

    Kod: c
    Zaloguj się, aby zobaczyć kod

Szybka odpowiedź lub zadaj pytanie
Dziękuję Ci. Ta wiadomość oczekuje na moderatora.
 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME