Actions

KAmod STM32H503 (PL)

From Kamamilabs.com - Wiki

Opis


KAmod STM32H503 - Płytka ewaluacyjna z mikrokontrolerem STM32H503CBU6 Cortex-M33

KAmod STM32H503 jest niewielką płytką ewaluacyjną z mikrokontrolerem STM32H503CBU6. Moduł zawiera elementy niezbędne do uruchomienia mikrokontrolera, rezonatory kwarcowe 8 MHz i 32,768 kHz, złącze USB-C, stabilizator 3,3 V oraz przyciski i diody LED. Na płytce przewidziano również nieobsadzone miejsce na opcjonalną pamięć SPI NOR Flash do samodzielnego wlutowania.

Złącze USB-C może służyć do zasilania, komunikacji USB 2.0 Full Speed oraz programowania mikrokontrolera przez fabryczny bootloader USB DFU. Interfejs SWD wyprowadzono na osobne złącze. Pozostałe sygnały mikrokontrolera są dostępne na dwóch listwach po 20 styków, o rastrze 2,54 mm.

Podstawowe parametry


  • mikrokontroler STM32H503CBU6 w obudowie UFQFPN48:
    • rdzeń Arm Cortex-M33 z FPU i instrukcjami DSP, taktowany do 250 MHz,
    • 128 kB pamięci Flash z ECC,
    • 32 kB pamięci SRAM z ECC oraz 2 kB podtrzymywanej pamięci SRAM,
    • 8 kB pamięci podręcznej instrukcji,
    • 12-bitowy ADC, dwukanałowy 12-bitowy DAC, komparator i wzmacniacz operacyjny,
    • timery 16- i 32-bitowe, RTC, dwa układy watchdog,
    • interfejsy I2C/I3C, USART/LPUART, SPI/I2S, FDCAN oraz USB 2.0 Full Speed,
  • precyzyjny rezonator kwarcowy 8 MHz dla zegara głównego,
  • rezonator 32,768 kHz dla RTC,
  • możliwość dołączenia baterii podtrzymującej RTC,
  • nieobsadzone miejsce U3 na opcjonalną pamięć SPI NOR Flash; W25Q16JV 16 Mbit (2 MB) jest przykładem zgodnego układu,
  • złącze USB-C pracujące w trybie urządzenia,
  • stabilizator 3,3 V MIC5504 o maksymalnym prądzie wyjściowym 300 mA,
  • 33 sygnały GPIO dostępne na złączach P1, P2 i P3; część z nich jest współdzielona z układami płytki,
  • złącze programowania i debugowania SWD,
  • przyciski USER, BOOT i RST,
  • dioda zasilania oraz dioda LED sterowana przez PC13,
  • złącza P1 i P2: po 20 styków, raster 2,54 mm,
  • złącze SWD P3: 4 styki, raster 2,54 mm,
  • wymiary płytki: 53 × 20,75 mm.



Wyposażenie standardowe


Komponent Opis
KAmod STM32H503
  • Zmontowany i uruchomiony moduł


Schemat elektryczny


Zasilanie


Złącze Styki Funkcja
USB-C (J1) VBUS, GND Doprowadzenie napięcia 5 V ze źródła USB
P1

1:+5V2:GND3:+3.3V

Zasilanie płytki lub dostęp do linii zasilających
P2

17:GND18:+5V19:GND20:+3.3V

Zasilanie płytki lub dostęp do linii zasilających
P1 20:VB Wejście baterii podtrzymującej domenę VBAT i RTC

Płytkę najwygodniej zasilać przez USB-C. Napięcie VBUS przechodzi przez diodę Schottky'ego D4 na linię +5V, a następnie przez stabilizator U2 na linię +3.3V. Dioda ogranicza możliwość przepływu prądu z płytki z powrotem do złącza USB.

Alternatywnie można doprowadzić stabilizowane napięcie 5 V do styku +5V jednego ze złączy P1 lub P2 oraz masę do styku GND. Dopuszczalny zakres wejściowy stabilizatora MIC5504 wynosi 2,5...5,5 V, jednak linia oznaczona +5V i urządzenia do niej dołączone są przewidziane do pracy z nominalnym napięciem 5 V. Maksymalny prąd wyjściowy stabilizatora 3,3 V wynosi 300 mA; część tej wartości pobierają mikrokontroler i pozostałe elementy modułu. Po zamontowaniu opcjonalnej pamięci Flash należy uwzględnić również pobierany przez nią prąd.

