STM32F103 w środowisku Arduino IDE

2019-03-30
STM32F103 w środowisku Arduino IDE

Witam wszystkich zainteresowanych programowaniem procesorów STM w środowisku Arduino IDE. Zapytacie pewnie, dlaczego STM skoro jest Arduino Uno / Mega? Otóż mikrokontrolery te są 8 bit-owe, co wpływa na całość wykonywanego programu, a więc przy większych projektach ich prędkość i moc obliczeniowa może być niewystarczająca. STM32 jak już sama nazwa podpowiada, są 32 bit-owe. Dodatkowo posiadają więcej pamięci FLASH i RAM, przez co można na nich odpalać większe  projekty, dodatkowo częstotliwość taktowania procesora to 72 Mhz (16 Mhz Arduino) i już wspomniane 32bity. Robi wrażenie prawda? STM jak pokazują liczne testy porównawcze, są często nawet 12x szybsze od ATMega328p! STM również kusi bardzo niską ceną jak za to co oferuje, w naszym sklepie ceny zaczynają się już od 13zł za STM32F103, a więc w tak niskiej cenie dostajemy dużo lepszy sprzęt.

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: 
pinout stm 32


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



STM32F103

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 

STM32F103

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".


STM32F103
STM32F103
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). 

STM32F103
STM32F103
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.  



STM32F103


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:


STM32F103
Klikamy NEXT - NEXT





STM32F103


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



STM32F103


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


STM32F103

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
pixelpixelpixelpixel