TT#1 Nucleo jako konwerter USB-UART

Konwerter USB-UART to jedno z podstawowych narzędzi używanych przez programistów embedded. Pozwala nie tylko na przetestowanie komunikacji z mikrokontrolerem, ale często służy w procesie debugowania lub jako element interfejsu użytkownika. Co jednak, jeżeli typowy konwerter (oparty u układ FT232 czy CP2102) zagubił się w momencie, kiedy go najbardziej potrzebujesz? Jeżeli masz pod ręką płytkę Nucleo, to jesteś uratowany 🙂

Materiał jest częścią Tips and Tricks – serii artykułów dotyczących ciekawostek o STM32

czyli przydatnych, choć rzadko opisywanych elementów z ekosystemu STM32.

Jak zatem użyć Nucleo w roli konwertera USB-UART? Możemy to zrobić na dwa sposoby:

  1. Napisać program na mikrokontroler znajdujący się na płytce, który będzie przesyłał dane pomiędzy UART2 (połączonym z ST-Link-iem), a dowolnym innym interfejsem UART i podłączyć się pod swoją płytę.
  2. Wykorzystać UART wyprowadzony na części płytki przeznaczonej dla ST-Link-a.

Pierwsza metoda wymagałaby od nas napisania kodu programu – może nieskomplikowanego, ale jednak. Dodatkowo przy użyciu innego Nucleo musielibyśmy generować nowy projekt, żeby użyć go jako konwertera. A przecież chodzi nam o to, aby szybko zastąpić zagubiony konwerter. Dlatego skupimy się na wyjściu drugim.

Żeby szybko i bezproblemowo użyć Nucleo do komunikacji USB-UART musimy wiedzieć kilka istotnych rzeczy.

Najważniejszą informacją jest to, gdzie podłączyć linie TX i RX. Posłużymy się tutaj dokumentacją do Nucleo. W rozdziale 6.8 USART Communication znajdziemy informację, że piny UART dostępne są na złączu CN3.

Linia opisana jako TX służy do nadawania danych, a RX do odbierania. Standardowo należy więc je skrzyżować, podłączać TX Nucleo do RX naszego urządzenia oraz RX Nucleo do TX urządzenia.

W dokumentacji znajdziemy jeszcze jedną ważną informację – interfejs ten jest podłączony do linii USART2 mikrokontrolera znajdującego się na Nucleo. Możemy go rozłączyć, usuwając zworki SB13 i SB14 umieszczone na spodzie płytki (domyślnie są wlutowane), tak aby uC nie zakłócał nam komunikacji.

Z moich testów wynika jednak, że w zupełności wystarczy wyczyszczenie pamięci mikrokontrolera – komunikacja powinna działać bez problemów.

Jeżeli jednak coś dziwnego się dzieje na liniach TX i RX, nie mamy lutownicy pod ręką, żeby usunąć zworki, albo nie mamy dostępu do STM32CubeProgrammer-a, aby wyczyścić pamięć – możemy w „akcie desperacji” wyłamać programator wzdłuż nacięć i całkowicie odciąć linie od mikrokontrolera umieszczonego na Nucleo.

Komentarz

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *