Automatyczny monitor transmisji szeregowej na STM32

W artykule przedstawiamy projekt monitora transmisji szeregowej z automatyczną detekcją prędkości przesyłania danych. Z jednej strony jest to bardzo prosta aplikacja, z drugiej strony może ona stać się bardzo pomocnym narzędziem w pracy elektronika.

Prezentowana aplikacja jest bardzo prosta i składa się z dwóch elementów: zestawu uruchomieniowego STM32F0DISCOVERY  oraz graficznego wyświetlacza ciekłokrystalicznego bazującego na kontrolerze T6963C. Wszystkie wymagane napięcia podawane są z zewnętrznego zasilacza. Aplikacja nie posiada również konwertera napięć portu szeregowego, w związku z czym napięcia magistrali szeregowej muszą być z zakresu od 0 V do 5 V (po uwzględnieniu, że używane linie GPIO tolerują napięcie 5 V).

Program dla mikrokontroler został napisany i skompilowany z wykorzystaniem GNU ARM oraz Eclipse z zainstalowanymi, dodatkowymi wtyczkami:

  • cdt – http://gnuarmeclipse.sourceforge.net/updates
  • embsysregview – http://embsysregview.sourceforge.net/update

Samo działanie aplikacji sprowadza się do zidentyfikowania prędkości transmisji szeregowej, wyświetlenia jej oraz prezentacji na wyświetlaczu danych wysyłanych przez magistralę szeregową. Na fotografii 1 przedstawiona została aplikacja podczas identyfikowania parametrów transmisji, na fotografii 2 przedstawiono otrzymane przykładowe dane.


Fot. 1. Monitor podczas identyfikowania parametrów transmisji danych magistrali szeregowej

Fot. 1. Monitor podczas identyfikowania parametrów transmisji danych magistrali szeregowej


Fot. 2. Monitor podczas odbioru danych wysyłanych przez magistralę szeregową

Fot. 2. Monitor podczas odbioru danych wysyłanych przez magistralę szeregową

 

W aplikacji, do prezentacji danych zastosowano graficzny wyświetlacz ciekłokrystaliczny oparty o kontroler T6963C, z którym mikrokontroler komunikuje się z użyciem pięciu linii sygnałowych oraz ośmiu linii do przesyłania danych lub komend. Linie Tx i Rx magistrali szeregowej są bezpośrednio połączone do wyprowadzeń mikrokontrolera PA9 (Tx) i PA10 (Rx). Sposób podłączenia wyświetlacza z zestawem STM32F0DISCOVERY został przedstawiony na rysunku 3.


Rys. 3. Schemat podłączenia wyświetlacza T6963C do zestawu STM32F0DISCOVERY

Rys. 3. Schemat podłączenia wyświetlacza T6963C do zestawu STM32F0DISCOVERY

 

W aplikacji wykorzystano bardzo użyteczną funkcję USART mikrokontrolera STM32F051R8T6 – Auto baud rate detection. Funkcja ta umożliwia samodzielne określenie prędkości transmisji danych przez układ. Przy czym w układzie STM32F051R8T6 funkcja jest dostępna jedynie dla USART1. Określenie prędkości jest ustalane na podstawie czasu trwania poszczególnych stanów w momencie wysyłania pierwszego znaku. Na listingu 1 przedstawiono funkcję inicjalizującą USART oraz włączającą automatyczne wykrycie prędkości transmisji danych.

List. 1. Funkcja inicjalizująca USART

W pierwszym kroku działania powyższej funkcji następuje pełna konfiguracja i inicjalizacja USART. Następnie włączana jest funkcja automatycznego wykrycia prędkości transmisji. Kolejnym działaniem jest oczekiwanie na ustawienie flag REACK, TEACK i ABREF. Ostatnim dzianiem jest sprawdzenie czy flaga nie ABRE jest ustawiona. Flaga ta jest ustawiana jeśli określenie prędkości transmisji zakończyło się niepowodzeniem. W takim przypadku program sygnalizuje problem zapaleniem diod LED oraz komunikatem na wyświetlaczu, a następnie za pomocą skoku loop przechodzi do ponownej inicjalizacji portu USART i kolejnej próby określenia prędkości. W przypadku udanej detekcji prędkości program w pętli głównej będzie wyświetlał kolejne odbierane znaki na wyświetlaczu.

Krzysztof Witczak