Dodaj produkty podając kody
STM32F103 w środowisku Arduino IDE
Spis treści
- Programowanie STM32 w Arduino
- Dodawanie płytek do menedżera płytek - sposób nr 1
- Dodawanie płytek do menedżera płytek - sposób nr 2
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. Moduły Arduino 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 13 zł za STM32F103, a więc w tak niskiej cenie dostajemy dużo lepszy sprzęt.
Programowanie STM32 w Arduino
Pozostaje problem programowania i środowiska. Jednak powiem Wam, że nawet nowicjusze w programowaniu będą mogli skorzystać z tej platformy, programując mikrokontroler 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 konwerter poziomów 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.
Dodawanie płytek do menedżera płytek - sposób nr 1
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 Arduino UART, jak np:
- Konwerter RS232 - FT232 - FTDI USB/TTL - 5V/3,3V - UART - Arduino
- Konwerter USB - RS232/TTL/UART - wyjście 3,3V/5V - CP2102 - Arduino
- Konwerter USB/TTL/UART/RS232 - wyjście 3,3V/5V - PL2303HX - Arduino
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ę...
Dodawanie płytek do menedżera płytek - sposób nr 2
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. :)