UM2300 X-CUBE-SPN14 Utvidgning av programvara för stegmotordrivrutin för STM32Cube Användarmanual
Introduktion
X-CUBE-SPN14 expansionspaket för STM32Cube ger dig full kontroll över stegmotorns funktioner.
När den kombineras med ett eller flera X-NUCLEO-IHM14A1-expansionskort tillåter denna programvara ett kompatibelt STM32 Nucleo-utvecklingskort att styra en eller flera stegmotorer.
Den är byggd ovanpå STM32Cube mjukvaruteknik för enkel portabilitet över olika STM32 mikrokontroller.
Programvaran kommer med somample implementering för en stegmotor. Den är kompatibel med NUCLEO-F401RE, NUCLEOF334R8, NUCLEO-F030R8 eller NUCLEO-L053R8 utvecklingskort med ett X-NUCLEO-IHM14A1 expansionskort monterat ovanpå.
RELATERADE LÄNKAR
Besök STM32Cube-ekosystemet web sida på www.st.com för mer information
Akronymer och förkortningar
Tabell 1. Lista över akronymer
Akronym |
Beskrivning |
API |
Gränssnitt för applikationsprogrammering |
BSP |
Styrelsestödspaket |
CMSIS |
Cortex® mikrokontroller mjukvarugränssnitt standard |
HAL |
Hårdvaruabstraktionslager |
ID |
Integrerad utvecklingsmiljö |
LED |
Ljusdiod |
Överview
Mjukvarupaketet X-CUBE-SPN14 utökar funktionaliteten hos STM32Cube. Dess nyckelfunktioner inkluderar:
- Ett drivrutinslager för fullständig hantering av STSPIN820-enheten (lågeffektstegmotordrivrutin) integrerad i expansionskortet X-NUCLEO-IHM14A1
- Enhetsparameterläs- och skrivlägen, GPIO-, PWM- och IRQ-konfiguration, mikrostepping, riktningsposition, hastighet, acceleration, retardation och vridmomentkontroller, automatisk fullstegsomkopplarhantering; hög impedans eller håll stoppläge val, aktivera och standby-hantering
- Felavbrottshantering
- Enkel stegmotorstyrningample ansökan
- Enkel portabilitet över olika MCU-familjer, tack vare STM32Cube
- Gratis, användarvänliga licensvillkor
Programvaran implementerar pseudoregister och rörelsekommandon genom att:
- konfigurera timers som används för att generera stegklocka och voltage referens
- hantera enhetsparametrar som acceleration, retardation, min. och max. hastighet, positioner vid hastighet profile gränser, markeringsposition, mikrostegningsläge, riktning, rörelsetillstånd, etc.
Programvaran hanterar en STSPIN820-enhet.
Vid varje tick-timerpulsslut exekveras en återuppringning för att anropa stegklockhanteraren som styr motorns rörelse
genom att hantera:
- rörelsestatus (t.ex. stoppa motorn vid måldestinationen)
- motorriktning via GPIO-nivå
- relativ och absolut motorisk position i mikrosteg
- hastigheten genom noll, positiv och negativ acceleration
Hastigheten ställs in genom att variera stegklockfrekvensen och, valfritt, stegläget när den automatiska fullstegsväxlingsfunktionen är aktiverad. Timern som används för stegklockan är konfigurerad i utgångsjämförelseläge. Ett nytt infångningsjämförelseregistervärde beräknas vid varje stegklockhanterareanrop för att uppnå frekvensstyrning.
Hastigheten är en linjär funktion av stegklockfrekvensen för ett givet mikrostegläge, som kan varieras av programvaran från fullt till 1/256:e steg.
För att använda STSPIN820-drivrutinsbiblioteket måste du köra initieringsfunktionen som:
- ställer in de nödvändiga GPIO:erna för att aktivera bryggorna och hantera felstift EN\FAULT, dedikerat MODE1,
MODE2 och MODE3 stegvalsstift, DIR-stiftet för motorriktning, DECAY-stiftet för decay-läge
val och standby-återställningsstiftet STBY\RESET; - ställer in timern i utgångsjämförelseläge för STCK-stiftet och timerreferensvolymentage generation i PWM-läge för REF-stift;
- laddar drivrutinsparametrarna med värden från stspin820_target_config.h eller definierade i huvudfunktionen med hjälp av en dedikerad initieringsstruktur.
Drivrutinsparametrar kan ändras efter initiering genom att anropa specifika funktioner. Du kan också skriva återuppringningsfunktioner och bifoga dem till: - flaggavbrottshanteraren för att utföra vissa åtgärder när en överström eller ett termiskt larm rapporteras
- felhanteraren som anropas av biblioteket när den rapporterar ett fel. Efterföljande rörelsekommandon inkluderar:
- BSP_MotorControl_Move för att flytta ett givet antal steg i en specifik riktning
- BSP_MotorControl_GoTo, BSP_MotorControl_GoHome, BSP_MotorControl_GoMark för att gå till en specifik position med den kortaste vägen
- BSP_MotorControl_CmdGoToDir för att gå i en specifik riktning till en specifik position
- BSP_MotorControl_Kör för att köras på obestämd tid
Hastighetsproffsetfile hanteras helt av mikrokontrollern. Motorn börjar röra sig vid BSP_MotorControl_SetMinSpeed minimihastighetsinställningen, som sedan ändras vid varje steg av
BSP_MotorControl_SetAcceleration accelerationsvärde.
Om målpositionen för ett rörelsekommando är tillräckligt långt, utför motorn en trapetsformad rörelse genom att:
- accelererar med enhetens accelerationsparameter
- förblir stadig vid BSP_MotorControl_SetMaxSpeed maxhastighet
- retarderar med BSP_MotorControl_SetDeceleration
- stannar vid måldestinationen
Om målpositionen är för nära för att motorn ska nå maximal hastighet, utför den en triangulär rörelse som involverar: - acceleration
- retardation
- stannar vid måldestinationen
Ett rörelsekommando kan stoppas när som helst med BSP_MotorControl_SoftStop som gradvis minskar hastigheten med hjälp av retardationsparametern eller kommandot BSP_MotorControl_HardStop som omedelbart stoppar motorn. Kraftbryggan avaktiveras automatiskt när motorn stannar om HIZ_MODE-stoppläget tidigare var inställt (BSP_MotorControl_SetStopMode).
Riktning, hastighet, acceleration och retardation kan ändras antingen när motorn stoppas eller när rörelsen begärs via BSP_MotorControl_Run.
För att blockera nya kommandon innan de har slutförts, låser BSP_MotorControl_WaitWhileActive programexekveringen tills motorn stannar.
BSP_MotorControl_SelectStepMode kan ändra stegläget från fullt till 1/256:e steg. När stegläget ändras återställs enheten och aktuell position och hastighet.
Arkitektur
Denna mjukvaruexpansion överensstämmer helt med STM32Cube-arkitekturen och utökar den för att möjliggöra utveckling av applikationer som använder stegmotordrivrutiner.
Figur 1. X-CUBE-SPN14 mjukvaruarkitektur
Mjukvaran är baserad på STM32CubeHAL hardare abstraktionsskikt för STM32 mikrokontroller. Paketet utökar STM32Cube med ett kortstödspaket (BSP) för motorstyrningsexpansionskortet och en BSP-komponentdrivrutin för STSPIN820 low voltage stegmotorförare.
Programvaruskikten som används av applikationsmjukvaran är:
- STM32Cube HAL-lager: en enkel, generisk och multi-instans uppsättning API:er (applikationsprogrammeringsgränssnitt)
för att interagera med övre applikations-, biblioteks- och stacklager. Den består av generiska och förlängnings-API: er
på en gemensam arkitektur så att lager som är byggda på den, såsom mellanvarulagret, kan fungera utan att kräva specifika hårdvarukonfigurationer för mikrokontrollerenheter (MCU). Denna struktur förbättrar bibliotekskodens återanvändbarhet och garanterar enkel portabilitet på andra enheter.
Styrelsestödpaket (BSP) lager: stöder kringutrustningen på STM32 Nucleo-kortet, med undantag för
MCU. Denna begränsade uppsättning API:er tillhandahåller ett programmeringsgränssnitt för vissa kortspecifika kringutrustning som LED och användarknappen, och hjälper till att identifiera den specifika kortversionen. Motorstyrningen BSP tillhandahåller programmeringsgränssnittet för olika motordrivarkomponenter. Den är associerad med BSP-komponenten för STSPIN820-motordrivrutinen i programvaran X-CUBE-SPN14.
Mappstruktur
Programvaran finns i två huvudmappar:
- Drivrutiner, med:
- STM32Cube HAL files i undermapparna STM32L0xx_HAL_Driver, STM32F0xx_HAL_Driver, STM32F3xx_HAL_Driver eller STM32F4xx_HAL_Driver. Dessa files är hämtade direkt från STM32Cube-ramverket och inkluderar endast de som krävs för att köra motordrivrutinen examples.
- en CMSIS-mapp med CMSIS (Cortex® microcontroller software interface standard), leverantörsoberoende hårdvaruabstraktionslager för Cortex-M-processorserien från ARM. Denna mapp är också oförändrad från STM32Cube-ramverket.
- en BSP-mapp med koden files för X-NUCLEO-IHM14A1-konfiguration, STSPIN820-drivrutinen och motorstyrnings-API.
- Projekt, som innehåller flera användning examples av STSPIN820-motordrivrutinen för olika STM32 Nucleo-plattformar.
BSP-mapp
X-CUBE-SPN14-programvaran inkluderar BSP:erna som beskrivs i följande underavsnitt.
STM32L0XX-Nucleo/STM32F0XX-Nucleo/STM32F3XX Nucleo/STM32F4XX-Nucleo BSPs
Dessa BSP:er tillhandahåller ett gränssnitt för varje kompatibelt STM32 Nucleo-utvecklingskort för att konfigurera och använda dess kringutrustning med X-NUCLEO-IHM14A1-expansionskortet. Varje undermapp har två.c/.h file par:
- stm32XXxx_nucleo.c/h: dessa omodifierade STM32Cube-ramverk files ger användarknapp och LED-funktioner för det specifika STM32 Nucleo-kortet.
- stm32XXxx_nucleo_ihm14a1.c/h: dessa files är dedikerade till konfigurationen av PWM:erna, GPIO:erna och avbrottsaktivering/inaktivering som krävs för X NUCLEO-IHM14A1 expansionskortdrift.
Motorstyrning BSP
Denna BSP tillhandahåller ett gemensamt gränssnitt för åtkomst till drivrutinsfunktionerna för olika motordrivrutiner, såsom L6474, powerSTEP01, L6208 och STSPIN820, via MotorControl/motorcontrol.c/h file par.
Dessa files definierar alla drivrutinskonfigurations- och kontrollfunktioner, som sedan mappas till funktionerna för motordrivrutinskomponenten som används på det givna expansionskortet via motorDrv_t-strukturen file (definieras i Components\Common\motor.h.). Denna struktur definierar en lista med funktionspekare som fylls under dess instansiering i motsvarande motordrivarkomponent. För X-CUBE-SPN14 kallas strukturen stspin820Drv (se file: BSP\Components\stspin820\stspin820.c).
Eftersom motorstyrningen BSP är gemensam för alla motordrivrutinexpansionskort är vissa funktioner inte tillgängliga för ett givet expansionskort. Otillgängliga funktioner ersätts av nollpekare under instansieringen av motorDrv_t-strukturen i drivrutinskomponenten.
STSPIN280 BSP komponent
STSPIN820 BSP-komponenten tillhandahåller drivrutinsfunktionerna för STSPIN820-motordrivrutinen i mappen
stm32_cube\Drivers\BSP\Components\STSPIN820.
Denna mapp har 3 files:
- stspin820.c: kärnfunktionerna i STSPIN820-drivrutinen
- stspin820.h: deklaration av STSPIN820-drivrutinsfunktionerna och deras tillhörande definitioner
- stspin820_target_config.h: fördefinierade värden för STSPIN820-parametrarna och för motorenhetskontexten
Projektmapp
För varje STM32 Nucleo-plattform, ett exampLe-projektet är tillgängligt i stm32_cube\Projects\Multi\Examples\MotionControl\:
- IHM14A1_ExampleFor1Motor examples av styrfunktioner för enmotorkonfigurationer
Example har en mapp för varje kompatibel IDE:
- EWARM för IAR Embedded Workbench
- MDK-ARM för ARM/Keil µVision
- STM32CubeIDE för integrerad utvecklingsmiljö för STM32
Följande kod files ingår också:
- inc\main.h: Huvudhuvud file
- inc\ stm32xxxx_hal_conf.h: HAL-konfiguration file
- inc\stm32xxxx_it.h: rubrik för avbrottshanteraren
- src\main.c: huvudprogram (kod för example baserad på motorstyrningsbiblioteket för STSPIN820)
- src\stm32xxxx_hal_msp.c: HAL-initieringsrutiner
- src\stm32xxxx_it.c: avbrottshanterare
- src\system_stm32xxxx.c: systeminitiering
- src\clock_xx.c: klockinitiering
Programvara som krävs resurser
MCU-kontroll av en enda STSPIN820 (ett X-NUCLEO IHM14A1-kort) och kommunikation mellan de två hanteras genom sju GPIO:er (STBY\RESET, EN\FAULT, MODE1, MODE2, MODE3, DIR, DECAY-stift) och en PWM för REF-stift . GPIO för STCK-stiftet är konfigurerat för att användas som en alternativ funktion för TIMER OUTPUT COMPARE.
För hantering av överström och övertemperaturlarm använder programvaran X-CUBE-SPN14 ett externt avbrott konfigurerat på GPIO:n som används för EN\FAULT-stiftet, efter att den har aktiverat eller inaktiverat kraftbryggorna.
Tabell 2. Nödvändiga resurser för programvaran X-CUBE-SPN14
Resurser F4xx |
Resurser F3xx | Resurser F0xx | Resurser L0xx | Stift | Funktioner (bräda) |
Port A GPIO 10
EXTI15_10_IRQn |
Port A GPIO 10
EXTI15_10_IRQn |
Port A GPIO 10
EXTI4_15_IRQn |
Port A GPIO 10
EXTI4_15_IRQn |
D2 |
SV/FAULT (SV) |
Port B GPIO 3 Timer2 Ch2 |
Port B GPIO 3
Timer2 Ch2 |
Port B GPIO 3
Timer15 Ch1 |
Port B GPIO 3
Timer2 Ch2 |
D3 |
STCK
(CLK) |
Port B GPIO 4 |
D5 |
FÖRFALL
(DEC) |
|||
Port A GPIO 8 |
D7 |
RIKTNING (DIR) |
|||
Port A GPIO 9 |
D8 |
STBY/ÅTERSTÄLL (STBY) |
|||
Port C GPIO 7 Timer3 Ch2 |
Port C GPIO 7
Timer3 Ch2 |
Port C GPIO 7
Timer3 Ch2 |
Port C GPIO 7
Timer22 Ch2 |
D9 |
PWM REF
(REF) |
Port A GPIO 7 |
D11 |
LÄGE 3
(M3) |
|||
Port A GPIO 6 |
D12 |
LÄGE 2 (M2) |
|||
Port A GPIO 5 |
D13 |
LÄGE 1 (M1) |
API:er
X-CUBE-SPN14 API definieras i motorstyrningen BSP. Dess funktioner innehåller prefixet "BSP_MotorControl_".
Notera: Inte alla funktioner i denna modul är tillgängliga för STSPIN820 och därmed X-NUCLEO-IHM14A1 expansionskortet.
Fullständiga användar-API-funktioner och parameterbeskrivningar kompileras i en HTML file i mappen Software Documentation.
Sampapplikationsbeskrivningen
Ett exampEn applikation som använder X-NUCLEO-IHM14A1-expansionskortet med ett kompatibelt STM32 Nucleo-utvecklingskort finns i projektkatalogen, med färdiga att bygga för flera IDE:er (se avsnitt 2.3.2 Projektmapp).
Systeminstallationsguide
Maskinvarubeskrivning
- STM32 Nucleo
STM32 Nucleo-utvecklingskort ger ett prisvärt och flexibelt sätt för användare att testa lösningar och bygga prototyper med vilken STM32-mikrokontrollerlinje som helst.
Arduino-anslutningsstödet och ST morpho-anslutningarna gör det enkelt att utöka funktionaliteten
STM32 Nucleo öppen utvecklingsplattform med ett brett utbud av specialiserade expansionskort att välja mellan.
STM32 Nucleo-kortet kräver inga separata sonder eftersom det integrerar ST-LINK/V2-1 debugger/
programmerare.
STM32 Nucleo-kortet levereras med det omfattande STM32-programvaran HAL-biblioteket tillsammans med olika paketerade mjukvaror t.ex.amples för olika IDE:er (IAR EWARM, Keil MDK-ARM, STM32CubeIDE, mbed och GCC/ LLVM).
Alla STM32 Nucleo-användare har fri tillgång till mbeds onlineresurser (kompilator, C/C++ SDK och utvecklare
community) på www.mbed.org för att enkelt bygga kompletta applikationer.
Figur 3. STM32 Nucleo-kort
- X-NUCLEO-IHM14A1 expansionskort för stegmotordrivrutin
X-NUCLEO-IHM14A1 motordrivrutinexpansionskortet är baserat på STSPIN820 monolitisk drivrutin för stegmotorer.
Den representerar en prisvärd, lättanvänd lösning för att driva stegmotorer i ditt STM32 Nucleo-projekt, implementera motordrivningsapplikationer som 2D/3D-skrivare, robotteknik och säkerhetskameror.
STSPIN820 implementerar en PWM-strömkontroll med konstant AV-tid justerbar via ett externt motstånd och en mikrostegningsupplösning upp till det 256:e steget.
X-NUCLEO-IHM14A1-expansionskortet är kompatibelt med Arduino UNO R3-kontakten och ST morpho-kontakten, så det kan anslutas till STM32 Nucleo-utvecklingskortet och staplas med ytterligare X-NUCLEO-expansionskort.
- Diverse hårdvarukomponenter
För att slutföra hårdvaruinstallationen behöver du:- 1 bipolär (7 till 45 V) stegmotor
- en extern likströmskälla med två elkablar för X-NUCLEO-IHM14A1-kortet
- en USB-kabel av typ A till mini-B för att ansluta STM32 Nucleo-kortet till en PC
- Programvarukrav
Följande mjukvarukomponenter behövs för att ställa in en lämplig utvecklingsmiljö för
skapa applikationer baserade på motordrivrutinen expansionskort:- X-CUBE-SPN14 STM32Cube expansion för STSPIN820 låg voltage stegmotor förare applikationsutveckling. X-CUBE-SPN14 firmware och relaterad dokumentation finns tillgänglig på www.st.com.
- En av följande utvecklingsverktygskedja och kompilatorer:
- Keil RealView Microcontroller Development Kit (MDK-ARM) verktygskedja V5.27
- IAR Embedded Workbench för ARM (EWARM) verktygskedja V8.50
- Integrerad utvecklingsmiljö för STM32 (STM32CubeIDE)
Installation av hårdvara och mjukvara
Inställning för att driva en enda motor
Konfigurera följande byglar på STM32 Nucleo-kortet:
- JP1 av
- JP5 (PWR) på UV5-sidan
- JP6 (IDD) på
Konfigurera X-NUCLEO-IHM14A1 expansionskort så här: - Ställ in R7-potentiometern till 1 kΩ.
- Ställ S1, S2, S3 och S4 omkopplare till neddragningssidan som i figur 4. X-NUCLEO-IHM14A1 stegmotor
expansionskort för drivrutiner. Mikrostegsläget väljs genom MODE1, MODE2 och MODE3
nivåer som kontrolleras av STM32 Nucleo-kortet.
När kortet är korrekt konfigurerat: - Anslut X-NUCLEO-IHM14A1-expansionskortet ovanpå STM32 Nucleo-kortet via Arduino UNO-kontakterna
- Anslut STM32 Nucleo-kortet till en PC med USB-kabeln via USB-kontakten CN1 för att driva kortet
- Slå på X-NUCLEO-IHM14A1-expansionskortet genom att ansluta Vin- och Gnd-kontakter till en likströmskälla
- Anslut stegmotorn till X-NUCLEO IHM14A1 bryggkontakter A+/- och B+/-
När systeminstallationen är klar:
- Öppna önskad verktygskedja
- Beroende på STM32 Nucleo-kortet, öppna programvaruprojektet från:
- \stm32_cube\Projects\Multi\Examples\MotionControl\IHM14A1_ExampleFor1Motor\YourToolChainNam
e\STM32F401RE-Nucleo för Nucleo STM32F401 - \stm32_cube\Projects\Multi\Examples\MotionControl\IHM14A1_ExampleFor1Motor\YourToolChainNam
e\STM32F030R8-Nucleo för Nucleo STM32F334 - \stm32_cube\Projects\Multi\Examples\MotionControl\IHM14A1_ExampleFor1Motor\YourToolChainName\STM32F030R8-Nucleo för Nucleo STM32F030
- \stm32_cube\Projects\Multi\Examples\MotionControl\IHM14A1_ExampleFor1Motor\YourToolChainName\STM32L053R8-Nucleo för Nucleo STM32L053
- \stm32_cube\Projects\Multi\Examples\MotionControl\IHM14A1_ExampleFor1Motor\YourToolChainNam
- För att anpassa standardparametrarna STSPIN820 till din låga volymtage stegmotoregenskaper, antingen:
- använd BSP_MotorControl_Init med NULL-pekaren och öppna stm32_cube\ Drivers\ BSP\Components\ STSPIN820\ STSPIN820_target_config.h för att ändra parametrarna enligt dina behov
- – använd BSP_MotorControl_Init med adressen till initDevicesParameters-strukturen med lämpliga värden.
- Bygg om alla files och ladda din bild i målminnet.
- Kör exetample. Motorn startar automatiskt (se main.c för detaljer om demosekvens).
Revisionshistorik
Datum |
Version | Ändringar |
17 oktober 2017 |
1 |
Initial release. |
20-2021 juli | 2 |
Uppdaterade avsnitt 2.3.2 Projektmapp och avsnitt 3.2 Programvarukrav. Borttaget avsnitt 2 Vad är STM32Cube? och ersatte den med en länk i introduktionen. |
VIKTIGT MEDDELANDE - LÄS VÄNLIGT NÄR
STMicroelectronics NV och dess dotterbolag (“ST”) förbehåller sig rätten att göra ändringar, korrigeringar, förbättringar, modifieringar och förbättringar av ST-produkter och / eller detta dokument när som helst utan föregående meddelande. Köpare bör få den senaste relevanta informationen om ST-produkter innan de beställer. ST-produkter säljs enligt ST: s försäljningsvillkor på plats vid beställningsbekräftelsen.
Köpare är ensamma ansvariga för val, val och användning av ST-produkter och ST tar inget ansvar för applikationshjälp eller utformningen av köparens produkter.
Ingen licens, uttrycklig eller underförstådd, till någon immateriell rättighet beviljas av ST häri.
Återförsäljning av ST-produkter med bestämmelser som skiljer sig från den information som anges häri upphäver all garanti som beviljats av ST för sådan produkt.
ST och ST-logotypen är varumärken som tillhör ST. För ytterligare information om ST-varumärken, se www.st.com/trademarks. Alla andra produkter eller tjänster
namn är deras respektive ägares egendom.
Informationen i detta dokument ersätter och ersätter information som tidigare tillhandahållits i tidigare versioner av detta dokument.
© 2021 STMicroelectronics – Alla rättigheter reserverade
Dokument/resurser
![]() |
ST UM2300 X-CUBE-SPN14 Utvidgning av programvara för stegmotordrivrutin för STM32Cube [pdf] Användarmanual UM2300, X-CUBE-SPN14 Utvidgning av programvara för stegmotordrivrutin för STM32Cube, UM2300 X-CUBE-SPN14 Utvidgning av programvara för stegmotordrivrutin för STM32Cube, X-CUBE-SPN14 Utvidgning av programvara för stegmotordrivrutin, Utvidgning av programvara för drivrutinprogramvara för STM32C Expan, Motor Driver. för STM32Cube, Expansion för STM32Cube, STM32Cube |