System uruchomieniowy dla układów z procesorami STM

System uruchomieniowy dla układów z procesorami STM

Prezentowany układ realizuje funkcje programatora i debuggera układów STM8 i STM32, a dodatkowo zawiera również zasilacz stabilizowany o nastawnym napięciu wyjściowym oraz wirtualny port szeregowy. Istotną cechą systemu jest użycie tylko jednego portu USB oraz możliwość uruchamiania układów z zasilaniem od 1,2 do 4,4 V.

Podstawowe parametry:
  • użycie jednego poru USB do uzyskania,
  • funkcja programatora-debugera kompatybilnego z ST-LINK/V2 dla układów STM32 (interfejs SWD z sygnałem SWO) oraz STM8 (interfejs SWIM),
  • wirtualny port szeregowy w oparciu o układ firmy FTDI,
  • zasilacz stabilizowany o nastawnym napięciu od 1,2 do 4,2 V (10 wartości) i wydajności prądowej do 300 mA,
  • możliwość uruchamiania układów o napięciu pracy 1,2 do 4,4 V.

W dotychczasowej praktyce autor, do uruchamiania układów z procesorami STM, używał programatora-debuggera kompatybilnego z ST-LINK/V2, osobnego interfejsu wirtualnego portu szeregowego oraz zasilacza stabilizowanego sterowanego z portu USB. Wszystkie te elementy wymagały trzech portów USB. Jednak w komputerach często brakuje odpowiedniej ilości tego typu złącz, a część jest zazwyczaj zajęta przez inne urządzenia. Konieczność użycia huba powodowała powstawanie dość sporej plątaniny kabli i połączeń.

Budowa i działanie

Pełny schemat prezentowanego układu pokazano na rysunku 1.

Rysunek 1. Schemat ideowy układu
Rysunek 1. Schemat ideowy układu - cd.

Zasilacz został zbudowany w oparciu o liniowy stabilizator napięcia MCO1824_ADJ (VR2). Dobór napięcia odbywa się za pomocą zwory ustawianej w jednej z dziesięciu pozycji złącza P4. Wartości tych napięć można ustalić przez dobór rezystorów R1 oraz sumy oporności R2x+R22x zgodnie ze wzorem

Uout=0,41(R1/(R2x+R22x)+1)[V]

Użycie dwóch rezystorów połączonych szeregowo R2x i R22x pozwala na uzyskanie odpowiedniej dokładności napięcia z zastosowaniem oporników o tolerancji 5%. Stosując inne wartości niż zaznaczono na schemacie użytkownik może wybrać inny zestaw napięć, niż ten pokazany na rysunku 1. Maksymalne napięcie na jakie się zdecydowano (4,2 V) nie jest typowe dla układów mikroprocesorowych, jednak może posłużyć np. do podładowania małego akumulatora litowego.

Napięcie stabilizowane dostępne jest na złączu P1. Na tym samym złączu dostępne jest również pełne napięcie interfejsu USB zabezpieczone bezpiecznikiem polimerowym F1 (300 mA). Wydajność stabilizatora napięcia wynosi również około 300 mA, jednak przy niższych napięciach wyjściowych należy wziąć pod uwagę ograniczenie wydzielanej w stabilizatorze mocy i grzanie się układu.

Wirtualny port szeregowy zbudowano w oparciu o układ firmy FTDI typu FT232RL (U1). Nie wymaga zastosowania rezonatora kwarcowego oraz posiada wszystkie sygnały portu szeregowego. W prezentowanym układzie potrzebne są tylko sygnały TX i RX podłączone do translatora napięć, ale pozostałe sygnały mogą być udostępnione na złączu Pu1 – jednak tylko w logice 3,3 V. Zgodnie z notą aplikacyjną układu zastosowano dwie diody LED do sygnalizacji nadawania i odbioru sygnałów. Jako huba USB użyto układu scalonego GL850G w jego podstawowej konfiguracji bez dodatkowej pamięci konfiguracyjnej.

Sercem układu jest programator-debugger zbudowany w oparciu o procesor STM32F103 (U7). Zastosowano układ wylutowany z programatora kompatybilnego z ST-LINK/V2 (fotografia 1), jakie są stosunkowo tanie i dostępne w wielu sklepach internetowych.

Fotografia 1. Programator-debugger kompatybilny z ST-LINK/V2 zastosowany w projekcie

