Programare placă STM32 bluepill în Arduino IDE

 Autor:   Publicat pe:   Actualizat pe:  2019-01-24T18:52:47Z

Adaugă suport pentru STM32 în mediul Arduino IDE și programează placa de dezvoltare "blue pill" cu sau fără bootloader STM32duino.

Blue pill este o placă de dezvoltare cu microcontroller STM32F103. Deși nu este la fel de populară ca Arduino, este mai ieftină și mai performantă. STM32F103 conține un procesor ARM Cortex-M3 ce poate lucra la frecvența maximă de 72 MHz. Mai conține 20 kbyți de memorie RAM și 64 sau 128 kbyți de memorie flash. Are port USB nativ, două porturi seriale, generator PWM pe 16 biți și convertor AD pe 12 biți. Față de Arduino, funcționează la 3,3 V. Totuși, câțiva pini tolerează tensiuni de 5 V.

Programarea plăcii folosind kitul de dezvoltare oficial este dificilă pentru începători. Dar, există posibilitatea programării în mediul Arduino. Înainte de toate, suportul pentru această placă trebuie instalat în Arduino IDE. Dacă vei folosi portul micro USB pentru programare, un bootloader trebuie scris înainte în memoria plăcii. Acest lucru se poate face cu programatorul specific ST-Link sau cu un adaptor USB-serial la 3,3 V. Atât scrierea bootloader-ului, cât și încărcarea ulterioară a schițelor se pot face cu ajutorul acestor dispozitive suplimentare.

Set up STM32 "blue pill" for Arduino IDE

În concluzie, dacă nu vrei să folosești alt dispozitiv pentru încărcarea schiței pe placă (ST-Link, USB-Serial), va trebui să folosești bootloader-ul USB STM32duino. Scrierea acestui bootloader nu se poate face direct prin portul USB. Eu am folosit programatorul ST-Link pentru acest lucru.

Placa de dezvoltare

Verifică placa înainte de conectare la PC. Au fost raportate două probleme cu acestea plăci. În primul rând, mufa micro USB nu este suficient lipită de placa de circuit (pinii de semnal sunt, dar carcasa nu). Aplică fludor pe pinii carcasei, altfel s-ar putea să o smulgi de pe placa de circuit când o vei folosi.

Cealaltă problemă ține de portul USB. Conform specificațiilor, linia de semnal D+ trebuie conectată la 3,3 V printr-un rezistor de 1,5 k. Acel rezistor este R10 și este pe fața opusă a plăcii. Doar că s-ar putea să aibă 10 k (103) sau 4,7 k (472). Unele PC-uri nu vor recunoaște dispozitivul USB în acest caz (atenție: dacă nu e programat, oricum nu va fi recunoscut). Pentru utilizarea fără probleme a portului USB se recomandă rezolvarea acestei probleme. Nu prin dificila înlocuire a unui rezistor SMD cu altul. USB D+ este pe pinul PA12. Tot ce trebuie să faci este să lipești un rezistor de 1,8 k (dacă R10 = 103) sau 2,2 k (dacă R10 = 472) între PA12 și 3.3.

Verifică, de asemenea, la ce pin este conectat LED-ul. Este marcat pe placă, imediat lângă el. Trebuie să știi acest lucru când vei alege bootloader-ul. Jumperul BOOT0 activează modul de programare și permite scrierea memoriei prin port serial sau interfață JTAG/SWD.

Posibile probleme ale plăcii de dezvoltare STM32 blue pill

Posibile probleme ale plăcii de dezvoltare STM32 blue pill

Suport Arduino IDE

Arduino IDE nu include suport implicit pentru acest tip de microcontroller. Va trebui să instalezi pachetul suport Arduino_STM32 de Roger Clark. Accesează File - Preferences și, în caseta text Additional Boards Manager URLs pune următorul link:

http://dan.drown.org/stm32duino/package_STM32duino_index.json

Închide dialogul apăsând OK și du-te la Tools - Boards - Boards Manager. Caută stm32 și instalează pachetul STM32F1xx.

Instalare suport STM32 în Arduino IDE

Instalare suport STM32 în Arduino IDE

După descărcarea fișierelor necesare poți închide dialogul. În meniul Tools vei găsi acum plăci bazate pe STM32.

