Dzisiaj jednak nie będę wychwalał tej płytki, lecz opisze jakie trudności napotkałem przystosowując tę płytkę do pracy z Arduino IDE.
1. Hardware
Do przystosowania płytki niezbędny będzie konwerter USB do TTL (inaczej USB do Serial) oraz sama płytka STM32.
Aby zaprogramować płytkę przydatna będzie płytka stykowa oraz przewody.
Łączenie
Płytkę z konwerterem łączymy w następujący sposób :
| STM32 | Konwerter | ---------- | ---------- | TX (A9) | RX | RX (A10) | TX | 5V (3V3) | 5V | GND | GND |
Przed podłączeniem płytki do komputera, przekładamy zworki :
| B0 | B1 | + (1) | - (0) |
2. Software
Osobiście będę pracował na wersji IDE 1.8.5, choć na starszych wersjach ta metoda również działa.
3. Instalacja sposób pierwszy
Najpierw wchodzimy do katalogu "Arduino" z naszymi szkicami i bibliotekami, który domyślnie znajduje się w folderze "Dokumenty".
Po otwarciu folderu "Arduino" musimy stworzyć nowy folder o nazwie "hardware".
Następnie musimy pobrać bibliotekę płytek : https://github.com/rogerclarkmelbourne/Arduino_STM32/archive/master.zip
Plik .zip należy wypakować w folderze "hardware"
Od teraz płytki są do wyboru w zakładce "Narzędzia" w Arduino IDE.
4. Instalacja sposób drugi
W tym sposobie również musimy zrobić folder "hardware", ale na razie zostawiamy go w spokoju.
Następnie w Arduino IDE w zakładce "Plik" wybieramy "Preferencje". Otworzy nam się okno, gdzie na jego dole będziemy mieli pole "Dodatkowe adresy URL do menedżera płytek".
Wklejamy tam link : http://dan.drown.org/stm32duino/package_STM32duino_index.json
Klikamy "Ok" i przechodzimy do zakładki "Narzędzia" --> "Płytka" --> "Menedżer płytek" przy polu wyszukiwania wybieramy "Własne"
Na samym dole będziemy mieli STM32F1XX [...] by stm32duino.
Klikamy na to, wybieramy najnowszą wersję i instalujemy.
Instalacja dodatkowa (dotyczy obu sposobów)
Aby biblioteki płytek działały poprawnie, musimy pobrać bibliotekę płytek "Arduino SAM Boards" i "Arduino SAMD Boards" które są domyślnie do pobrania w "Menedżerze płytek"
5. Wgrywanie programu
Aby wgrać program za pomocą USB-Serial w zakładce "Narzędzia" wybieramy płytkę "Generic STM32F103C series", "Variant" zależnie od ilości pamięci na naszej płytce, "CPU Speed" domyślnie na "72MHz Normal" i "Upload method" ustawiamy na "Serial". Musimy również wybrać port na którym znajduje się nasz konwerter razem z płytką.
Jeśli konwerter jest nowy, świeżo kupiony i nie testowany (a pochodzi z Chin) jest duże prawdopodobieństwo, że nie będziecie mieli żadnego portu do wyboru. Wtedy należy pobrać odpowiednie sterowniki :
http://www.totalcardiagnostics.com/files/PL2303_64bit_Installer.exe
Teraz możesz wgrać program. Zacznijmy od czegoś prostego. Na przykład "Blink", z tym, że nie możemy tak bezpośrednio program przystosowany do Arduino, wgrać do STM32. Na szczęście, różni się tylko oznaczanie pinów, więc zamiast pinu 13 Arduino - PC13 (rozpiska pinów na pin out'cie na górze)
Po zaprogramowaniu powinniśmy przełożyć zworkę :
| B0 | B1 | - (0) | - (0) |
Niestety podczas programowania przez Serial nie ma możliwości automatycznego resetowania mikrokontrolera, więc za każdym razem gdy chcemy wgrać nowy program, musimy przestawić zworkę (która jest odpowiedzialna za tryb programowania przez port szeregowy) i wcisnąć przycisk reset (w płytkach STM32 przycisk reset po prostu kasuje program z pamięci mikrokontrolera)
6. Bootloader
Tylko co teraz? Za każdym razem wyciągać ten konwerter, bawić się w kabelki, zworki, przyciski? Przecież ten port USB musi do czegoś służyć... No właśnie! W tej części zajmiemy się wypalaniem bootloadera na naszej płytce, dzięki któremu będziemy mogli wgrywać programy przez właśnie ten port.
Najpierw musimy pobrać plik .bin w którym zawarty jest nasz bootloader : https://github.com/rogerclarkmelbourne/STM32d...ter/binaries/generic_boot20_pb12.bin?raw=true
A następnie program którym wgramy ten bootloader : https://www.st.com/content/st_com/en/products...nt-tools/stm32-programmers/flasher-stm32.html
W drugim linku zjeżdżamy na sam dół klikamy "Get Software", potwierdzamy e-mail i całkiem za darmo pobieramy program.
Następnie ustawiamy zworki :
| B0 | B1 | + (1) | - (0) |
Włączamy pobrany program.
Wybieramy port.
Powinniśmy dostać informacje, że program znalazł nasz mikrokontroler.
Wybieramy "Download from file" oraz podajemy ścieżkę do pobranego pliku .bin
Na koniec załaduje nam się pasek oraz powinna pojawić się informacja o poprawnie wgranym bootloaderze.
Gdy teraz odłączymy konwerter i podłączymy płytkę do komputera przez kabel USB, oraz spróbujemy wgrać program (wcześniej w zakładce "Narzędzia" zmieniając "Upload method" na "STM32duino bootloader") wykrzaczy nam błąd :
Spoiler:
maple_loader v0.1
Resetting to bootloader via DTR pulse
[Reset via USB Serial Failed! Did you select the right serial port?]
Searching for DFU device [1EAF:0003]...
Assuming the board is in perpetual bootloader mode and continuing to attempt dfu programming...
dfu-util - (C) 2007-2008 by OpenMoko Inc.
Resetting to bootloader via DTR pulse
[Reset via USB Serial Failed! Did you select the right serial port?]
Searching for DFU device [1EAF:0003]...
Assuming the board is in perpetual bootloader mode and continuing to attempt dfu programming...
dfu-util - (C) 2007-2008 by OpenMoko Inc.
W menedżerze urządzeń, płytka powinna pokazywać się jako Maple 3.0 bądź tylko Maple ale bez sterownika / uszkodzona.
Pamiętacie folder "hardware" ? Pora do niego zajrzeć. W folderze "hardware" --> "Arduino_STM32-master" --> "drivers" --> "win" mamy dwa pliki "install_drivers" i "install_STM_COM_drivers" włączamy najpierw jeden, przechodzimy przez proces instalacji, a potem drugi.
Teraz w Arduino IDE w "Narzędzia" w zakładce "Port" płytka powinna pokazywać się jako "Maple Mini". Brawo! Od teraz możesz programować swoją płytkę STM32 za pomocą Arduino IDE przez USB.
Po zainstalowaniu sterowników należy przełożyć zworki na :
| B0 | B1 | - (0) | - (0) |
I nie przekładać ich nawet przy programowaniu. Tak samo przycisk reset, przy programowaniu jest już zbędny.
Problemy
1. Najczęstszym problemem jest brak sterowników do konwertera USB - Serial. Bez niego nie wgramy bootloadera do obsługi USB. Więc jeśli będziesz miał jakiekolwiek problemy, w pierwszej kolejności sprawdź czy masz poprawne sterowniki.
2. Rzadziej, ale też się zdarza, że przy programowaniu przez Serial, zapominamy o przekładaniu zworek / czyszczeniu pamięci przyciskiem reset.
3. Jeśli po wgraniu bootloadera oraz zainstalowaniu sterowników Arduino IDE widzi w Portach twoją płytkę, ale nie może na nią wgrać programu, najwyraźniej miałeś pecha. W chińskich płytkach STM32 zdarza się, że między pinem A12 a 3V3 jest rezystor powyżej 1.5kΩ co uniemożliwia automatyczne resetowanie płytki podczas wgrywania programu przez USB. Aby się upewnić, zmierz miernikiem rezystancję między pinem A12 a 3V3, jeśli jest mniejsza od 1.5kΩ to dobrze. Jeśli natomiast jest większa, należy wymienić rezystor, albo po prostu przylutować rezystor 1kΩ między pin A12 a 3V3.
Źródło : Link
Jest to mój pierwszy artykuł, także konstruktywna krytyka mile widziana.
Mirror plików do pobrania :
Fajne? Ranking DIY
