STM32-logo

STM32F103C8T6 Minimum systemudviklingskort

STM32F103C8T6-Minimum-System-Udvikling-Tavle-produkt

Produktinformation

STM32F103C8T6 ARM STM32 Minimum System Development Board Module er et udviklingskort, der er baseret på STM32F103C8T6 mikrocontrolleren. Den er designet til at blive programmeret ved hjælp af Arduino IDE og er kompatibel med forskellige Arduino-kloner, variationer og tredjepartskort som ESP32 og ESP8266.

Tavlen, også kendt som Blue Pill Board, fungerer med en frekvens, der er cirka 4.5 gange højere end en Arduino UNO. Den kan bruges til forskellige projekter og kan tilsluttes periferiudstyr såsom TFT-skærme.

De nødvendige komponenter til at bygge projekter med dette kort inkluderer STM32-kortet, FTDI-programmør, TFT-farveskærm, trykknap, lille brødbræt, ledninger, strømbank (valgfrit til stand-alone-tilstand) og USB til seriel konverter.

skematisk

For at forbinde STM32F1-kortet til det 1.8 ST7735-baserede farvede TFT-skærm og en trykknap skal du følge pin-til-ben-forbindelserne beskrevet i det medfølgende skema.

Opsætning af Arduino IDE til STM32

  1. Åbn Arduino IDE.
  2. Gå til Tools -> Board -> Board Manager.
  3. I dialogboksen med en søgelinje, søg efter "STM32F1" og installer den tilsvarende pakke.
  4. Vent på, at installationsproceduren er fuldført.
  5. Efter installationen skulle STM32-kortet nu være tilgængeligt for valg under Arduino IDE-kortlisten.

Programmering af STM32-kort med Arduino IDE

Siden starten har Arduino IDE demonstreret ønsket om at understøtte alle slags platforme, fra Arduino-kloner og variationer af forskellige producenter til tredjepartskort som ESP32 og ESp8266. Efterhånden som flere mennesker bliver fortrolige med IDE, begynder de at understøtte flere boards, der ikke er baseret på ATMEL-chips, og til dagens tutorial vil vi se på et af sådanne boards. Vi vil undersøge, hvordan man programmerer det STM32-baserede, STM32F103C8T6 udviklingskort med Arduino IDE.

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

STM32-kortet, der skal bruges til denne vejledning, er ingen ringere end det STM32F103C8T6-chip-baserede STM32F1-udviklingskort, der almindeligvis omtales som "Blue Pill" på linje med den blå farve på dets PCB. Blue Pill er drevet af den kraftfulde 32-bit STM32F103C8T6 ARM-processor, clocket til 72MHz. Kortet fungerer på 3.3 V logiske niveauer, men dets GPIO-ben er blevet testet til at være 5 V-tolerante. Selvom det ikke kommer med WiFi eller Bluetooth som ESP32 og Arduino-varianterne, tilbyder det 20KB RAM og 64KB flashhukommelse, hvilket gør det passende til store projekter. Den har også 37 GPIO-ben, hvoraf 10 kan bruges til analoge sensorer, da de har ADC aktiveret, sammen med andre, der er aktiveret til SPI, I2C, CAN, UART og DMA. For et bræt, der koster omkring $3, er du enig med mig i, at det er imponerende specifikationer. En opsummeret version af disse specifikationer sammenlignet med en Arduino Uno er vist på billedet nedenfor.

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

Baseret på specifikationerne ovenfor er frekvensen, hvormed Blue Pill opererer, omkring 4.5 gange højere end en Arduino UNO, for dagens tutorial, som en ex.ampHvis du vil vide, hvordan man bruger STM32F1-kortet, forbinder vi det til en 1.44" TFT-skærm og programmerer det til at beregne "Pi"-konstanten. Vi vil bemærke, hvor lang tid det tog bestyrelsen at opnå værdien, og sammenligne den med den tid, det tager en Arduino Uno at udføre den samme opgave.

Nødvendige komponenter

