- procesor: Megawin MG32F103RBT6 w obudowie LQFP64,
- taktowanie: dwa rezonatory kwarcowe 12 MHz (rdzeń) i 32,768 kHz (RTC),
- multipleksowany, 4-cyfrowy, 7-segmentowy wyświetlacz LED ze scalonym sterownikiem segmentów TBD62083 i czterema kluczami P-MOSFET,
- dwa przyciski programowalne i przycisk RESET,
- trzy diody LED (2×GPIO, 1×wskaźnik zasilania),
- potencjometr połączony z wejściem ADC,
- wbudowany czujnik temperatury MCP9808T (I²C),
- wbudowana pamięć EEPROM AT25128B (SPI),
- gniazdo baterii CR2032 (podtrzymanie zasilania RTC),
- wbudowany stabilizator LDO 3,3 V,
- zasilanie poprzez złącze USB lub gniazdo śrubowe (4,8...5,3 V),
- złącze debuggera MLink lub kompatybilnego,
- złącza interfejsów UART, SPI, I²C, USB Device (gniazdo mini USB),
- dodatkowe złącze udostępniające piny PA0...7,
- zworki konfiguracyjne (zasilanie, BOOT) i mostki lutownicze (SPI, I²C).
Mikrokontrolery Megawin w pigułce
Mikrokontroler MG32F103RBT6 nieprzypadkowo przypomina swoim oznaczeniem niebywale popularny układ z rodziny STM32 o numerze STM32F103RBT6. W istocie jest to tzw. zamiennik pin-to-pin, zapewniający pełną kompatybilność funkcjonalną pod względem rodzaju obudowy oraz układu wyprowadzeń (zarówno w zakresie zasilania, jak i linii GPIO oraz przypisania funkcji alternatywnych) – porównanie obydwu rodzin mikrokontrolerów MG32F103 oraz STM32F103 można zobaczyć w tabeli 1.
Jak widać, zamiennik firmy Megawin oferuje niemal wszystkie bloki peryferyjne (oprócz interfejsów CAN oraz SDIO), które można znaleźć w kultowych procesorach od ST, a dodatkowo przewyższa pierwowzór pod niektórymi względami (np. deklarowany przez producenta pobór prądu jest wyraźnie niższy w trybie aktywnym: 100 μA/MHz zamiast 292 μA/MHz), nieznacznie lepszy jest także parametr poboru energii w trybie Sleep. Niższy pobór prądu jest widoczny również w obszarze domeny backup (rejestry z podtrzymaniem bateryjnym i RTC), zasilanej za pośrednictwem linii VBAT. Co ciekawe, producent zastosował dodatkowo dwa komparatory oraz unikalny sterownik macierzy multipleksowanych diod LED, który – przy użyciu zaledwie 8 linii – jest w stanie wysterować aż 56 diod elektroluminescencyjnych. Takiego peryferium próżno szukać w nie tylko w oryginalnych rozwiązaniach ST, ale także dziesiątkach innych rodzin mikrokontrolerów.
Wspomniane cechy – w połączeniu z kilkukrotnie niższą ceną (zarówno detaliczną, jak i hurtową) – sprawiają, że mikrokontrolery Megawin z rdzeniem ARM Corex-M3 są niezwykle ciekawą alternatywą zarówno dla zawodowych konstruktorów urządzeń elektronicznych, jak i dla amatorów elektroniki. Dlatego właśnie na łamach „Elektroniki Praktycznej” – już w numerze 05/2024 – startujemy z (wszystko na to wskazuje) pierwszym na świecie kursem programowania procesorów ARM marki Megawin. Aby ułatwić naszym Czytelnikom rozpoczęcie pracy z tymi interesującymi układami, w tym wydaniu EP publikujemy opis zestawu ewaluacyjnego, który umożliwi realizację zarówno zadań kursowych, jak i samodzielnych eksperymentów z większością najważniejszych peryferiów wbudowanych w strukturę układu MG32F103RBT6.
Budowa układu
Schemat ideowy płytki ewaluacyjnej zaprezentowano na rysunku 1. Jak widać, zdecydowana większość linii portów mikrokontrolera (U3) została użyta do obsługi elementów dostępnych na płytce, zaś dodatkowo osiem najmłodszych linii portu A (o numerach PA0...PA7) wyprowadzono na złącze typu goldpin (PA). Całość układu jest zasilana napięciem 3,3 V, dostarczonym przez stabilizator LDO (U1) typu LD1117AS33 w obudowie SOT-223. Źródłem napięcia wejściowego regulatora może być złącze śrubowe VEXT (w tej roli popularny terminal typu ARK o rastrze 5 mm) albo port USB, w zależności od ustawienia zworki VSEL. Obecność napięcia zasilania sygnalizuje świecenie zielonej diody LED D3.
Sam port USB jest chroniony za pomocą scalonego układu zabezpieczającego przed wyładowaniami ESD (USBLC6-2SC6, U2), integrującego w sobie zestaw szybkich diod połączonych z liniami pary różnicowej (D+/D–) oraz dodatkową, piątą diodę Zenera, podłączoną do szyny VBUS. Wyprowadzenie VBUS gniazda mini USB (J1) połączone zostało z resztą układu przez dławik ferrytowy (FB1) oraz 100-miliamperowy bezpiecznik PTC (F1).
W układzie przewidziano możliwość zasilania domeny backup mikrokontrolera na jeden z dwóch sposobów. Podczas testowania projektów niekorzystających z funkcjonalności rejestrów podtrzymywanych bateryjnie ani z zegara czasu rzeczywistego RTC użytkownik może pominąć instalację baterii CR2032 w przeznaczonej dla niej podstawce (BT1) i doprowadzić zasilanie do linii VBAT mikrokontrolera bezpośrednio z głównej szyny 3,3 V. W przeciwnym razie należy przestawić zworkę VBATSEL na pozycję VBAT, co umożliwi testowanie ww. funkcjonalności w warunkach rzeczywistych (tj. po odcięciu głównego napięcia zasilającego).
Interfejs HMI tworzy zestaw dwóch przycisków podłączonych do linii GPIO mikrokontrolera, dwie diody LED (także współpracujące bezpośrednio z MCU) oraz siedmiosegmentowy, czteropozycyjny wyświetlacz LED ze wspólną anodą (DS1). Od dołu poszczególne segmenty (katody) są przełączane za pomocą drivera typu TBD62083 (IC1), złożonego z tranzystorów N-MOSFET (Q1...Q4), pracujących w układzie otwartego drenu i wyposażonych w zestaw kilku wbudowanych elementów pasywnych oraz diod zabezpieczających. Od strony wyższego potencjału, tj. w obwodach wspólnych anod, zastosowano natomiast proste klucze tranzystorowe na bazie popularnych MOSFET-ów małej mocy typu BSS84.
Aby umożliwić użytkownikom płytki ewaluacyjnej łatwe przetestowanie funkcjonalności interfejsów SPI oraz I²C, bez konieczności dołączania zewnętrznych modułów, na płytce zamontowano dwa popularne i niedrogie układy scalone. U5 to cyfrowy czujnik temperatury typu MCP9808T, wyposażony w interfejs I²C, natomiast U4 to pamięć EEPROM typu AT25128B, komunikująca się z procesorem za pośrednictwem klasycznego, czteroliniowego łącza SPI, pracującego w trybie full duplex. Pracę przetwornika analogowo-cyfrowego można natomiast sprawdzić potencjometrem POT, połączonym z jedną z linii mikrokontrolera MG32F103RBT6 przeznaczonych do pracy w trybie analogowym.
Przypisanie funkcji do linii GPIO
Aby ułatwić Czytelnikom pisanie programów na prezentowaną w artykule płytkę ewaluacyjną, w tabeli 2 zebrano komplet informacji niezbędnych do prawidłowego skonfigurowania linii GPIO. W przypadku interfejsów szeregowych (SPI, I²C, UART, USB) z oczywistych przyczyn nie podano domyślnych stanów logicznych – są one wszak narzucone przez odpowiednie bloki peryferyjne.
Uwagi dotyczące parametrów elektrycznych GPIO
Warto zwrócić uwagę na istotne różnice pomiędzy parametrami elektrycznymi linii portów GPIO mikrokontrolerów MG32F103 oraz ich „pierwowzoru”, czyli układów z rodziny STM32F103. O ile te drugie oferują całkiem sporą liczbę wyprowadzeń tolerujących pracę przy napięciu 5 V, to układy marki Megawin takiej możliwości nie dają. Z tego też względu zdecydowano się na podłączenie źródeł kluczy tranzystorowych Q1...Q4 do wyjścia stabilizatora LDO, a nie bezpośrednio do głównego napięcia wejściowego 5 V. Choć taki zabieg może wydawać się mało atrakcyjny pod względem termicznym, to znakomicie upraszcza konstrukcję układu, redukuje bowiem konieczność stosowania dodatkowych przesuwników poziomu (bezpośrednie wysterowanie bramek tranzystorów podciągniętych do napięcia 5 V byłoby wszak niemożliwe). Z drugiej strony, przy zastosowanych komponentach teoretyczny wzrost temperatury struktury krzemowej LDO przy pełnym wysterowaniu wyświetlacza (8 segmentów jednocześnie na wszystkich czterech pozycjach) wynosi około 10°C, a zatem można go uznać za efekt pomijalny w praktycznych zastosowaniach.
Słowa komentarza wymaga także obecność drivera typu low-side (IC1). W klasycznych układach sterowania multipleksowanych wyświetlaczy LED segmenty często są sterowane bezpośrednio z linii mikrokontrolera, zaś klucze znajdują się jedynie po stronie wyprowadzeń wspólnych (w tym przypadku – anod). Istotnie, przy zastosowaniu mikrokontrolera STM32F103 byłoby to możliwe, gdyż całkowity prąd maksymalny na liniach zasilania może dochodzić nawet do 150 mA. W przypadku układu marki Megawin limit ten jest przeszło dwukrotnie niższy i wynosi 60 mA – wartość zbliża się zatem niebezpiecznie do sumarycznego prądu ośmiu włączonych jednocześnie segmentów. Stosując układy Megawin (podobnie zresztą, jak i inne zamienniki mikrokontrolerów), należy zatem przestudiować noty katalogowe oraz uwzględnić obecność ewentualnych różnic pomiędzy parametrami poszczególnych układów. Tak czy inaczej, jeżeli urządzenie zaprojektowane zostało prawidłowo (tj. z zachowaniem odpowiednich marginesów bezpieczeństwa), zamiana STM32 na MG32 powinna przebiegać bez większych problemów (rzecz jasna, mówimy tutaj wyłącznie o kwestiach sprzętowych, gdyż różnice w budowie bloków peryferyjnych oraz procedurach ich konfiguracji będziemy omawiać dokładniej na łamach naszego kursu).
Montaż i uruchomienie
Schemat montażowy płytki drukowanej zaprezentowano na rysunku 2, zaś rysunek 3 pokazuje najważniejsze wymiary płytki.
Z wyjątkiem wyświetlacza LED, potencjometru oraz zestawu złączy szpilkowych (goldpin) i gniazda śrubowego VEXT, wszystkie komponenty są montowane powierzchniowo. Prototyp płytki wyprodukowano w technologii lutowania rozpływowego, ale nic nie stoi na przeszkodzie, by całość zmontować ręcznie. Wszystkie komponenty z powodzeniem można bowiem przylutować dobrą lutownicą kolbową (najmniejsze elementy pasywne mają rozmiar 0603), wyjątkiem jest tutaj rezonator kwarcowy XC1, który należy ostrożnie zamontować za pomocą kolby hot-air.
Po zakończeniu montażu oraz dokonaniu niezbędnej inspekcji optycznej można przejść do etapu konfiguracji sprzętowej urządzenia.
Konfiguracja zworek i mostków lutowniczych
W domyślnej konfiguracji należy połączyć mostki lutownicze SB1...SB8, znajdujące się na spodzie płytki drukowanej (rysunek 4), poprzez zalutowanie ich nadmiarową ilością cyny. W ten sposób do mikrokontrolera dołączone zostaną układy przewidziane do testowania interfejsów I²C oraz SPI (czujnik temperatury oraz pamięć EEPROM), przy czym mostki SB7 oraz SB8 odpowiadają za podpięcie rezystorów podciągających na liniach SCL oraz SDA szyny I²C. Złącza I²C oraz SPI można zatem zastosować np. do podłączenia analizatora stanów logicznych, co niebywale ułatwi ewentualne debugowanie kodu i eksperymentowanie z różnymi ustawieniami rejestrów konfiguracyjnych mikrokontrolera.
Czytelnicy, którzy zdecydują się na podłączenie do mikrokontrolera zewnętrznych modułów (np. czujników czy wyświetlacza), mogą bez problemu odłączyć układy U4 i U5, uwalniając linie interfejsów na własne potrzeby poprzez usunięcie cyny z mostków SBx, najlepiej w obecności odpowiednio dużej ilości topnika. Rozłączenie mostków SB7 i SB8 będzie pomocne w przypadku współpracy z modułami wyposażonymi już w odpowiednie rezystory podciągające.
Przed uruchomieniem płytki należy jeszcze odpowiednio ustawić zworki wyboru napięcia do zasilania linii VBAT (rysunek 5) oraz źródła głównego napięcia zasilania (zworka VSEL, rysunek 6).
Dodatkowo, jeżeli zajdzie taka potrzeba, istnieje możliwość skorzystania ze zworek BOOT0 i BOOT1, umożliwiających wybór trybu uruchamiania mikrokontrolera. Wszystkie ustawienia opisanych powyżej mostków lutowniczych oraz zworek zebrano dla ułatwienia w tabelach 3...5.
Podłączenie programatora
Płytka prototypowa w wersji zaprezentowanej na fotografii tytułowej została wyposażona w 4-pinowe gniazdo programatora/debuggera. W ostatecznej wersji PCB zdecydowano się na zmianę złącza na wersję 6-pinową o układzie pinów kompatybilnym z oficjalnym programatorem marki Megawin o nazwie MLink (fotografia 1).
Dzięki temu do podłączenia interfejsu wystarczy zestaw pięciu przewodów, zakończonych wtykami żeńskimi typu Dupont (w ofertach niektórych dystrybutorów można je spotkać pod nazwą BLS). Najlepszym rozwiązaniem będzie użycie 5-żyłowego przewodu płaskiego (taśmowego) oraz wymiana oryginalnych obudów pojedynczych styków na wersje 6-pozycyjne, co wydatnie zredukuje ryzyko nieprawidłowego podłączenia programatora do płytki ewaluacyjnej.
Podsumowanie
Podobnie jak w przypadku każdego mikroprocesorowego zestawu ewaluacyjnego, także tym razem pierwsze uruchomienie nie wiąże się ze szczególnie interesującymi efektami wizualnymi – jedyną oznaką „życia” płytki po podłączeniu zasilania do portu USB lub gniazda VEXT będzie zatem zaświecenie diody D3. Znacznie ważniejsze jest natomiast nawiązanie pierwszej komunikacji z procesorem przy użyciu programatora – tym zagadnieniem zajmiemy się w następnym numerze „Elektroniki Praktycznej”, a dokładniej w pierwszym odcinku kursu, w ramach którego omówimy proces instalacji i konfiguracji środowiska programistycznego, a także napiszemy i wgramy do pamięci procesora pierwszy program testowy.
inż. Przemysław Musz, EP
Autor dziękuje firmie Micros (www.micros.com.pl) za udostępnienie programatora MLink oraz próbek układu MG32F103RBT6 na potrzeby opracowania niniejszego projektu.
- R1...R3, R7...R10, R22, R23: 4,7 kΩ
- R4, R6: 2,2 kΩ
- R5: 470 Ω
- R11...R18: 220 Ω
- R19, R20: 33 Ω
- R21: 1,5 kΩ
- R24, R25: 3,3 kΩ
- C1, C2, C5, C6, C9, C12, C14...C18, C20: 100 nF X7R
- C7, C8: 22 pF C0G
- C10, C11: 12 pF C0G
- C13: 1 μF/6,3V X7R
- C19: 2,2 μF/6,3V X7R
- C3, C4: 4,7 μF/16 V ∅ 4×5,3 mm
- D1, D3: LED zielona (SMD 0805), np. 150080GS75000
- D2: LED czerwona (SMD 0805), np. 150080SS75000
- D4: Schottky'ego SS24BF-HF (SMBF)
- DS1: wyświetlacz LED 4×7 segmentów, wspólna anoda, wys. znaków 0,56” (np. 5641BH)
- F1: bezpiecznik PTC typu SM010-60 (SMD 1210)
- IC1: TBD62083AFWG (P-SOP18)
- Q1...Q4: BSS84 (SOT-23)
- U1: LD1117AS33 (SOT-223)
- U2: USBLC6-2SC6 (SOT-23-6)
- U3: MG32F103RBT6 (LQFP64)
- U4: AT25128B-SSHL-B (SOIC-8)
- U5: MCP9808T-E/MS (MSOP-8)
- FB1, FB2: dławik ferrytowy BLM18BD182BH1D
- BOOT0, BOOT1: złącze goldpin 2,54 mm 1×2 pin męskie proste + zworka (2 szt.)
- BT1: gniazdo baterii CR2032 SMT (TE Connectivity 796136-1)
- DBG, SPI: złącze goldpin 2,54 mm 1×6 pin męskie proste
- I²C: złącze goldpin 2,54 mm 1×4 pin męskie proste
- J1: gniazdo mini USB THT kątowe (np. 65100516121)
- PA: złącze goldpin 2,54 mm 2×4 pin męskie proste
- POT: potencjometr 10 kΩ typu Bourns PTV09A-4225F-B103 lub zamiennik
- RES, SW1, SW2: uSwitch 6×6 mm SMT
- SB1...SB8: mostki lutownicze (opis w tekście)
- VBATSEL, VSEL: złącze goldpin 2,54 mm 1×3 pin męskie proste + zworka (2 szt.)
- UART: złącze goldpin 2,54 mm 1×3 pin męskie proste
- VEXT: złącze śrubowe 2-torowe raster 5 mm (ARK 2)
- XC1: rezonator kwarcowy 12,000 MHz (ABM3B-12.000MHZ-10)
- Y1: rezonator kwarcowy 32,768 kHz (ABS25-32.768KHZ-T)