Mniej zaawansowani czytelnicy, którzy czują respekt przed wylutowywaniem procesora, mogą wykonać konstrukcję mniej estetyczną, pokazaną na fotografii 3, gdzie płytkę programatora po odlutowaniu złącz USB i IDE przylutowano do złącz Pu3 i Pu4 (intencjonalnie w tym celu umieszczonych) za pomocą przewodów.

Fotografia 2. Sposób montażu programatora-debugera dla mniej zaawansowanych

Natomiast konstruktorzy bardziej zaawansowani mogą zastosować procesor niezaprogramowany i zaprogramować go samodzielnie używając do tego celu złącza Pu3 (opis i program można znaleźć w Internecie).

Oprogramowanie programatora ma jednak ciekawe dodatkowe własności, których nie wykorzystano w modelu z fotografii 2. Okazuje się, że na pinie 31 jest udostępniony sygnał SWO (Serial Wire Output), który może posłużyć za dodatkowy interfejs do debugowania uruchamianych systemów. Wystarczy stosować w uruchamianym układzie procedury printf(). Rysunki 2a i 2b pokazują odbiór tych sygnałów w programach STM32 ST-LINK Utility oraz Atollic True Studio.

Rysunek 2. Odbiór sygnału SWO: a) w programie STM32 ST-LINK Utility, b) w programie Atollic True Studio

Układ programatora korzysta również z wejścia analogowego na pinie 10 do pomiaru napięcia zasilania. W układzie pierwotnym wejście jest podłączone do zasilania (3,3 V) poprzez dzielnik rezystancyjny o współczynniku 1/2 (na wielu schematach są to oporniki 10 kΩ lub 4,7 kΩ). W prezentowanym systemie dzielnik połączono z napięciem układu docelowego. Przykłady odczytu tego napięcia pokazano na rysunkach 3a i 3b, (program STM32 ST-LINK Utility).

Rysunek 3. Odczyt napięcia układu docelowego zasilanego napięciem: a) 1,8 V, b) 3,6 V oraz inne ustawienia widziane w STM32 ST-LINK Utility

Ponieważ odczytywana wartość była nieco zaniżona, zastosowano dodatkowy rezystor R337≈20·R37, który pozwolił uzyskać prawidłowe odczyty. Na rysunkach 3a i 3b widać też, że prezentowany system pracuje z maksymalną częstotliwością komunikacji, wynoszącą 4 MHz.

Sygnały programatora-debuggera: SWD, SWIM oraz sygnały TX i RX portu szeregowego są dostępne na złączach P5 i P6. Część tych sygnałów jest dwukierunkowa, a część jednokierunkowa. Jednak w celu ujednolicenia układu zdecydowano się na zastosowanie jednakowych, dwukierunkowych translatorów napięcia typu PCA9306.

Pierwotna strona tych układów może być podłączona bezpośrednio do zasilania uruchamianego układu (zwora P2 w pozycji 2-3) lub do zasilacza stabilizowanego (P2 w pozycji 1-2). Napięcie po stronie wtórnej wynosi 5 V, co pozwala na uruchamianie układów z napięciem zasilania do 4,4 V (o 0,6 V mniej niż napięcie strony wtórnej: ok. 5 V). Minimalne napięcie dla strony pierwotnej wynosi 1,2 V. Należy zwrócić uwagę, że wtórna strona translatorów o napięciu 5 V współpracuje porwanie z procesorem programatora i układem FT232 mimo, że te zasilane są napięciem 3,3 V.

Montaż i uruchomienie

Układ zmontowano na dwustronnej płytce PCB o wymiarach 50×87 mm, której schemat wraz z rozmieszczeniem elementów pokazano na rysunku 4. Mechanicznie zaprojektowano płytkę tak, aby pasowała do obudowy Z-118 firmy Kradex.

Rysunek 4. Schemat płytki PCB wraz z rozmieszczeniem elementów

Podłączenie układu z komputerem wykonano za pomocą krótkiego (15 cm) kabla zakończonego wtyczką typu A. Tak wykonane połączenie, bez dodatkowych złącz i kablem o niewielkiej długości, zapewnia zminimalizowanie spadku napięcia zasilania.

Zmontowany prawidłowo układ powinien działać bez dodatkowych zabiegów. Należy tylko dobrać rezystory R220...R229 tak, aby napięcia stabilizowane przez układ VR2 miały prawidłowe wartości oraz R337 tak, aby napięcie odczytane w programie STM32 ST-LINK Utility (rysunek 3) wskazywało poprawną wartość.

