KAmod BlackPico STM32G030 (PL)
From Kamamilabs.com - Wiki

Opis
KAmod BlackPico STM32G030 - Płytka ewaluacyjna z mikrokontrolerem STM32G030 F6P6 Cortex-M0+
Płytka ewaluacyjna KAmod BlackPico STM32G030 zawiera mikrokontroler STM32G030 F6P6 oraz elementy niezbędne do jego uruchomienia. Na płytce znajduje się złącze USB-C do zasilania oraz programowania. Zintegrowany konwerter USB-UART oraz odpowiednio skonfigurowany bootloader umożliwiają programowanie mikrokontrolera zarówno z Arduino IDE jak i poprzez STM32CubeProgrammer.
Podstawowe parametry
- mikrokontroler STM32G030 F6P6: Cortex-M0+, 32 kB Flash, 8 kB RAM, 64 MHz, 1 x ADC 12-bitowy, 5 timerów, 2 x I2C, 2 x SPI, 2 x UART, RTC, CRC, DMA
- złącze USB-C służy jako złącze zasilające, interfejs komunikacyjny USB-UART oraz pozwala na programowanie mikrokontrolera
- 17 wyprowadzeń GPIO oraz linie zasilania 5 V i 3,3 V dostępne na standardowych złączach o rastrze 2,54 mm
- maksymalne obciążenie linii 5 V wynosi 500 mA, natomiast dla linii 3,3 V wynosi 200 mA
- złącze interfejsu programowania/debugowania SWD
- możliwość programowania poprzez STM32CubeProgrammer oraz Arduino IDE
- wymiary płytki: 32,5x23 mm, wysokość ok. 7 mm (bez wlutowanych szpilek goldpin)
Wyposażenie standardowe
| Kod | Opis |
|---|---|
| KAmod BlackPico STM32G030 |
|
Schemat elektryczny
Zasilanie
| Złącze | Funkcja |
|---|---|
| USB-C J1, J2 |
|
Płytka ewaluacyjna KAmod BlackPico STM32G030 może być zasilana na dwa sposoby:
- poprzez odpowiednie styki złączy J1 i J2,
- poprzez złącze USB-C.
Źródło zasilania o napięciu z zakresu 4,5...5,5 V i wydajności min. 100 mA należy dołączyć do styków oznaczonych 5V (plus) oraz GND (minus) na złączu J1. Wtedy na stykach oznaczonych 3,3V dostępne jest stabilizowane napięcie o wartości 3,3 V, które również zasila mikrokontroler. Obecność napięcia 3,3 V jest sygnalizowana świeceniem diody LED oznaczonej PWR.
Do złącza USB-C należy dołączyć standardowe źródło zasilania USB o wydajności min. 100 mA. Wtedy na styku 5V złącza J1 dostępne jest napięcie o wartości bliskiej 5 V (względem masy oznaczonej GND). Niewielki spadek napięcia (ok 0,5 V) występuje na diodzie Schottky’ego, która umożliwia przepływ prądu w kierunku ze złącza USB-C do płytki, ale blokuje przepływ prądu w kierunku przeciwnym - do złącza USB-C. Dzięki temu można bezpiecznie dołączać zasilanie w różnych konfiguracjach - USB i/lub styki J1.

Interfejs USB
| Złącze | Funkcja |
|---|---|
| USB-C |
|
Złącze USB-C jest łatwym sposobem na doprowadzenie zasilania do płytki KAmod BlackPico STM32G030. Ponadto na płytce znajduje się układ CH340C, który realizuje funkcję kontrolera USB połączonego z interfejsem szeregowym UART mikrokontrolera STM32G030. Interfejs UART umożliwia m.in. przesyłanie prostych komunikatów, które można śledzić w dowolnym programie typu Terminal/Serial Monitor.
Sterowniki dla układu CH340 można pobrać ze strony producenta układu: https://www.wch-ic.com/downloads/CH341SER_ZIP.html
Moduł będzie widoczny w systemie, podobnie jak na poniższym obrazku:

