STM32F103 w środowisku Arduino IDE
2019-03-30

Pozostaje problem programowania i środowiska. Jednak powiem Wam, że nawet nowicjusze w programowaniu będą mogli skorzystać z tej platformy, programując mikrkontroler w środowisku Arduino IDE. Jak wiemy, środowisko to jest bardzo proste i przyjazne laikom dzięki uproszczeniu komend języka C++. Dodatkowo wybierając to środowisko mamy wgląd w miliony forów, projektów, i pomoc ludzi, dzięki czemu jak nie będziemy czegoś wiedzieć, to zawsze ktoś pomoże. Arduino IDE to nie tylko proste środowisko, gotowe biblioteki, ale i tysiące gotowych projektów, za którymi stoją miliony twórców.
Przejdźmy do naszego dzisiejszego bohatera, czyli STM32 PINOUT:

Jak widzimy, STM32F103 posiada, niektóre piny przystosowane pod logikę 5 V a niektóre tolerują tylko napięcie 3,3 V (na którym pracuje mikrokontroler) - w większości są to piny analogowe. Dobrze przejdźmy dalej, czyli jak przystosować płytkę do środowiska Arduino IDE? I jak programować za pomocą wbudowanego złącza microUSB? Otóż wszystko się da, więc teraz przechodzimy dalej, czyli do dodawania nowej rodziny płytek, do środowiska Arduino IDE.
Są dwie metody dodania płytek do menedżera płytek:
Sposób I:
a) W katalogu Arduino, który domyślnie znajduje się w dokumentach, tworzymy nowy folder o nazwie "hardware"
b) Otwieramy Arduino IDE i wchodzimy w Plik -> Preferencje

c) Wyskoczy nowe okno gdzie na dole w "Dodatkowe adresy URL do menedżera płytek" wklejamy ten adres: http://dan.drown.org/stm32duino/package_STM32duino_index.json

d) Zatwierdzamy nasze zmiany przyciskiem "OK" i przechodzimy do "Narzędzia" -> "Płytka" -> "Menedżer płytek"
Wpisujemy w wyszukiwarkę "stm32f1" wyświetli się wynik jak poniżej, klikamy na niego i wybieramy "Instaluj".


Aby wszystko chodziło poprawnie, należy jeszcze doinstalować biblioteki "Arduino SAM Boards" i "Arduino SAMD Boards" które są domyślnie do pobrania w "Menedżerze płytek" (pierwsze dwie pozycje od góry).


Teraz możemy już wgrać nasz pierwszy program, jednak nie możemy tego zrobić przez złącze Micro USB tylko zewnętrzny konwerter UART, jak np. taki, taki, lub taki, a to inne, jakie jeszcze mamy w naszej ofercie :D Tak podłączamy płytkę z konwerterem:
STM32 | Konwerter |
TX (A9) | RX |
RX (A10) | TX |
5 V (3V3) | 5 V |
GND | GND |
Musimy jeszcze przełożyć zworki na pozycję:
B0 | B1 |
+(1) | -(0) |
Teraz możemy przystąpić do wgrywania programu. W tym celu w zakładce "Narzędzia" wybieramy płytkę "Generic STM32F103C series", "Variant" zależnie od ilości pamięci na naszej płytce (przeważnie 20k RAM, 64k FLASH), "CPU Speed" domyślnie na "72 MHz Normal" i "Upload method" ustawiamy na "Serial". Wybieramy również port, na którym znajduje się konwerter a do niego podłączona płytka.

Teraz można spokojnie programować naszego STM-a, i może zaczniemy tradycyjnie od przykładu "Blink", należy jednak pamiętać, że oznaczenia portów są inne niż w Arduino, jednak zmiana ta jest subtelna i zamiast pinu 13 piszemy PC13 - tak jak podpowiada nam PINOUT na górze strony.
Po zaprogramowaniu powinniśmy przełożyć zwory na pozycję 0:
B0 | B1 |
-(0) | -(0) |
Jednak przyznacie, że takie programowanie jest uciążliwe, trzeba pamiętać o zworkach nie pomylić ich konfiguracji podczas wgrywania i pracy programu - ponieważ to one są odpowiedzialne za tryb programowania przez serial port, a dodatkowo przed wgraniem wcisnąć przycisk RESET, ponieważ w STM-ach przycisk ten kasuje program z pamięci wewnętrznej scalaka.
Jak już wcześniej wspomniałem (żebyście się nie zrazili) jest łatwiejsza metoda programowania, właśnie przez port Micro USB! Jednak w przypadku jego wykorzystania musimy wgrać w mikrokontroler BOOTLOADER. Jak to się robi - już mówię...
Najpierw musimy pobrać sam plik BOOTLOADER-a z Github - https://github.com/rogerclarkmelbourne/STM32d...ter/binaries/generic_boot20_pb12.bin?raw=true
Następnie program przystosowany do pracy z STM-ami, czyli STM Flash Loader - https://www.st.com/content/st_com/en/products...nt-tools/stm32-programmers/flasher-stm32.html
Wystarczy podać maila i pobieramy zupełnie za darmo, jednak dajmy systemowi trochę czasu, ponieważ ja musiałem 2 razy próbować, bo system jeszcze mnie nie dodał...
Następnie przekładamy zworki - i tutaj pocieszenie już przed ostatni raz! :D
B0 | B1 |
+(1) | -(0) |
Odpalamy ściągnięty program, wybieramy port i lecimy dalej:

Klikamy NEXT - NEXT

Następnie wybieramy "Download from file" oraz podajemy ścieżkę do pobranego pliku.bin

Znowu klikamy NEXT i powinien ruszyć pasek postępu i informacja o poprawnie wgranym bootloaderze.

Teraz możemy już pożegnać się z programatorem i podłączyć przewód Micro USB i zmienić oczywiście metodę wgrywania z Serial na "STM32duino bootloader", jednak nie uda nam się wgrać programu, ponieważ komputer nie ma potrzebnych sterowników do tego urządzenia. I co teraz powiecie, tyle pracy na marne... Otóż nie, wystarczy przejść do folderu "hardware" o którym była mowa na początku instalacji i tam utworzyły się nowe tajemnicze pliki. Wchodzimy w katalog "Arduino_STM32-master" -> "drivers" -> "win" i pojawiają się dwa pliki "install_drivers" i "install_STM_COM_drivers" klikamy najpierw jeden, przechodzimy przez proces instalacji..., a potem drugi.
Teraz w zakładce "Port" STM powinien nam się pojawić jako "Maple Mini" i od tego momentu można programować STM-a przez USB, jednak została jeszcze jedna rzecz... pamiętacie jaka? TAK ostatni już raz bawimy się zworkami i dajemy je w konfigurację 0:
B0 | B1 |
-(0) | -(0) |
Mam nadzieję, że pomogłem i odkryjecie potęgę drzemiącą w 32-bit-owych mikrokontrolerach o taktowaniu do 72 Mhz. :)
Pokaż więcej wpisów z
Marzec 2019
Polecane