Styki +3.3V są połączone bezpośrednio z wyjściem stabilizatora i służą przede wszystkim jako wyjście zasilające dla dołączanych układów. Przy zasilaniu płytki bezpośrednio napięciem 3,3 V należy odłączyć USB i linię 5 V oraz zachować parametry zasilania wymagane przez mikrokontroler. Schemat nie zawiera układu separującego zewnętrzne 3,3 V od stabilizatora.

Czerwona dioda D3 sygnalizuje obecność napięcia 3,3 V.


Zasilanie RTC


Wejście VB na styku 20 złącza P1 jest przeznaczone do dołączenia dodatniego bieguna baterii podtrzymującej RTC; biegun ujemny należy połączyć z GND. Układ D1 automatycznie zasila domenę VBAT z linii 3,3 V podczas normalnej pracy, a po zaniku głównego zasilania przełącza ją na baterię. Napięcie na pinie VBAT mikrokontrolera musi mieścić się w zakresie określonym w jego karcie katalogowej (1,2...3,6 V). Należy uwzględnić spadek napięcia na diodzie Schottky'ego D1; typowym wyborem jest bateria litowa 3 V.


Zworka SB1


Otwarta fabrycznie zworka lutowana SB1 jest połączona równolegle do diody D4. Jej zwarcie omija spadek napięcia na diodzie, ale usuwa zabezpieczenie przed przepływem prądu z linii +5V do VBUS złącza USB. W typowym zastosowaniu SB1 powinna pozostać otwarta. Nie należy zwierać SB1, gdy płytka może być jednocześnie zasilana z USB i ze złącza P1 lub P2.



Interfejs USB


Złącze Funkcja
USB-C (J1) Zasilanie 5 V, USB 2.0 Full Speed Device, fabryczny bootloader USB DFU

Mikrokontroler ma zintegrowany kontroler USB 2.0 Full Speed. Linie złącza są połączone bezpośrednio z wyprowadzeniami:

PA11 — USB DM
PA12 — USB DP

Te same sygnały są dostępne odpowiednio na stykach 8 i 9 złącza P2. Gdy używany jest interfejs USB, nie należy obciążać tych styków innymi układami. Rezystory 5,1 kΩ na liniach CC konfigurują złącze USB-C jako urządzenie pobierające zasilanie. Płytka nie zawiera obwodu zasilania VBUS wymaganego do pracy jako host USB, dlatego jest przeznaczona do pracy w trybie Device.

Funkcja USB zależy od oprogramowania mikrokontrolera. Dołączony projekt przykładowy konfiguruje urządzenie CDC ACM, widoczne w komputerze jako wirtualny port szeregowy.


Interfejs programowania i debugowania SWD


Złącze P3 udostępnia interfejs SWD (Serial Wire Debug), który umożliwia programowanie pamięci Flash oraz debugowanie programu przy użyciu zewnętrznego programatora, np. ST-LINK.

Styk P3 Sygnał Funkcja
1 +3.3V Napięcie odniesienia interfejsu programatora
2 PA13/SWDIO Dane SWD
3 PA14SWCLK Zegar SWD
4 GND Masa

Sygnały należy połączyć z odpowiadającymi im sygnałami programatora. Wyprowadzenie 3,3 V służy programatorowi jako odniesienie poziomów logicznych; płytka powinna mieć własne zasilanie, chyba że używany programator jawnie obsługuje zasilanie układu docelowego.


Programowanie mikrokontrolera

Mikrokontroler można programować przez:

  • złącze P3 i interfejs SWD,
  • złącze USB-C i fabryczny bootloader USB DFU,
  • inne interfejsy obsługiwane przez bootloader STM32H503, jeżeli zostaną odpowiednio dołączone do złączy GPIO.
Programowanie przez SWD
  1. Podłącz programator do złącza P3 zgodnie z tabelą pinów.
  2. Zasil płytkę przez USB-C albo linię +5V.
  3. W STM32CubeProgrammer wybierz interfejs ST-LINK i połącz się z mikrokontrolerem.
  4. Wybierz plik programu, zaprogramuj pamięć Flash i wykonaj weryfikację.