Følgende komponenter er nødvendige for at bygge dette projekt;

  • STM32 bord
  • FTDI programmør
  • Farve TFT
  • Tryk knap
  • Lille brødbræt
  • Ledninger
  • Power Bank
  • USB til seriel konverter

Som sædvanlig kan alle de komponenter, der bruges til denne tutorial, købes fra de vedhæftede links. Powerbanken er dog kun nødvendig, hvis du ønsker at implementere projektet i en stand-alone tilstand.

skematisk

  • Som tidligere nævnt vil vi forbinde STM32F1-kortet til den 1.8" ST7735-baserede farvede TFT-skærm sammen med en trykknap.
  • Trykknappen vil blive brugt til at instruere bestyrelsen om at starte beregningen.
  • Tilslut komponenterne som vist i skemaet nedenfor.

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

For at gøre forbindelserne nemme at replikere, er pin-til-ben-forbindelserne mellem STM32 og displayet beskrevet nedenfor.

STM32 – ST7735

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

Gennemgå forbindelserne igen for at være sikker på, at alt er, som det skal være, da det har tendens til at blive en lille smule vanskeligt. Med dette gjort fortsatte vi med at konfigurere STM32-kortet til at blive programmeret med Arduino IDE.

Opsætning af Arduino IDE til STM32

  • Som med de fleste boards, der ikke er lavet af Arduino, skal der laves lidt opsætning, før boardet kan bruges med Arduino IDE.
  • Dette indebærer installation af tavlen file enten via Arduino Board Manager eller ved at downloade fra internettet og kopiere files i hardwaremappen.
  • Board Manager-ruten er den mindre kedelige, og da STM32F1 er blandt de listede boards, vil vi gå den vej. Start med at tilføje linket til STM32-kortet til Arduino-præferencelisterne.
  • Gå til File -> Præferencer, indtast derefter dette URL ( http://dan.drown.org/stm32duino/package_STM32duino_index.json ) i boksen som angivet nedenfor, og klik på 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. Søg efter STM32F1 and install the corresponding package.

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

  • Installationsproceduren vil tage et par sekunder. Derefter skulle kortet nu være tilgængeligt til valg under Arduino IDE-kortlisten.

Kode

  • Koden vil blive skrevet på samme måde, som vi ville skrive en hvilken som helst anden skitse til et Arduino-projekt, med den eneste forskel er den måde, stifterne refereres på.
  • For nemt at kunne udvikle koden til dette projekt, vil vi bruge to biblioteker, som begge er modifikationer af standard Arduino Libraries for at gøre dem kompatible med STM32.
  • Vi vil bruge den modificerede version af Adafruit GFX og Adafruit ST7735 bibliotekerne.
  • Begge biblioteker kan downloades via de vedhæftede links. Som sædvanlig vil jeg lave en kort opdeling af koden.
  • Vi starter koden ved at importere de to biblioteker, som vi vil bruge.

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

  • Dernæst definerer vi benene på STM32, som CS-, RST- og DC-benene på LCD'et er forbundet til.

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

  • Dernæst opretter vi nogle farvedefinitioner for at gøre det nemt at bruge farver efter deres navne i koden senere i stedet for efter deres hex-værdier.

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

  • Dernæst indstiller vi antallet af iterationer, vi ønsker, at bestyrelsen skal gennemgå, sammen med opdateringsvarigheden for, at statuslinjen skal bruges.

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

  • Når dette er gjort, opretter vi et objekt af ST7735-biblioteket, som vil blive brugt til at referere til displayet gennem hele projektet.
  • Vi angiver også stiften på STM32, som trykknappen er forbundet til, og opretter en variabel til at holde dens tilstand.

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

  • Når dette er gjort, flytter vi til void setup()-funktionen.
  • Vi starter med at indstille pinMode() for stiften, som trykknappen er forbundet til, og aktiverer en intern pull-up modstand på stiften, da trykknappen forbindes til jorden, når den trykkes ned.

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

  • Dernæst initialiserer vi seriel kommunikation og skærmen, indstiller baggrunden på skærmen til sort og kalder print-funktionen () for at vise grænsefladen.

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

  • Dernæst er void loop()-funktionen. Void loop-funktionen er ganske enkel og kort, takket være brugen af ​​biblioteker/funktioner.
  • Vi starter med at aflæse trykknappens tilstand. Hvis knappen er blevet trykket, fjerner vi den aktuelle besked på skærmen ved hjælp af removePressKeyText() og tegner den skiftende statuslinje ved hjælp af drawBar()-funktionen.
  • Vi kalder derefter startberegningsfunktionen for at opnå og vise værdien af ​​Pi sammen med den tid, det tog at beregne den.

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

  • Hvis der ikke trykkes på trykknappen, forbliver enheden i inaktiv tilstand med skærmen, der kræver, at der trykkes på en tast for at interagere med den.

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

  • Til sidst indsættes en forsinkelse i slutningen af ​​løkken for at give lidt tid før skitsering af "løkker".

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

  • Den resterende del af koden er de funktioner, der kaldes for at udføre opgaverne fra at tegne stregen til at beregne Pi.
  • De fleste af disse funktioner er blevet dækket i flere andre tutorials, der involverer brugen af ​​ST7735-skærmen.

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

  • Den komplette kode for projektet er tilgængelig nedenfor og er vedhæftet under downloadsektionen.

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

Uploader kode til STM32

  • At uploade skitser til STM32f1 er en lille smule kompleks sammenlignet med standard Arduino-kompatible boards. For at uploade kode til kortet har vi brug for en FTDI-baseret, USB-til seriel konverter.
  • Tilslut USB til seriel konverter til STM32 som vist i skemaet nedenfor.

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

Her er et pin-til-ben kort over forbindelsen

FTDI – STM32

  • Når dette er gjort, ændrer vi derefter placeringen af ​​brættets tilstandsjumper til position 1 (som vist i gif'en nedenfor), for at sætte brættet i programmeringstilstand.
  • Tryk på nulstillingsknappen på tavlen én gang efter dette, og vi er klar til at uploade koden.

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

  • På computeren skal du sørge for at vælge "Generisk STM32F103C board" og vælge seriel til uploadmetoden, hvorefter du kan trykke på upload-knappen.

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

  • Når uploaden er fuldført, skal du ændre tilstandsjumperen til position "O" Dette vil sætte boardet i "kør"-tilstand, og det skulle nu begynde at køre baseret på den uploadede kode.
  • På dette tidspunkt kan du afbryde FTDI'en og forsyne kortet over dets USB. Hvis koden ikke kører efter strømforsyning, skal du sikre dig, at du har gendannet jumperen korrekt og genbruge strømmen til kortet.

Demo

  • Når koden er fuldført, skal du følge uploadprocessen beskrevet ovenfor for at uploade koden til din opsætning.
  • Du bør se skærmen komme op som vist på billedet nedenfor.

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

  • Tryk på trykknappen for at starte beregningen. Du bør se statuslinjen glide gradvist indtil slutningen.
  • Ved slutningen af ​​processen vises værdien af ​​Pi sammen med den tid, som beregningen tog.

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

  • Den samme kode er implementeret på en Arduino Uno. Resultatet er vist på billedet nedenfor.

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

  • Ved at sammenligne disse to værdier ser vi, at "Blue Pill" er over 7 gange hurtigere end Arduino Uno.
  • Dette gør den ideel til projekter, der involverer tung bearbejdning og tidsbegrænsning.
  • Den lille størrelse af Blue Pill fungerer også som en advantage her, da den kun er en smule større end Arduino Nano, og den kan bruges på steder, hvor Nano'en ikke vil være hurtig nok.

Dokumenter/ressourcer

STM32 STM32F103C8T6 Minimum System Development Board [pdfBrugermanual
STM32F103C8T6 Minimum System Development Board, STM32F103C8T6, Minimum System Development Board, System Development Board, Development Board, Board

Referencer

Efterlad en kommentar

Din e-mailadresse vil ikke blive offentliggjort. Påkrævede felter er markeret *