Fără bootloader

Personal, prefer să încarc schițele cu programatorul ST-Link, fără a folosi bootloader-ul STM32duino. Înainte de scrierea memoriei flash, microcontroller-ul trebuie resetat. Bootloader-ul USB nu reușește să reseteze placa pe Linux.

Programatorul are nevoie de driver. Trebuie să descarci și să instalezi driverul STSW-LINK009. Trebuie să oferi o adresă de e-mail sau să creezi un cont pentru a putea descărca fișierul. Rulează dpinst sau scriptul bat pentru instalare.

Conectarea la programator se face prin 4 fire de conexiune (SWCLK, SWDIO, GND, 3.3V), de la portul existent pe placă. Nu alimenta placa și din altă sursă. Sau nu conecta firul 3.3V al programatorului dacă ai placa deja alimentată prin alt circuit. Setările Arduino IDE sunt următoarele:

Configurare Arduino IDE pentru ST-Link

Configurare Arduino IDE pentru ST-Link

Setarea portului nu are nicio importanță (nu este folosit). La prima încărcare, verifică log-ul din Arduino IDE și caută rândul:

Device flash Size : 128 Kbytes

Asta pentru că nu se știe niciodată ce capacitate are memoria flash. În mod normal STM32F103C8T de pe blue pill are 64 kbyți. Dar multe plăci chinezești sunt detectate cu memorie de 128 kbyți, cum are STM32F103CBT. Diferența stă într-o literă (8 sau B), greu de citit la mărimea imprimată pe capsula chipului. Consideră corect ceea ce detectează programatorul și setează tipul microcontroller-ului în concordanță cu aceasta.

Rareori, încărcarea nu reușește. În această situație trebuie să muți jumperul BOOT0 în poziția 1, să încarci schița, eventual să pui jumperul înapoi și să resetezi manual placa. Tot destul de rar, după încărcare placa nu se resetează, așa că trebuie resetată manual apăsând butonul prezent lângă jumperele galbene.

Dacă folosești Linux, tot ce trebuie să faci ca programatorul să funcționeze este să instalezi reguli udev pentru accesul la dispozitiv. După ce ai instalat pachetul suport STM32 în Arduino IDE vei găsi în ~/.arduino15/packages/stm32duino/tools/stm32tools/<versiune>/linux un script install.sh pe care trebuie să îl rulezi ca administrator.

Cu bootloader USB

Descarcă bootloader-ul STM32duino de pe GitHub. Placa pe care o am are LED-ul conectat la PC13, deci eu am ales: generic_boot20_pc13.bin. Ai nevoie și de utilitarul de programare STSW-LINK004. Trebuie să oferi o adresă de e-mail sau să creezi un cont pentru a putea descărca fișierul. Instalează și lansează STM32 ST-LINK Utility.

ST-Link Utility

ST-Link Utility

Din meniul File alege Open file și selectează bootloader-ul descărcat. Pe placă mută jumperul BOOT0 la 1, conectează programatorul și introdu-l într-un port USB. Conectează-te la programator din meniul Target - Connect și apoi, din același meniu, alege Program & Verify.

Scriere bootloader

Scriere bootloader

După finalizarea scrierii, deconectează placa de la programator, pune jumperul înapoi pe 0, și conectează-o direct printr-un cablu USB - microUSB. Și aici sunt necesare drivere din pachetul Arduino_STM32, folderul drivers/win. Descarcă tot pachetul sau doar driverul de aici și instalează-l.

Configurare Arduino IDE pentru STM32duino

Configurare Arduino IDE pentru STM32duino

De această dată, trebuie să selectezi și portul serial corect (Maple Mini). Acum poți încărca schițe fără probleme. Dacă vei încerca acest lucru pe Linux, placa nu poate fi resetată prin portul serial virtual și încărcarea nu are loc decât dacă reușești să resetezi placa la momentul potrivit.

Mai departe documentează-te despre diferențele față de API-ul Arduino și consultă exemplele fiecărei biblioteci din pachetul Arduino_STM32, folderul STM32F1/libraries.

Niciun comentariu :

Trimiteți un comentariu

Vă recomandăm să citiți regulamentul comentariilor înainte de a scrie un comentariu.