Extinderea software-ului STMicroelectronics UM3469 X-CUBE-ISO1
Introducere
Pachetul software de extindere X-CUBE-ISO1 pentru STM32Cube rulează pe STM32 și include firmware pentru X-NUCLEO-ISO1A1. Software-ul oferă o soluție ușor de utilizat pentru dezvoltarea unui dispozitiv PLC de bază furnizat de X-NUCLEO. Extinderea este construită pe tehnologia software STM32Cube pentru a facilita portabilitatea între diferite microcontrolere STM32.
Software-ul vine cu o implementare care rulează pe placa de expansiune X-NUCLEO-ISO1A1 conectată la o placă de dezvoltare NUCLEO-G071RB (sau fie la NUCLEO-G0B1RE, fie la NUCLEO-G070RB). De acum înainte, în document va fi menționat doar NUCLEO-G071RB, pentru simplitate.
Placa X-NUCLEO-ISO1A1 este concepută pentru a permite suprapunerea a două plăci cu setări de jumper adecvate pentru a extinde capacitățile de intrare și ieșire.
Acronime si abrevieri
Tabelul 1. Lista de acronime
Acronim | Descriere |
PLC | Controler logic programabil |
API | Interfață de programare a aplicației |
PWM | Modularea lățimii impulsului |
GPIO | Intrare/ieșire de uz general. |
HAL | Stratul de abstractizare hardware |
PC | Computer personal |
FW | Firmware |
Ce este STM32Cube?
STM32Cube™ reprezintă inițiativa STMicroelectronics de a ușura viața dezvoltatorilor prin reducerea efortului, timpului și costurilor de dezvoltare. STM32Cube acoperă portofoliul STM32.
STM32Cube versiunea 1.x include:
- STM32CubeMX, un instrument grafic de configurare software care permite generarea de cod de inițializare C folosind vrăjitori grafici.
- O platformă software încorporată completă, specifică fiecărei serii (cum ar fi STM32CubeG0 pentru seria STM32G0), care include:
- software-ul de abstracție încorporat STM32Cube HAL, asigurând portabilitate maximă în întregul portofoliu STM32
- un set consistent de componente middleware precum RTOS, USB, TCP/IP și grafică
- toate utilitățile software încorporate cu un set complet de examples.
Arhitectura STM32Cube
Soluția firmware STM32Cube este construită în jurul a trei niveluri independente care pot interacționa ușor între ele, așa cum este descris în diagrama de mai jos.
Extindere software X-CUBE-ISO1 pentru STM32Cube
Pesteview
Firmware-ul pentru placa de expansiune X-NUCLEO-ISO1A1, o placă de extensie industrială izolată cu intrări/ieșiri, dezvoltată în jurul mediilor și bibliotecilor STM32, utilizează MCU-ul de înaltă performanță al plăcilor STM32 Nucleo pentru a gestiona intrările digitale, ieșirile cu diagnosticare integrată, împreună cu limitarea dinamică a curentului și generarea de semnale PWM. Acesta oferă configurare și control complet al plăcii, inclusiv cadre pentru condiții implicite și alternative, macrocomenzi pentru setarea valorilor prescalerului și definiții pentru porturile și pinii GPIO.
Acceptă diverse sampCazuri de utilizare a aplicațiilor, cum ar fi oglindirea intrărilor digitale către ieșirile digitale, comunicarea UART prin placa Nucleo, detectarea defectelor, cazurile de testare și generarea PWM, care pot fi utilizate direct și pot fi ușor personalizate și extinse.
API-ul oferă un set robust de funcții pentru controlul intrărilor/ieșirilor digitale, detectarea erorilor și actualizări ale stării plăcii, cu setări de configurare pentru rularea simultană a două plăci în moduri diferite. Sunt disponibile funcții API specifice pentru inițializarea, pornirea, oprirea și configurarea semnalelor PWM pentru canalele de ieșire digitale.
Pachetul de suport pentru placă include funcții pentru controlul și monitorizarea pinilor GPIO interfațați cu IPS1025H-32 și citirea stării pinilor GPIO interfațați cu CLT03-2Q3 prin intermediul unui izolator digital.
Configurarea și inițializarea se bazează pe STM32CubeMX, iar dezvoltarea și depanarea sunt suportate de STM32CubeIDE, IAR Systems și instrumentele Keil®.
Arhitectură
Firmware-ul pentru X-NUCLEO-ISO1A1 poate fi împărțit în mai multe blocuri funcționale distincte, fiecare fiind responsabil pentru diverse aspecte ale funcționării sistemului:
- Configurarea și controlul plăcii:
- Fișierul board_config.h file Conține macrocomenzi pentru configurarea plăcii să ruleze în condiții implicite sau alternative, sau ambele. De asemenea, include definiții pentru valorile prescalerului și porturile și pinii GPIO.
- Acest bloc asigură configurarea corectă a plăcii pentru condițiile de funcționare dorite și faptul că toate configurațiile hardware necesare sunt implementate.
- Cazuri de utilizare a aplicației:
- st_iso_app.h și st_iso_app.c fileconțin cazuri de utilizare a aplicațiilor concepute pentru a testa diverse funcționalități ale plăcii.
- Aceste cazuri de utilizare includ oglindirea intrărilor digitale către ieșiri, testele de detectare a erorilor și generarea de semnale PWM.
- ExampConfigurațiile sunt furnizate pentru rularea simultană a două plăci în moduri diferite, demonstrând versatilitatea și flexibilitatea firmware-ului.
- Funcții API:
- iso1a1.h și iso1a1.c fileoferă un set complet de API-uri pentru a suporta diverse funcționalități.
- Aceste API-uri includ funcții pentru controlul intrărilor/ieșirilor digitale, detectarea erorilor și actualizări ale stării plăcii.
- API-urile sunt concepute să fie simple și intuitive, facilitând interacțiunea utilizatorilor cu placa și efectuarea operațiunilor necesare.
- Controlul semnalului PWM:
- Fișierele pwm_api.h și pwm_api.c fileconțin funcții API specifice legate de generarea semnalelor PWM.
- Aceste funcții permit inițializarea, configurarea, pornirea și oprirea semnalelor PWM pentru canalele de ieșire digitale.
- Funcționalitatea PWM nu este opțiunea implicită. Configurația plăcii a fost modificată pentru a activa această funcție. Consultați Secțiunea 3.5: API-uri pentru mai multe detalii.
- Pachet de asistență pentru consiliul de administrație:
- Pachetul de asistență pentru consiliu include filepentru controlul și monitorizarea pinilor GPIO interfațați cu IPS1025H-32 și citirea stării pinilor GPIO interfațați cu CLT03-2Q3.
- ips1025h_32.h și ips1025h_32.c fileoferă funcții pentru setarea, ștergerea și detectarea erorilor pe pinii GPIO interfațați cu IPS1025H-32.
- clt03_2q3.h și clt03_2q3.c fileoferă funcții pentru citirea stării pinilor GPIO interfațați cu CLT03-2Q3.
Firmware-ul demonstrativ implementează mai multe cazuri de utilizare simple pentru a demonstra capacitățile sistemului. Aceste cazuri de utilizare și API-urile utilizatorilor sunt executate într-o manieră coordonată pentru a asigura o funcționare fără probleme și rezultate precise. Arhitectura este concepută pentru a fi ușor extinsă, permițând utilizatorilor să adauge noi funcționalități și cazuri de utilizare, după cum este necesar. Configurația implicită este furnizată pentru rularea unei plăci cu I/O industriale digitale. De asemenea, setările jumperilor trebuie să fie în modul implicit, așa cum este descris în Tabelul 2. Intrarea digitală/ieșirea digitală în oglindă (DIDO) este cazul de utilizare implicit al aplicației firmware.
Structura folderului
Următoarele foldere sunt incluse în pachetul software:
- Documentația conține un HTML compilat file generate din codul sursă, detaliind componentele software și API-urile.
- Driverele conțin:
- un folder HAL STM32Cube, situat în subfolderele STM32G0xx_HAL_Driver. Acestea fileNu sunt descrise aici, deoarece nu sunt specifice software-ului X-CUBE-ISO1, ci provin direct din framework-ul STM32Cube.
- un folder CMSIS care conține standardul de interfață software pentru microcontrolerul Cortex® files de la Arm. Aceste files sunt straturi de abstractizare hardware independente de furnizor pentru seria de procesoare Cortex®-M. Acest folder este, de asemenea, neschimbat din framework-ul STM32Cube.
- un folder BSP care conține codurile pentru componentele IPS1025H-32 și CLT03-2Q3 și API-urile aferente X-NUCLEO-ISO1A1.
- Aplicația conține folderul utilizatorului care conține fișierul main.c file, cazul de utilizare al aplicației file, st_iso_app.c și board_config.h file, furnizat pentru platforma NUCLEO-G071RB.
folderul BSP
Software-ul X-CUBE-ISO1 utilizează două componente diferite files, care se află în interiorul BSP/Components:
IPS1025
ips1025h_32.h și ips1025h_32.c fileoferă o implementare completă a driverului pentru pinii GPIO interfațați cu IPS1025H-32, inclusiv funcționalitate completă pentru controlul tuturor pinilor și detectarea defectelor. Acestea fileImplementează funcții pentru inițializarea dispozitivului, setarea și ștergerea stării canalului, detectarea condițiilor de eroare și gestionarea funcționalității PWM. Driverul acceptă mai multe dispozitive și canale, cu capabilități complete atât pentru canal individual, cât și pentru un grup.
CLT03
clt03_2q3.h și clt03_2q3.c fileImplementează un driver complet pentru pinii GPIO interfațați cu CLT03-2Q3, cu capacități complete pentru citirea tuturor stărilor pinilor. Driverul oferă funcții pentru inițializarea dispozitivului, citirea stării individuale a canalelor și obținerea simultană a informațiilor de stare pentru toate canalele. Acesta acceptă configurații multiple de dispozitive și menține starea internă pentru o gestionare eficientă a canalelor.
API-urile software X-CUBE-ISO1 sunt împărțite în două surse principale files, care se află în subfolderul ISO1A1:
ISO1A1
ISO1A1 filecuprind un set complet de funcții API concepute pentru configurarea plăcii, interacțiunea componentelor și gestionarea erorilor. Aceste funcții facilitează operațiunile de citire și scriere, detectarea erorilor și actualizările și includ diverse utilitare auxiliare pentru a susține funcțiile API principale. În plus, fileoferă funcționalități pentru controlul LED-urilor, inițializarea GPIO, gestionarea întreruperilor și comunicarea UART.
API-ul PWM
API-ul PWM oferă funcții pentru inițializarea, configurarea, pornirea și oprirea semnalelor PWM. Permite setarea frecvenței PWM și a ciclului de funcționare pentru pinii temporizatorului specificați, asigurând un control precis asupra operațiunilor PWM.
Dosarul aplicației
Folderul Aplicație conține fișierele principale filenecesare pentru firmware, inclusiv antete și sursă files. Mai jos este o descriere detaliată a files în acest folder:
- board_config.h: Macrocomenzi de configurare pentru placă.
- main.c: Programul principal (codul ex.)ample care se bazează pe biblioteca pentru ISO1A1).
- st_iso_app.c: Funcții ale aplicației pentru testarea și configurarea plăcii de bază.
- stm32g0xx_hal_msp.c: Rutine de inițializare HAL.
- stm32g0xx_it.c: Rulaj de întreruperi.
- syscalls.c: Implementări de apeluri de sistem.
- sysmem.c: Gestionarea memoriei sistemului.
- system_stm32g0xx.c: Inițializarea sistemului.
Resurse necesare software
Dispozitivul Nucleo controlează și comunică cu placa X-NUCLEO-ISO1A1 prin intermediul GPIO-urilor. Acest lucru necesită utilizarea mai multor GPIO-uri pentru intrare, ieșire și detectarea defecțiunilor dispozitivelor IO industriale conținute în placa X-NUCLEO-ISO1A1. Consultați manualul de utilizare hardware UM3483 pentru mai multe detalii și configurațiile jumperilor.
Configurația plăcii (board_config.h)
Fișierul board_config.h file definește resursele utilizate și macrocomenzile de configurare pentru a configura software-ul în funcție de configurația plăcii. Gestionează până la două plăci (cum ar fi suprapunerea a două plăci).
Configurația software IMPLICITĂ este aliniată cu placa de expansiune X-NUCLEO-ISO1A1, cu jumperii în pozițiile implicite. Pentru a configura software-ul pentru X-NUCLEO-ISO1A1 în setările sale implicite, eliminați comentariile macro-ului BOARD_ID_DEFAULT din fișierul board_config.h. file.
Configurația software ALTERNATE este setată prin decomentarea macrocomenzii BOARD_ID_ALTERNATE din fișierul board_config.h. file și schimbarea pozițiilor jumperilor pe placă.
Pentru a utiliza două plăci simultan într-o configurație stack-up, eliminați comentariile ambelor macrocomenzi BOARD_ID_DEFAULT și BOARD_ID_ALTERNATE și asigurați-vă că jumperii uneia dintre plăci sunt în poziția implicită, iar cealaltă în poziția alternativă. Rețineți că nu se recomandă ca ambele plăci să aibă aceeași configurație (fie ambele în poziția implicită, fie ambele în poziția alternativă) și poate duce la un comportament nedorit.
Când rulați o singură placă, asigurați-vă că software-ul este configurat doar pentru o singură configurație și că macrocomanda corespunzătoare celeilalte configurații este comentată.
Prescalere
Putem configura valorile prescalerului în board_config.h pentru a obține diferite intervale de frecvență pentru ieșirea PWM prin setarea macrocomenzilor corespunzătoare. Pentru a utiliza o valoare prescalară, decomentați macrocomanda corespunzătoare și comentați-le pe celelalte. În mod implicit, se utilizează DEFAULT_PRESCALAR.
- PRESCALARE_1
- PRESCALARE_2
- PRESCALER_IMPLICIT
Valorile prescalerului sunt utilizate numai atunci când se utilizează temporizatoare și nu sunt necesare pentru nicio operațiune I/O de bază. Valorile macrocomenzilor prescalare și intervalele de frecvență corespunzătoare pot fi consultate în documentația codului sau în codul în sine.
LED de bătăi inimii
Putem configura LED-ul verde al utilizatorului, D7, să clipească ca o pulsație, ca test al conexiunii corecte la placa NUCLEO-G071RB. Macro-ul HEARTBEAT_LED, atunci când nu este comentat, clipește LED-ul verde de pe X-NUCLEO-ISO1A1 atunci când este conectat la NUCLEO. Rămâne aprins timp de 1 secundă și stins timp de 2 secunde, temporizarea fiind gestionată de temporizatoare. Când nu este utilizat sau nu este apelată vreo funcție care implică LED-uri, macro-ul ar trebui decomentat.
Configurarea GPIO de intrare și ieșire
Fiecare placă X-NUCLEO-ISO1A1 este echipată cu două porturi de intrare și două porturi de ieșire. Capacitățile plăcii pot fi extinse prin suprapunerea a două plăci X-NUCLEO-ISO1A1 una peste alta, permițând astfel utilizarea a patru porturi digitale de intrare și patru porturi digitale de ieșire. Software-ul furnizat include API-uri complete care facilitează citirea, setarea și ștergerea porturilor. În plus, API-urile permit setarea, citirea sau ștergerea simultană a tuturor porturilor. Informații detaliate despre funcțiile API sunt disponibile în documentația codului, precum și în secțiunea API a acestui document.
Aici prefixul DI indică portul de intrare digitală, iar DO indică portul de ieșire digitală. Pentru configurarea alternativă, software-ul folosește aceleași convenții de denumire cu sufixul _alt atașat.
Următorul tabel detaliază macrocomenzile GPIO definite în software corespunzătoare diferitelor porturi IO:
Tabelul 2. GPIO-uri alocate pentru configurații software implicite și alternative
Nume | Funcţie | Configurație implicită | Configurație alternativă |
PIN DE INTRARE | Pinul de intrare 1 | GPIOC, IA0_IN_1_PIN | GPIOD, IA0_IN_1_PIN |
Pinul de intrare 2 | GPIOD, IA1_IN_2_PIN | GPIOC, IA1_IN_1_PIN | |
PIN DE IEȘIRE | Pinul de ieșire 1 | GPIOC, QA0_CNTRL_1_PIN | GPIOD, QA0_CNTRL_1_PIN |
Pinul de ieșire 2 | GPIOC, QA1_CNTRL_2_PIN | GPIOC, QA1_CNTRL_2_PIN | |
PIN DE EROR | Pinul 1 de defect | GPIOC, FLT1_QA0_2_OT_PIN | GPIOD, FLT1_QA0_1_OT_PIN |
Pinul 2 de defect | GPIOC, FLT2_QA0_2_OL_PIN | GPIOD, FLT2_QA0_1_OL_PIN | |
Pinul 3 de defect | GPIOC, FLT1_QA1_2_OT_PIN | GPIOC, FLT1_QA1_1_OT_PIN | |
Pinul 4 de defect | GPIOC, FLT2_QA1_1_OL_PIN | GPIOD, FLT2_QA1_2_OL_PIN | |
MACROCONFIGURARE | ID_PLATĂ_IMPLICIT | ID_PLATĂ_ALTERNATIV |
Temporizatoare și PWM
Temporizatoarele pot fi utilizate în firmware-ul X-CUBE-ISO1 pentru a genera semnale PWM pentru pini specifici. În mod implicit, temporizatoarele nu sunt inițializate, cu excepția TIM3. Temporizatoarele respective trebuie inițializate înainte de generarea semnalelor PWM, iar porturile de ieșire respective trebuie inițializate în modul PWM.
Pentru operațiuni normale de intrare/ieșire GPIO, nu este nevoie să configurați niciun temporizator sau port de ieșire, deoarece acest lucru este gestionat în mod implicit. Cu toate acestea, odată ce pinii de ieșire sunt setați în modul PWM, trebuie să îi reconfigurăm în modul GPIO pentru a fi utilizați ca pini GPIO.
Nota: Când pinii de ieșire sunt utilizați pentru generarea PWM, ieșirea GPIO este dezactivată, ambele funcționalități neputând fi implementate simultan. Pentru a reactiva GPIO după utilizarea PWM, se poate apela funcția API ST_ISO_BoardConfigureDefault() sau ST_ISO_InitGPIO() pentru a configura toate porturile ca GPIO simultan sau ST_ISO_Init_GPIO() cu un anumit port și pin GPIO.
Așa cum am menționat mai sus, software-ul folosește și un temporizator în mod implicit, TIM3, care este utilizat pentru temporizarea LED-urilor utilizatorului, ceas și implementarea temporizării UART. Acesta este configurat în mod implicit pentru o perioadă de 1 secundă.
Următorul tabel detaliază temporizatoarele disponibile pentru fiecare pin din codul nostru:
Tabelul 3. Temporizatoare disponibile pentru fiecare pin
Nume PIN | Reprezentarea software-ului | Cronometru | Canalul temporizatorului | Funcție alternativă |
QA0_CNTRL_1_PIN | QA_0 | TIM2 | TIM_CHANNEL_4 | GPIO_AF2_TIM2 |
QA1_CNTRL_2_PIN | QA_1 | TIM1 | TIM_CHANNEL_3 | GPIO_AF2_TIM1 |
QA0_CNTRL_2_PIN | QA_0_ALT | TIM1 | TIM_CHANNEL_4 | GPIO_AF2_TIM1 |
QA1_CNTRL_1_PIN | QA_1_ALT | TIM17 | TIM_CHANNEL_1 | GPIO_AF2_TIM17 |
Utilitare suplimentare ale firmware-ului
Firmware-ul include utilitare suplimentare pentru îmbunătățirea funcționalității plăcii de evaluare X-NUCLEO-ISO1A1. Unele dintre acestea sunt descrise mai jos.
UART
Funcția de comunicare UART permite monitorizarea și depanarea în timp real a stării plăcii prin intermediul unor utilitare pentru PC precum TeraTerm, PuTTY și alte aplicații similare. Software-ul permite transmiterea datelor UART prin UART-ul prezent în placa NUCLEO-G071RB. Funcția `ST_ISO_UART` trimite informații detaliate despre starea plăcii prin UART, inclusiv timpul de funcționare al sistemului, configurația firmware-ului și starea erorilor. Aceste date pot fi... viewutilizată prin orice aplicație cu port serial, cum ar fi TeraTerm. Funcția `ST_ISO_APP_DIDOandUART` combină operațiunile digitale de intrare/ieșire cu comunicarea UART, transmițând starea tuturor canalelor de intrare și ieșire la intervale specificate. Mai jos sunt setările de configurare și așa mai departeampmodul în care apar datele în TeraTerm. Numele portului poate varia în funcție de sistem și de portul serial utilizat.
Configurarea modului pin IO
Utilitarul de configurare a modului IO pin permite utilizatorilor să seteze porturile de intrare și ieșire ale plăcii folosind funcția ST_ISO_BoardConfigure(). Această funcție acceptă configurarea a două porturi de ieșire (QA0, QA1) și a două porturi de intrare (IA0, IA1) fie în modul Intrare/Ieșire, fie în modul Ieșire PWM, fie în modul de intrare cu întrerupere. Prin ajustarea parametrilor și apelarea acestei funcții, utilizatorii pot personaliza cu ușurință configurația IO a plăcii pentru a satisface nevoi specifice.
În modul Intrare/Ieșire, utilitarul inițializează pinii GPIO pentru operații digitale de uz general. În modul de ieșire PWM, acesta configurează temporizatoarele pentru un control precis al semnalului PWM. În modul de intrare cu întreruperi, utilitarul configurează pinii pentru a gestiona întreruperile, permițând o programare receptivă, condusă de evenimente.
Gestionarea întreruperilor
Pentru gestionarea semnalelor de EROARE, software-ul activează liniile de întrerupere asociate, permițând programarea receptivă la evenimente. Un handler personalizat poate fi asociat cu aceste întreruperi prin intermediul
Funcția HAL_GPIO_EXTI_Rising_Callback este definită în API. Software-ul include funcții pentru inițializarea pinilor GPIO în modul de întrerupere prin intermediul funcției ST_ISO_BoardConfigure și configurarea acțiunilor specifice în handlerele EXTI IRQ. Acest lucru permite utilizatorilor să personalizeze modul în care placa răspunde la evenimente externe, asigurându-se că poate gestiona eficient diverse condiții de eroare și declanșatoare.
API-uri
API-ul software X-CUBE-ISO1 oferă un set complet de funcții pentru controlul și monitorizarea plăcii X-NUCLEO-ISO1A1, inclusiv generarea de semnale PWM și operațiuni GPIO. API-ul este conceput pentru a fi ușor de utilizat și de integrat în diverse aplicații, oferind flexibilitate și control asupra funcționalității plăcii.
API-ul software X-CUBE-ISO1 este definit în folderul BSP/ISO1A1. Funcțiile sale au prefixul ST_ISO. API-ul este vizibil aplicațiilor prin intermediul fișierelor iso1a1.c și pwm_api.c. files este o combinație de constante, structuri de date și funcții.
SampAplicațiile firmware utilizează aceste API-uri pentru a arăta câteva dintre posibilele utilizări ale acestor funcții.
Pachetul software X-CUBE-ISO1 oferă două seturi de API-uri:
- API-ul ISO1A1
- API-ul PWM
API-ul ISO1A1
API-ul ISO1A1 este definit în fișierele iso1a1.h și iso1a1.c. fileOferă funcții pentru configurarea și controlul plăcii ISO1A1, inclusiv operațiuni de intrare/ieșire GPIO și detectarea erorilor.
Funcții cheie
- ST_ISO_BoardConfigureDefault: Configurează porturile IO ale plăcii cu configurația GPIO implicită.
- ST_ISO_BoardConfigure: Configurează modul porturilor de intrare și ieșire pentru placă.
- ST_ISO_BoardInit: Inițializează hardware-ul plăcii.
- ST_ISO_BoardMapInit: Inițializează funcționalitatea plăcii pe baza configurației handle-urilor canalului.
- ST_ISO_GetFWVersion: Returnează versiunea curentă de firmware.
- ST_ISO_GetChannelHandle: Preia identificatorul canalului pentru un nume de canal specificat.
- ST_ISO_InitGPIO: Inițializează pinul GPIO specificat cu ID-ul modulului dat.
- ST_ISO_InitInterrupt: Inițializează pinul GPIO specificat ca întrerupere cu ID-ul de modul dat.
- ST_ISO_EnableFaultInterrupt: Inițializează pinii GPIO de eroare în modul de întrerupere.
- ST_ISO_SetChannelStatus: Setează starea unui canal specificat.
- ST_ISO_SetOne_DO: Setează un singur canal de ieșire digitală.
- ST_ISO_ClearOne_DO: Șterge un singur canal de ieșire digitală.
- ST_ISO_WriteAllChannels: Scrie date pe toate canalele de ieșire digitale.
- ST_ISO_GetOne_DI: Obține starea unui singur canal de intrare digitală.
- ST_ISO_ReadAllChannel: Citește starea tuturor canalelor de intrare.
- ST_ISO_ReadAllOutputChannel: Citește starea tuturor canalelor de ieșire.
- ST_ISO_ReadFaultStatus: Citește starea defecțiunii din toate porturile de detectare a defecțiunilor.
- ST_ISO_ReadFaultStatusPolling: Testează detectarea erorilor plăcilor în modul de interogare.
- ST_ISO_DisableOutputChannel: Dezactivează ieșirea pentru canalul respectiv.
- ST_ISO_UpdateBoardStatusInfo: Actualizează informațiile despre starea plăcii.
- ST_ISO_UpdateFaultStatus: Actualizează starea de eroare pentru un anumit canal.
- ST_ISO_BlinkLed: Clipește LED-ul specificat cu o întârziere și un număr de repetări date.
- ST_ISO_UART: Trimite informații despre starea plăcii prin UART.
- ST_ISO_SwitchInit: Inițializează componentele comutatorului.
- ST_ISO_SwitchDeInit: Deinițializează instanța switch-ului.
- ST_ISO_DigitalInputInit: Inițializează componentele de intrare digitale.
- ST_ISO_DigitalInputDeInit: Deinițializează instanța de intrare digitală.
API-ul PWM
API-ul PWM este definit în fișierele pwm_api.h și pwm_api.c. files. Oferă următoarele funcții pentru inițializarea și controlul semnalelor PWM pentru pini specifici.
- ST_ISO_Init_PWM_Signal: Inițializează temporizatoarele și pinul specific pentru semnalul PWM.
- ST_ISO_Set_PWM_Frequency: Setează frecvența PWM pentru pinul specific.
- ST_ISO_Set_PWM_Duty_Cycle: Setează ciclul de funcționare PWM pentru pinul specific.
- ST_ISO_Start_PWM_Signal: Pornește semnalul PWM pe pinul specific.
- ST_ISO_Stop_PWM_Signal: Oprește semnalul PWM pe pinul specific.
Pentru a porni un semnal PWM pe un canal respectiv, apelați mai întâi funcția ST_ISO_Init_PWM_Signal, apoi setați frecvența și ciclul de funcționare dorite apelând funcțiile ST_ISO_Set_PWM_Frequency și
funcțiile ST_ISO_Set_PWM_Duty_Cycle, iar apoi puteți porni semnalul PWM apelând funcția ST_ISO_Start_PWM_Signal și îl puteți opri apelând ST_ISO_Stop_PWM_Signal.
Funcția trebuie apelată cu numele pinului corespunzător și temporizatoarele disponibile, ale căror detalii au fost furnizate în tabelul 3. Diferite canale de ieșire pot fi configurate cu frecvențe și cicluri de funcționare diferite; schimbarea frecvenței sau a ciclului de funcționare nu le afectează pe celelalte, rămânând aceleași.
Informații tehnice detaliate despre API-urile disponibile utilizatorului pot fi găsite într-un HTML compilat file situat în interiorul folderului „Documentare” al pachetului software unde sunt descrise complet toate funcțiile și parametrii.
Descrierea aplicației
Aplicația demonstrativă implementează câteva cazuri de utilizare simple. st_iso_app și board_config filejoacă un rol crucial în configurarea și utilizarea plăcii și a funcțiilor sale de aplicație. Înainte de a utiliza aceste funcții, asigurați-vă că placa și configurația software-ului sunt sincronizate.
Funcții de aplicație (st_iso_app.h și st_iso_app.c)
Funcțiile aplicației au prefixul ST_ISO_APP; acestea sunt funcțiile de nivel superior vizibile utilizatorului care apelează funcțiile API pentru implementarea lor. Funcțiile aplicației pot fi apelate în fișierul main.c. file pentru funcționarea lor.
- Selectarea cazului de utilizare: Utilizatorul poate elimina comentariul de la macro-ul cazului de utilizare dorit în fișierul st_iso_app.c fileFuncția ST_ISO_APP_SelectUseCaseMacro(), apelată în main.c, inițializează cazul de utilizare respectiv, iar funcția ST_ISO_APP_SelectedFunction() îl implementează în main.c. Această abordare permite configurarea ușoară a modului operațional prin simpla modificare a definițiilor macro, asigurându-se că funcționalitatea corespunzătoare este executată pe baza cazului de utilizare selectat. În mod implicit, este selectat cazul de utilizare DIDO, iar utilizatorul nu trebuie să facă nicio modificare a codului pentru a-l implementa.
- Oglindirea intrărilor digitale către ieșirile digitale (ST_ISO_APP_UsecaseDIDO): Această funcție citește starea tuturor canalelor de intrare și scrie aceeași stare pe toate canalele de ieșire. Este utilă pentru oglindirea intrărilor digitale către ieșirile digitale.
- Oglindirea intrărilor digitale către ieșirile digitale cu UART (ST_ISO_APP_DIDOandUART): Această funcție oglindește intrările digitale către ieșirile digitale, similar cu funcția ST_ISO_APP_UsecaseDIDO. În plus, transmite starea plăcii prin interfața UART de pe dispozitivul Nucleo, permițând afișarea stării. viewconectat pe un port serial folosind aplicații precum Tera Term.
- Funcția de Test Case (ST_ISO_APP_TestCase): Această funcție efectuează o serie de teste și acțiuni bazate pe configurația plăcii. Verifică starea defecțiunii, citește starea a două canale de intrare digitale și efectuează acțiuni pe baza valorilor acestora. Această funcție ajută la evaluarea rapidă a performanței și funcționalității plăcii și la obținerea de feedback vizual prin diferite modele de LED-uri. Asigurați-vă că macro-ul HEARTBEAT_LED este în fișierul board_config.h. file este comentat pentru a observa modelele corecte de LED-uri.
- Generare PWM (ST_ISO_APP_PWM _OFFSET): Această funcție pornește semnalul PWM pe ambele canale de ieșire cu o frecvență de 1 Hz și un ciclu de funcționare de 50%. Inițializează semnalul PWM, setează frecvența și ciclul de funcționare și pornește semnalul PWM pentru ID-ul specificat al plăcii. Semnalul PWM este generat cu un offset între ambele canale și, prin urmare, acestea nu sunt în fază.
- Test de detectare a defecțiunilor (ST_ISO_APP_FaultTest): Această funcție evaluează detectarea defecțiunilor prin acționarea pinilor de diagnosticare încorporați ai modulului inteligent de ieșire IPS1025, fie în modul de interogare, fie în modul de întrerupere. Configurează modul de detectare a defecțiunilor, inițializează detectarea defecțiunilor și actualizează structura stării defecțiunilor pe baza modului selectat. Această funcție este crucială pentru asigurarea fiabilității și siguranței plăcii prin detectarea și gestionarea eficientă a defecțiunilor. Când se află în modul de interogare, starea defecțiunii este actualizată în fiecare secundă cu ajutorul unui temporizator și este reflectată în structura defaultBoardFaultStatus sau alternateBoardFaultStatus. Când se află în modul de întrerupere, starea defecțiunii este actualizată numai atunci când apare defectul și declanșează software-ul pentru a șterge portul de ieșire corespunzător.
- Test de variație PWM (ST_ISO_APP_PwmVariationTest): Această funcție este concepută pentru a testa variația semnalelor PWM (Pulse Width Modulation - Modulația lățimii impulsurilor) pe diferite canale de ieșire, în funcție de configurația plăcii. Inițializează semnalele PWM atât pentru configurațiile implicite, cât și pentru cele alternative ale plăcii, setând frecvența acestora la 100 Hz și ciclul de funcționare inițial la 0%. Funcția modifică apoi ciclul de funcționare de la 0% la 100% în trepte de 5% și înapoi de la 100% la 0% în trepte de 5%, cu o întârziere de 2 secunde între fiecare pas. Această variație controlată permite observarea și evaluarea comportamentului semnalului PWM pe canalele QA_0 și QA_1 pentru placa implicită și QA_0_ALT și QA_1_ALT pentru placa alternativă.
Urmând aceste configurații și utilizând funcțiile aplicației furnizate, puteți configura și utiliza eficient placa X-NUCLEO-ISO1A1 pentru diverse cazuri de utilizare demonstrative.
Ghid de configurare a sistemului
Descrierea hardware-ului
Platforma STM32 Nucleo
Plăcile de dezvoltare STM32 Nucleo oferă utilizatorilor o modalitate accesibilă și flexibilă de a testa soluții și de a construi prototipuri cu orice linie de microcontrolere STM32.
Suportul pentru conectivitate Arduino® și conectorii ST morpho facilitează extinderea funcționalității platformei de dezvoltare deschise STM32 Nucleo cu o gamă largă de plăci de expansiune specializate din care puteți alege.
Placa STM32 Nucleo nu necesită sonde separate deoarece integrează depanatorul/programatorul ST-LINK/V2-1.
Placa STM32 Nucleo vine cu biblioteca cuprinzătoare de software STM32 HAL, împreună cu diverse programe de ex.amples.
Informații despre placa STM32 Nucleo sunt disponibile la www.st.com/stm32nucleo
Placă de expansiune X-NUCLEO-ISO1A1
X-NUCLEO-ISO1A1 este o placă de evaluare cu intrări/ieșiri industriale izolate, concepută pentru a extinde placa STM32 Nucleo și a oferi funcționalitate micro-PLC. Două dintre plăcile X-NUCLEO-ISO1A1 pot fi suprapuse peste o placă STM32 Nucleo, cu selecția corespunzătoare de jumpere pe placa de expansiune pentru a evita conflictele în interfețele GPIO. Izolatoarele digitale certificate UL1577 STISO620 și STISO621 asigură izolarea între componentele logice și cele de proces. Două intrări de înaltă tensiune limitate în curent din partea procesului sunt realizate prin CLT03-2Q3. CLT03-2Q3 oferă protecție, izolare și indicare a stării fără energie pentru condiții industriale, fiind concepută pentru a îndeplini standarde precum IEC61000-4-2, IEC61000-4-4 și IEC61000-4-5. Câte unul dintre comutatoarele de înaltă tensiune IPS1025H-32/HQ-32 oferă o ieșire protejată de până la 5.6 A, cu funcții de diagnosticare și acționare inteligentă. Acestea pot acționa sarcini capacitive, rezistive sau inductive. X-NUCLEO-ISO1A1 permite evaluarea rapidă a circuitelor integrate integrate folosind pachetul software X-CUBE-ISO1.
Configurare hardware
Sunt necesare următoarele componente hardware:
- O platformă de dezvoltare STM32 Nucleo (cod de comandă sugerat: NUCLEO-GO71RB)
- O placă de expansiune cu ieșire digitală industrială (cod de comandă: X-NUCLEO-ISO1A1)
- Un cablu USB tip A la Micro USB pentru conectarea STM32 Nucleo la PC
- O sursă de alimentare externă (24 V) și firele asociate pentru alimentarea plăcii de expansiune X-NUCLEO-ISO1A1.
Configurare software
Următoarele componente software sunt necesare pentru configurarea unui mediu de dezvoltare adecvat pentru crearea de aplicații pentru STM32 Nucleo echipat cu placa de expansiune X-NUCLEO-ISO1A1:
- X-CUBE-ISO1: o extensie pentru STM32Cube dedicată dezvoltării de aplicații care necesită utilizarea plăcii X-NUCLEO-ISO1A1. Firmware-ul X-CUBE-ISO1 și documentația aferentă sunt disponibile pe www.st.com
- Lanț de instrumente de dezvoltare și compilator: software-ul de extindere STM32Cube acceptă următoarele trei medii:
- IAR Embedded Workbench pentru lanțul de instrumente ARM® (IAR-EWARM)
- RealView Kit de dezvoltare microcontroler (MDK-ARM-STM32) - lanț de instrumente
- STM32CubeIDE.
Configurarea bordului
Placa trebuie configurată cu setările corespunzătoare ale jumperilor, așa cum este specificat în manualul de utilizare Hardware (UM3483). Respectarea cu atenție a acestor instrucțiuni este esențială pentru a asigura funcționalitatea corectă și a evita potențialele probleme.
Ghid de configurare a sistemului
Această secțiune descrie cum se configurează diferite componente hardware înainte de a dezvolta și executa o aplicație pe placa STM32 Nucleo, NUCLEO-G071RB cu placa de expansiune X-NUCLEO-ISO1A1.
Configurarea pachetului de expansiune X-CUBE-ISO1
X-NUCLEO-ISO1A1 trebuie configurat cu pozițiile specifice ale jumperilor, în funcție de configurația cu care utilizați placa. Detalii despre acestea pot fi consultate în manualul hardware.
- Pasul 1. Conectați placa de expansiune X-NUCLEO-ISO1A1 în partea superioară a STM32 Nucleo prin intermediul morfoconectorilor.
Dacă folosiți două plăci una peste alta, stivuiți-le ca în Figura 11. - Pasul 2. Conectați placa STM32 Nucleo la un PC cu cablul USB prin conectorul USB CN1 pentru a alimenta placa.
- Pasul 3. Porniți placa (plăcile) de expansiune X-NUCLEO-ISO1A1 conectând J1 la sursa de alimentare de 24V CC. Dacă utilizați plăci suprapuse, asigurați-vă că ambele plăci sunt alimentate.
- Pasul 4. Deschideți setul de instrumente preferat (MDK-ARM de la Keil, EWARM de la IAR sau STM32CubeIDE).
- Pasul 5. Deschideți proiectul software și faceți modificările necesare în fișierul board_config.h file în funcție de configurația plăcii (plăcilor) utilizate.
- Pasul 6. Setați macro-ul de caz de utilizare corespunzător în st_iso_app.c file sau apelați cazul de utilizare necesar folosind funcția ST_ISO_APP_SelectUseCase din main.c file împreună cu orice altă funcție dorită.
- Pasul 7. Construiți proiectul pentru a compila toate files și încărcați codul compilat în memoria plăcii STM32 Nucleo.
- Pasul 8. Rulați codul pe placa STM32 Nucleo și verificați comportamentul așteptat.
Istoricul reviziilor
Tabelul 4. Istoricul revizuirilor documentului
Data | Revizuire | Schimbări |
14-mai-2025 | 1 | Lansare inițială. |
NOTIFICARE IMPORTANT – CITIȚI CU ATENTIE
STMicroelectronics NV și filialele sale („ST”) își rezervă dreptul de a face modificări, corecții, îmbunătățiri, modificări și îmbunătățiri produselor ST și/sau acestui document în orice moment, fără notificare. Cumpărătorii trebuie să obțină cele mai recente informații relevante despre produsele ST înainte de a plasa comenzi. Produsele ST sunt vândute în conformitate cu termenii și condițiile de vânzare ale ST în vigoare la momentul confirmării comenzii.
Cumpărătorii sunt singurii responsabili pentru alegerea, selecția și utilizarea produselor ST, iar ST nu își asumă nicio responsabilitate pentru asistența la aplicare sau proiectarea produselor cumpărătorilor.
Nicio licență, expresă sau implicită, pentru niciun drept de proprietate intelectuală nu este acordată de către ST prin prezenta.
Revânzarea produselor ST cu prevederi diferite de informațiile prezentate aici va anula orice garanție acordată de ST pentru un astfel de produs.
ST și sigla ST sunt mărci comerciale ale ST. Pentru informații suplimentare despre mărcile comerciale ST, consultați www.st.com/trademarks. Toate celelalte nume de produse sau servicii sunt proprietatea proprietarilor respectivi.
Informațiile din acest document înlocuiesc și înlocuiesc informațiile furnizate anterior în orice versiuni anterioare ale acestui document.
© 2025 STMicroelectronics – Toate drepturile rezervate
Documente/Resurse
![]() |
Extinderea software-ului STMicroelectronics UM3469 X-CUBE-ISO1 [pdfManual de utilizare X-NUCLEO-ISO1A1, NUCLEO-G071RB, UM3469 X-CUBE-ISO1 Extindere software, UM3469, X-CUBE-ISO1 Extindere software, Extindere software |