Programowanie przez USB DFU

Fabryczny bootloader znajduje się w pamięci systemowej mikrokontrolera i nie jest kasowany podczas zwykłego programowania pamięci Flash. Aby go uruchomić:

  1. Podłącz płytkę przewodem USB-C do komputera.
  2. Naciśnij i przytrzymaj przycisk BOOT (SW2).
  3. Naciśnij i zwolnij przycisk RST (SW3), nadal trzymając BOOT.
  4. Zwolnij BOOT.
  5. W STM32CubeProgrammer wybierz interfejs USB i połącz się z urządzeniem DFU.

Po zaprogramowaniu upewnij się, że przycisk BOOT jest zwolniony, i zresetuj płytkę. Zamiast opisanej sekwencji można również włączyć zasilanie przy wciśniętym przycisku BOOT.

PA13 i PA14 są zajęte przez SWD podczas programowania i debugowania. PA11 i PA12 są zajęte przez USB podczas programowania DFU lub komunikacji USB.



Dodatkowe elementy - przyciski i diody LED

Element Połączenie Funkcja
SW1 / PA0 USER KEY PA0 - aktywny stan niski Przycisk użytkownika; rezystor szeregowy 330 Ω
SW2 BOOT BOOT0 - aktywny stan wysoki Wybór uruchomienia pamięci systemowej/bootloadera
SW3 RST NRST - aktywny stan niski Reset mikrokontrolera
D2 niebieska PC13 - aktywny stan niski Dioda sterowana przez program użytkownika
D3 czerwona +3.3V Sygnalizacja obecności zasilania 3,3 V

Przycisk USER zwiera wejście PA0 do masy. Oprogramowanie powinno włączyć rezystor podciągający wejście do 3,3 V; tak skonfigurowano dołączony projekt przykładowy. Niebieska dioda świeci po ustawieniu na PC13 stanu niskiego.



Pamięć SPI Flash

Pamięć SPI NOR Flash nie jest montowana fabrycznie. Płytka ma nieobsadzone pola U3, na których użytkownik może samodzielnie wlutować zgodny układ o wybranej pojemności. W25Q16JVSS o pojemności 16 Mbit (2 MB), umieszczony na schemacie, jest przykładem obsługiwanego układu, a nie elementem wyposażenia standardowego.

Montowana pamięć musi:

  • być zasilana napięciem 3,3 V,
  • mieć obudowę SOIC-8 o szerokości 208 mil, wymiarach około 5,3 × 5,3 mm i rastrze 1,27 mm,
  • mieć pinout zgodny z rodziną W25Qxx w trybie SPI,
  • obsługiwać standardowe polecenia SPI NOR używane przez oprogramowanie.


Sprzęt nie narzuca pojemności pamięci. Dołączony program testowy używa poleceń z adresem 24-bitowym, dlatego bez modyfikacji oprogramowania może bezpośrednio adresować pierwsze 16 MB pamięci. Układy o większej pojemności mogą wymagać obsługi adresowania 4-bajtowego, jeżeli aplikacja ma korzystać z obszaru powyżej tej granicy.

Pola U3 są połączone z SPI1 mikrokontrolera:

Sygnał pamięci GPIO mikrokontrolera Złącze P1
CS PA4 11
SCK PA5 10
MISO / DO PA6 9
MOSI / DI PA7 8


Wyprowadzenia PA4...PA7 są również dostępne na złączu P1 i trwale połączone z polami U3. Po zamontowaniu pamięci użycie tych linii przez dodatkowy układ wymaga zachowania poprawnych stanów sygnału CS i uwzględnienia obciążenia magistrali.



Złącza GPIO

Złącza P1 i P2 mają po 20 styków w rastrze 2,54 mm. Poziomy logiczne mikrokontrolera wynoszą 3,3 V. Tylko wyprowadzenia oznaczone w karcie katalogowej mikrokontrolera jako FT tolerują napięcie 5 V; nie dotyczy to wszystkich pinów ani trybu analogowego.

Złącze P1
Złącze P2

Pełna lista funkcji alternatywnych oraz informacje o tolerancji napięć znajdują się w karcie katalogowej STM32H503CB.

Zworki SB2 (PC14) i SB3 (PC15)