Po podłączeniu układu do komputera w menedżerze urządzeń powinny pojawić się nowe wpisy zaznaczone na rysunku 5 (widok dla Windows 10), co będzie świadczyło o jego prawidłowym funkcjonowaniu.

Rysunek 5. Zmiany widoczne w menedżerze urządzeń (dla Windows 10) po podłączeniu układu do komputera

Poprawność funkcjonowanie układu sprawdzono w programach STM32 ST-LINK Utility, Atollic True Studio oraz STM32CubeIDE.

Na koniec jeszcze dodatkowa uwaga. W prezentowanym układzie zastosowano procesor z układu kompatybilnego z ST-LINK/V2. Możliwe jest również zastosowanie procesora z płytek uruchomieniowych STM. Niektóre z nich, np. układy Nucleo, mają dodatkowo wirtualny port szeregowy (VCP – Virtual Comm Port – wersja ST-LINK/V2.1).

Takie rozwiązanie pozwoliłoby z rezygnować z układu FT232 i huba, ale układy te programują albo procesory STM32 (interfejs SWD) albo STM8 (interfejs SWIM) w zależności typu obsługiwanego procesora, co może być pewną niedogodnością.

JSW

Wykaz elementów:
Rezystory: (SMD 0603)
  • R1: 39 kΩ
  • R2, R11, R13, R14, R17, R18, R35: 3,3 kΩ
  • R3, R4, R5, R9: 200 kΩ
  • R6, R7, R42, R45, R77: 1 kΩ
  • R8, R10, R12, R15, R16, R19, R26, R30, R33, R34: 10 kΩ
  • R20: 3,9 kΩ
  • R21, R36, R37: 4,7 kΩ
  • R22: 5,1 kΩ
  • R23: 5,6 kΩ
  • R24: 6,2 kΩ
  • R25: 7,5 kΩ
  • R27: 11 kΩ
  • R28: 13 kΩ
  • R29: 20 kΩ
  • R31, R41: 680 Ω
  • R32, R44: 100 kΩ
  • R38: 1,5 kΩ
  • R39, R40: 220 Ω
  • R43: 100 Ω
  • R46: 47 kΩ
  • R220…R229, R337: dobierane wartości – opis w tekście
Kondensatory: (SMD0603 o ile nie zaznaczono inaczej)
  • C1, C4, C6, C17, C18: 10 μF
  • C2, C5, C15, C16, C22, C25…C29, C32… C35: 100 nF
  • C3: 10 nF
  • C7…C9, C36: 100 pF
  • C19: 220 nF
  • C20, C21, C23, C24: 22 pF
  • C30, C31: 2,2 μF
  • C10…C14: 100 μF/10 V tantalowy SMB
Półprzewodniki:
  • D1, D5: LED czerwona SMD0603
  • D2, D3: LED zielona SMD0603
  • D4: LED niebieska SMD0603
  • U1: FT232RL
  • U2…U5: PCA9306DTR2G
  • U6: GL850G
  • U7: STM32F103C6T6 (z programatora kompatybilnego z ST-LINK/V2)
  • VR1: MCP1802T-3302IO
  • VR2: MCP1824_ADJ
Inne:
  • Y1: rezonator kwarcowy 12 MHz
  • Y2: rezonator kwarcowy 8 MHz
  • L1: koralik ferrytowy 1500 Ω/100 MHz/300 mA, np. MMZ1608Y152B w obudowie SMD0603
  • F1: bezpiecznik polimerowy 300 mA, np. 0ZCG0030FF2C w obudowie SMD1812
  • P1: złącze kołkowe 2,54 mm 2×3
  • P2: złącze kołkowe 2,54 mm 1×3
  • P4: złącze kołkowe 2,54 mm 2×10
  • P5: złącze kołkowe 2,54 mm 1×7
  • P6: złącze kołkowe 2,54 mm 1×3
  • Kabel USB o długości 10…20 cm z wtyczką typu A
  • Obudowa Z-118 (Kradex)
 
Artykuł ukazał się w
Czerwiec 2020
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik wrzesień 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio wrzesień 2020

Świat Radio

Magazyn użytkowników eteru

Automatyka Podzespoły Aplikacje wrzesień 2020

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna wrzesień 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich sierpień 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów