STM32-logo

STM32F103C8T6 Placă minimă de dezvoltare a sistemului

STM32F103C8T6-Produs-placă-de-dezvoltare-sistem-minimă

Informații despre produs

Modulul STM32F103C8T6 ARM STM32 Minimum System Development Board este o placă de dezvoltare care se bazează pe microcontrolerul STM32F103C8T6. Este proiectat pentru a fi programat folosind IDE-ul Arduino și este compatibil cu diverse clone Arduino, variații și plăci terțe, cum ar fi ESP32 și ESP8266.

Placa, cunoscută și sub numele de Blue Pill Board, funcționează la o frecvență de aproximativ 4.5 ori mai mare decât un Arduino UNO. Poate fi folosit pentru diverse proiecte și poate fi conectat la periferice precum ecrane TFT.

Componentele necesare pentru a construi proiecte cu această placă includ placa STM32, programator FTDI, afișaj color TFT, buton, placă mică, fire, Power Bank (opțional pentru modul de sine stătător) și convertor USB la serial.

Schematic

Pentru a conecta placa STM32F1 la afișajul TFT color 1.8 ST7735 și la un buton, urmați conexiunile pin-la-pin descrise în schemele furnizate.

Configurarea IDE-ului Arduino pentru STM32

  1. Deschideți IDE-ul Arduino.
  2. Accesați Tools -> Board -> Board Manager.
  3. În caseta de dialog cu o bară de căutare, căutați „STM32F1” și instalați pachetul corespunzător.
  4. Așteptați finalizarea procedurii de instalare.
  5. După instalare, placa STM32 ar trebui să fie acum disponibilă pentru selecție în lista de plăci IDE Arduino.

Programarea plăcilor STM32 cu Arduino IDE

De la începuturile sale, Arduino IDE a demonstrat dorința de a susține toate tipurile de platforme, de la clone Arduino și variații ale diferiților producători până la plăci terțe precum ESP32 și ESp8266. Pe măsură ce mai mulți oameni se familiarizează cu IDE-ul, încep să accepte mai multe plăci care nu se bazează pe cipuri ATMEL și pentru tutorialul de astăzi ne vom uita la una dintre astfel de plăci. Vom examina cum să programați placa de dezvoltare STM32F32C103T8 bazată pe STM6 cu Arduino IDE.

STM32F103C8T6-Minimum-System-Development-Board-fig-1

Placa STM32 care va fi utilizată pentru acest tutorial nu este alta decât placa de dezvoltare STM32F103 bazată pe cip STM8F6C32T1, denumită în mod obișnuit „Blue Pill”, în conformitate cu culoarea albastră a PCB-ului său. Blue Pill este alimentat de puternicul procesor STM32F32C103T8 ARM pe 6 de biți, tactat la 72MHz. Placa funcționează la niveluri logice de 3.3 V, dar pinii săi GPIO au fost testați pentru a fi toleranți la 5 V. Deși nu vine cu WiFi sau Bluetooth, precum variantele ESP32 și Arduino, oferă 20KB de RAM și 64KB de memorie flash, ceea ce îl face adecvat pentru proiecte mari. De asemenea, are 37 de pini GPIO, dintre care 10 pot fi utilizați pentru senzori analogici, deoarece au ADC activat, împreună cu alții care sunt activați pentru SPI, I2C, CAN, UART și DMA. Pentru o placă care costă în jur de 3 USD, veți fi de acord cu mine că acestea sunt specificații impresionante. O versiune rezumată a acestor specificații în comparație cu cea a unui Arduino Uno este prezentată în imaginea de mai jos.

STM32F103C8T6-Minimum-System-Development-Board-fig-2

Pe baza specificațiilor de mai sus, frecvența la care funcționează Blue Pill este de aproximativ 4.5 ori mai mare decât un Arduino UNO, pentru tutorialul de astăzi, ca exampdespre cum să folosiți placa STM32F1, o vom conecta la un afișaj TFT de 1.44 inchi și o vom programa pentru a calcula constanta „Pi”. Vom nota cât de mult i-a luat plăcii să obțină valoarea și o comparăm cu timpul necesar unui Arduino Uno pentru a efectua aceeași sarcină.

Componente necesare

Următoarele componente sunt necesare pentru a construi acest proiect;

  • Placa STM32
  • Programator FTDI
  • TFT color
  • Buton de apăsare
  • Placă mică
  • Firele
  • Power Bank
  • Convertor USB la Serial

Ca de obicei, toate componentele folosite pentru acest tutorial pot fi cumpărate din linkurile atașate. Cu toate acestea, banca de alimentare este necesară doar dacă doriți să implementați proiectul într-un mod de sine stătător.

Schematic

  • După cum am menționat mai devreme, vom conecta placa STM32F1 la afișajul TFT color bazat pe ST1.8 de 7735 inchi împreună cu un buton.
  • Butonul va fi folosit pentru a instrui placa să înceapă calculul.
  • Conectați componentele așa cum se arată în schema de mai jos.

STM32F103C8T6-Minimum-System-Development-Board-fig-3

Pentru a face conexiunile ușor de replicat, conexiunile pin-la-pin dintre STM32 și afișaj sunt descrise mai jos.

STM32 – ST7735

STM32F103C8T6-Minimum-System-Development-Board-fig-4

Treceți din nou peste conexiuni pentru a vă asigura că totul este așa cum ar trebui să fie, deoarece tinde să devină puțin complicat. După ce am făcut acest lucru, am procedat la configurarea plăcii STM32 pentru a fi programată cu Arduino IDE.

Configurarea IDE-ului Arduino pentru STM32

  • Ca și în cazul majorității plăcilor care nu sunt realizate de Arduino, trebuie făcută puțină configurare înainte ca placa să poată fi utilizată cu Arduino IDE.
  • Aceasta implică instalarea plăcii file fie prin Arduino Board Manager, fie prin descărcarea de pe internet și copierea files în folderul hardware.
  • Traseul Board Manager este cel mai puțin obositor și din moment ce STM32F1 este printre plăcile listate, vom merge pe acea cale. Începeți prin a adăuga linkul pentru placa STM32 la listele de preferințe Arduino.
  • Du-te la File -> Preferințe, apoi introduceți aceasta URL ( http://dan.drown.org/stm32duino/package_STM32duino_index.json ) în caseta indicată mai jos și faceți clic pe ok.

STM32F103C8T6-Minimum-System-Development-Board-fig-5

  • Now go to Tools -> Board -> Board Manager, it will open a dialogue box with a search bar. Caută STM32F1 and install the corresponding package.

STM32F103C8T6-Minimum-System-Development-Board-fig-6

  • Procedura de instalare va dura câteva secunde. După aceea, placa ar trebui să fie acum disponibilă pentru selecție în lista de plăci Arduino IDE.

Cod

  • Codul va fi scris în același mod în care am scrie orice altă schiță pentru un proiect Arduino, singura diferență fiind modul în care sunt referiți pinii.
  • Pentru a putea dezvolta cu ușurință codul pentru acest proiect, vom folosi două biblioteci care sunt ambele modificări ale bibliotecilor standard Arduino pentru a le face compatibile cu STM32.
  • Vom folosi versiunea modificată a bibliotecilor Adafruit GFX și Adafruit ST7735.
  • Ambele biblioteci pot fi descărcate prin link-urile atașate acestora. Ca de obicei, voi face o scurtă defalcare a codului.
  • Începem codul importând cele două biblioteci pe care le vom folosi.

STM32F103C8T6-Minimum-System-Development-Board-fig-7

  • În continuare, definim pinii STM32 la care sunt conectați pinii CS, RST și DC ai LCD-ului.

STM32F103C8T6-Minimum-System-Development-Board-fig-8

  • Apoi, creăm câteva definiții de culori pentru a ușura utilizarea culorilor după numele lor în cod mai târziu, în loc de valorile lor hexadecimale.

STM32F103C8T6-Minimum-System-Development-Board-fig-9

  • Apoi, setăm numărul de iterații prin care vrem să treacă placa împreună cu durata de reîmprospătare pentru ca bara de progres să fie utilizată.

STM32F103C8T6-Minimum-System-Development-Board-fig-10

  • După aceasta, creăm un obiect al bibliotecii ST7735 care va fi folosit pentru a face referire la afișaj pe parcursul întregului proiect.
  • De asemenea, indicăm pinul STM32 la care este conectat butonul și creăm o variabilă pentru a-și menține starea.

STM32F103C8T6-Minimum-System-Development-Board-fig-11

  • Cu acest lucru făcut, trecem la funcția void setup().
  • Începem prin a seta pinMode() pinului la care este conectat butonul, activând un rezistor intern de tragere pe pin, deoarece butonul se conectează la pământ atunci când este apăsat.

STM32F103C8T6-Minimum-System-Development-Board-fig-12

  • Apoi, inițializam comunicarea serială și ecranul, setând fundalul afișajului în negru și apelând funcția de imprimare () pentru a afișa interfața.

STM32F103C8T6-Minimum-System-Development-Board-fig-13

  • Urmează funcția void loop(). Funcția void loop este destul de simplă și scurtă, datorită utilizării bibliotecilor/funcțiilor.
  • Începem prin a citi starea butonului. Dacă butonul a fost apăsat, eliminăm mesajul curent de pe ecran folosind removePressKeyText() și desenăm bara de progres în schimbare folosind funcția drawBar().
  • Apoi apelăm funcția de calcul de pornire pentru a obține și afișa valoarea lui Pi împreună cu timpul necesar pentru ao calcula.

STM32F103C8T6-Minimum-System-Development-Board-fig-14

  • Dacă butonul nu este apăsat, dispozitivul rămâne în modul Repaus, ecranul solicitând apăsarea unei taste pentru a interacționa cu el.

STM32F103C8T6-Minimum-System-Development-Board-fig-15

  • În cele din urmă, o întârziere este inserată la sfârșitul buclei pentru a acorda puțin timp înainte de a schița „buclele”.

STM32F103C8T6-Minimum-System-Development-Board-fig-16

  • Partea rămasă a codului sunt funcțiile numite pentru a îndeplini sarcinile de la desenarea barei până la calcularea Pi.
  • Cele mai multe dintre aceste funcții au fost acoperite în alte câteva tutoriale care implică utilizarea afișajului ST7735.

STM32F103C8T6-Minimum-System-Development-Board-fig-17STM32F103C8T6-Minimum-System-Development-Board-fig-18STM32F103C8T6-Minimum-System-Development-Board-fig-19STM32F103C8T6-Minimum-System-Development-Board-fig-20STM32F103C8T6-Minimum-System-Development-Board-fig-21STM32F103C8T6-Minimum-System-Development-Board-fig-22

  • Codul complet al proiectului este disponibil mai jos și este atașat în secțiunea de descărcare.

STM32F103C8T6-Minimum-System-Development-Board-fig-23STM32F103C8T6-Minimum-System-Development-Board-fig-24 STM32F103C8T6-Minimum-System-Development-Board-fig-25 STM32F103C8T6-Minimum-System-Development-Board-fig-26 STM32F103C8T6-Minimum-System-Development-Board-fig-27 STM32F103C8T6-Minimum-System-Development-Board-fig-28 STM32F103C8T6-Minimum-System-Development-Board-fig-29 STM32F103C8T6-Minimum-System-Development-Board-fig-30 STM32F103C8T6-Minimum-System-Development-Board-fig-31 STM32F103C8T6-Minimum-System-Development-Board-fig-32 STM32F103C8T6-Minimum-System-Development-Board-fig-33 STM32F103C8T6-Minimum-System-Development-Board-fig-34

Încărcarea codului în STM32

  • Încărcarea schițelor pe STM32f1 este puțin complexă în comparație cu plăcile standard compatibile cu Arduino. Pentru a încărca codul pe placă, avem nevoie de un convertor USB-serial bazat pe FTDI.
  • Conectați convertorul USB la serial la STM32 așa cum se arată în schema de mai jos.

STM32F103C8T6-Minimum-System-Development-Board-fig-35

Iată o hartă pin-la-pin a conexiunii

FTDI – STM32

  • După ce s-a făcut acest lucru, schimbăm apoi poziția jumper-ului de stare a plăcii în poziția unu (așa cum se arată în gif-ul de mai jos), pentru a pune placa în modul de programare.
  • Apăsați butonul de resetare de pe placă o dată după aceasta și suntem gata să încărcăm codul.

STM32F103C8T6-Minimum-System-Development-Board-fig-37

  • Pe computer, asigurați-vă că selectați „Placă generică STM32F103C” și selectați serialul pentru metoda de încărcare, după care puteți apăsa butonul de încărcare.

STM32F103C8T6-Minimum-System-Development-Board-fig-38

  • Odată ce încărcarea este finalizată, schimbați jumperul de stare în poziție „O” Acest lucru va pune placa în modul „rulare” și ar trebui să înceapă să ruleze pe baza codului încărcat.
  • În acest moment, puteți deconecta FTDI și puteți alimenta placa prin USB. În cazul în care codul nu rulează după alimentare, asigurați-vă că ați restaurat corect jumperul și reciclați alimentarea pe placă.

Demo

  • După finalizarea codului, urmați procesul de încărcare descris mai sus pentru a încărca codul în configurația dvs.
  • Ar trebui să vedeți afișajul cum se arată în imaginea de mai jos.

STM32F103C8T6-Minimum-System-Development-Board-fig-39

  • Apăsați butonul pentru a începe calculul. Ar trebui să vedeți bara de progres alunecând treptat până la sfârșit.
  • La sfârșitul procesului, valoarea lui Pi este afișată împreună cu timpul în care a durat calculul.

STM32F103C8T6-Minimum-System-Development-Board-fig-40

  • Același cod este implementat pe un Arduino Uno. Rezultatul este prezentat în imaginea de mai jos.

STM32F103C8T6-Minimum-System-Development-Board-fig-41

  • Comparând aceste două valori, vedem că „Blue Pill” este de peste 7 ori mai rapidă decât Arduino Uno.
  • Acest lucru îl face ideal pentru proiecte care implică procesare grea și constrângeri de timp.
  • Dimensiunea mică a pilulei albastre servește și ca un avanstagAici, deoarece este doar puțin mai mare decât Arduino Nano și poate fi folosit în locuri în care Nano nu va fi suficient de rapid.

Documente/Resurse

STM32 STM32F103C8T6 Placă minimă de dezvoltare a sistemului [pdfManual de utilizare
STM32F103C8T6 Placă de dezvoltare minimă a sistemului, STM32F103C8T6, Placă de dezvoltare minimă a sistemului, Placă de dezvoltare a sistemului, Placă de dezvoltare, Placă

Referințe

Lasă un comentariu

Adresa ta de e-mail nu va fi publicată. Câmpurile obligatorii sunt marcate *