Wyprowadzenia PC14 i PC15 mikrokontrolera są używane przez rezonator 32,768 kHz. Otwarta zworka SB2 odłącza PC14 od styku 18 złącza P1, a otwarta zworka SB3 odłącza PC15 od styku 17. Zwarcie zworek udostępnia na złączu sygnały oscylatora, ale dodaje do nich pojemność przewodów i dołączonych układów, co może zakłócić pracę rezonatora. W typowym zastosowaniu RTC obie zworki powinny pozostać otwarte.


Wymiary

Wymiary płytki KAmod STM32H503 wynoszą 53 × 20,75 mm.


Program testowy

Katalog KAmod_STM32H503 zawiera przykładowy projekt dla STM32CubeIDE. Projekt korzysta z STM32CubeH5 HAL, systemu ThreadX i stosu USBX. Po uruchomieniu płytka zgłasza się jako urządzenie USB CDC ACM, czyli wirtualny port szeregowy. W systemie Linux jest to zwykle /dev/ttyACM0; w systemie Windows urządzenie otrzymuje numer portu COM. Ustawienie prędkości transmisji jest dla USB CDC umowne — można wybrać 115200 bit/s, 8N1.

Komendy należy wpisywać wielkimi literami i kończyć klawiszem Enter. Polecenie HELP wyświetla ich listę.

Komenda Działanie
HELP Wyświetla listę komend
RTC GET Odczytuje datę i czas RTC
RTC SET YYYY-MM-DD HH:MM:SS Ustawia datę i czas RTC
RTC INIT Jednorazowo ustawia wartość początkową RTC
LED ON, LED OFF Steruje niebieską diodą na PC13
BTN GET Odczytuje stan przycisku USER na PA0
FLASH ID Odczytuje identyfikator JEDEC opcjonalnej pamięci Flash
FLASH STATUS Odczytuje rejestr statusu opcjonalnej pamięci Flash
FLASH TEST Kasuje sektor, zapisuje i weryfikuje 256 bajtów; wymaga zamontowanej pamięci
REBOOT Resetuje mikrokontroler

Uwaga: Polecenia FLASH ... wymagają samodzielnie zamontowanej, zgodnej pamięci SPI NOR. FLASH TEST niszczy wcześniejszą zawartość sektora 4 kB rozpoczynającego się pod adresem 0x010000.


Szczegółowy opis protokołu i odpowiedzi znajduje się w pliku UART_CLI_COMMANDS.md.


Sprawdzanie i synchronizacja RTC z komputerem

Skrypt [`tools/rtc_sync.py`](tools/rtc_sync.py) komunikuje się z programem testowym przez USB CDC. Odczytuje czas mikrokontrolera poleceniem RTC GET, porównuje go z lokalnym czasem komputera i - jeśli różnica przekracza ustawiony próg — wysyła polecenie RTC SET. Po synchronizacji ponownie odczytuje RTC i sprawdza wynik.

Skrypt wymaga Pythona 3 i pakietu pyserial:

python3 -m pip install pyserial


Przykładowe uruchomienie w systemie Linux:

python3 tools/rtc_sync.py --port /dev/ttyACM0


W systemie Windows jako port należy podać nazwę przydzieloną urządzeniu, na przykład:

python tools/rtc_sync.py --port COM5


Domyślnie akceptowana różnica wynosi 2 sekundy. Najważniejsze opcje programu:

Opcja Znaczenie
--port PORT Port urządzenia; domyślnie /dev/ttyACM0
--baud N Umowna prędkość portu CDC; domyślnie 115200
--threshold S Maksymalna akceptowana różnica czasu w sekundach; domyślnie 2.0
--timeout S Limit czasu odpowiedzi na jedną komendę; domyślnie 3.0
--dry-run Tylko porównuje czas, bez zmiany RTC
--no-initial-drain Nie usuwa oczekujących komunikatów po otwarciu portu



Przykład samego sprawdzenia czasu z progiem 0,5 sekundy:

python3 tools/rtc_sync.py --port /dev/ttyACM0 --threshold 0.5 --dry-run


Program zwraca kod 0, gdy różnica mieści się w progu, kod 1, gdy po sprawdzeniu nadal jest zbyt duża, oraz kod 2 w przypadku błędu komunikacji, braku pakietu pyserial albo nieprawidłowej odpowiedzi urządzenia.



Linki