Interfejs UART jest połączony do wyprowadzeń PA3 (RX USART2) oraz PA2 (TX USART2). Jeżeli połączenie USB-UART nie jest wymagane w projekcie, to wyprowadzenia PA3 i PA2 można odłączyć od kontrolera USB przecinając zworki oznaczone RX i TX na dolnej stronie płytki.
Interfejs programowania/debugowania SWD
| Złącze | Funkcja |
|---|---|
| J3 |
|
Interfejs SWD (Single Wire Debug) pozwala na programowanie pamięci Flash mikrokontrolera oraz śledzenie działania programu (debugowanie). Wymaga dołączenia zewnętrznego programatora/debuggera np. STLINK-V2 lub STLINK-V3MINIE.
- GND – masa układu,
- SWC – sygnał taktujący SWCLK, współdzielony z wyprowadzeniem PA14,
- SWD – sygnał danych SWDIO, współdzielony z wyprowadzeniem PA13,
- 3,3V – linia zasilania 3,3 V.
Sygnały należy połączyć z takimi samymi sygnałami na złączu programatora/debuggera. Czasami SWCLK jest oznaczony również jako TCK, natomiast SWDIO jest jednocześnie oznaczony jako TMS. Programator nie dostarcza zasilania do płytki KAmod BlackPico STM32G030, zasilanie należy dołączyć do złącza USB-C lub styków J1/J2.
Programowanie mikrokontrolera
| Komponent | Funkcja |
|---|---|
| SW1 – NRST |
|
| SW2 – PROG |
|
| J3 – SWD |
|
| USB – UART |
|
Najprostsza metoda programowania pamięci mikrokontrolera wymaga podłączenia modułu KAmod BlackPico STM32G030 przewodem z wtykiem USB-C do komputera PC.
W specjalnym obszarze pamięci mikrokontrolera znajduje się oprogramowanie umożliwiające zaprogramowanie jego pamięci programu – jest to tzw. bootloader przygotowany przez producenta mikrokontrolera. Mikrokontroler zastosowany w module został tak skonfigurowany, że uruchomienie bootloadera wymaga tylko krótkiego przyciśnięcia przycisku PROG.
W tym stanie moduł jest gotowy do programowania zarówno poprzez STM32CubeProgrammer jak i Arduino:
- W przypadku STM32CubeProgrammer należy wyprać tryb UART, a następnie nacisnąć Connect:
- W przypadku Arduino, należy:
- ustawić Board na Generic STM32G0 series,
- ustawić Board part number na Generic G030F6Px,
- ustawić Upload method na STM32CubeProgrammer(Serial),
- ustawić port komunikacyjny na ten, który odpowiada podłączonemu modułowi (w przekładzie jest to COM12).
Wszystkie ustawienia zostały pokazane na poniższym obrazku:

Jeżeli w Arduino IDE nie widnieją wskazane płytki, to należy dodać poniższy wpis w polu menedżera płytek (Additional boards manager URLs):
https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
Innym sposobem programowania pamięci mikrokontrolera jest dołączenie zewnętrznego programatora, np. STLINK-V2 lub STLINK-V3MINIE do złącza J3 i postępowanie zgodnie z instrukcją użytkowania programatora.
Należy pamiętać, że niektóre wyprowadzenia mikrokontrolera pełnią dwie lub więcej funkcji, które mogą się wzajemnie zakłócać. Oto najistotniejsze z nich:
- SWC/BOOT0/PA14 – sygnał SWC (programowanie/debugowanie) jest jednocześnie sygnałem umożliwiającym uruchomienie bootloadera BOOT0 oraz jest wyprowadzony jako port GPIO PA14
- SWD/PA13 – sygnał SWD (programowanie/debugowanie) jest jednocześnie wyprowadzony jako port GPIO PA13
- PA3 (RX), PA2 (TX) – wyprowadzenia interfejsu UART 2 – RX, TX, który jest połączony z USB są jednocześnie wyprowadzone jako porty GPIO odpowiednio PA3 i PA2
Dodatkowe elementy – przyciski oraz diody LED
| Komponent | Funkcja |
|---|---|
| SW1 – NRST |
|
| SW2 – PROG |
|
| D3 – PWR |
|
| D4 – LED PB3 |
|
Przycisk NRST pozwala wyzerować mikrokontroler, czyli rozpocząć uruchamianie programu od początku, natomiast nie powoduje skasowania pamięci programu.
Przycisk PROG generuje taką sekwencję stanów na wejściach NRST oraz BOOT0, że powoduje uruchomienie bootloadera.
Dioda PWR sygnalizuje obecność napięcia 3,3 V.
Dioda LED PA4 jest dołączona do portu PB3 mikrokontrolera i może być użyta w aplikacji użytkownika.
Złącza GPIO
| Złącze | Funkcja |
|---|---|
| J1, J2 |
|
Złącza GPIO J1 i J2 zawierają po 12 styków, do których doprowadzone są linie zasilania 5 V, 3,3 V, masa GND oraz wyprowadzenia GPIO mikrokontrolera. Porty GPIO PA/PB w większości tolerują napięcie 5 V (5 V tolerant), jednak pełnią różne funkcje, np. interfejs SWD czy wejścia ADC, które zabraniają przekraczania napięcia zasilania mikrokontrolera – 3,3 V. Dokładne funkcje wyprowadzeń oraz ich parametry znajdują się w dokumentacji producenta mikrokontrolera – STM.
Opis wyprowadzeń modułu KAmod BlackPico STM32G030 oraz niektóre ich dodatkowe funkcje pokazują rysunek i tabela poniżej:

Wymiary
Wymiary płytki KAmod BlackPico STM32G030 to 32,5x22,9 mm, a wysokość wynosi ok. 7 mm (bez wlutowanych szpilek goldpin).

Program testowy
//Board: STM32 MCU Based Boards / Generic STM32G0 series
//Board part number: Generic G030F6Px
//Upload metod: STM32 Cube Programmer (Serial)
#define LED_PIN PB3
int message_period = 0;
int port_pwm = 0;
int port_pwm_dir = 0;
//--------------------------------------
void setup() {
Serial.begin(115200);
Serial.println("KAmod BlackPico STM32G030, Hello :)");
pinMode(LED_PIN, OUTPUT);
}
//--------------------------------------
void loop() {
analogWrite(LED_PIN, (255 - port_pwm));
if (port_pwm_dir == 0){
port_pwm += 20;
if (port_pwm >= 150){
port_pwm = 150;
port_pwm_dir = 1;
}
} else {
port_pwm -= 20;
if (port_pwm <= 0){
port_pwm = 0;
port_pwm_dir = 0;
}
}
delay(100);
}