Knjižnica HT32 CMSIS-DSP
Uporabniški priročnik
D/N: AN0538EN
Uvod
CMSIS je programski standardni vmesnik, ki ga je razvil ARM in ima polno ime Cortex Microcontroller Software Interface Standard. S tem standardnim vmesnikom lahko razvijalci uporabljajo isti vmesnik za krmiljenje mikrokontrolerjev različnih dobaviteljev in tako močno skrajšajo svoj čas razvoja in učenja. Za več informacij se obrnite na uradnika CMSIS webspletno mesto: http://www.keil.com/pack/doc/CMSIS/General/html/index.html. To besedilo v glavnem opisuje aplikacijo CMSIS-DSP v seriji mikrokontrolerjev HT32, ki vključuje nastavitev okolja, navodila za uporabo itd.
Funkcionalni opis
Funkcije CMSIS-DSP
CMSIS-DSP, ki je ena od komponent CMSIS, vključuje naslednje funkcije.
- Zagotavlja niz generičnih funkcij za obdelavo signalov, namenjenih Cortex-M.
- Knjižnica funkcij, ki jo ponuja ARM, ima več kot 60 funkcij.
- Podpira q7, q15, q31
(Opomba) in podatkovni tipi s plavajočo vejico (32-bitni). - Izvedbe so optimizirane za nabor navodil SIMD, ki je na voljo za Cortex-M4/M7/M33/M35P.
Opomba: Poimenovanje q7, q15 in q31 v knjižnici funkcij predstavlja 8, 16 in 32-bitne fiksne točke.
Elementi knjižnice funkcij CMSIS-DSP
Knjižnica funkcij CMSIS-DSP je razdeljena na naslednje kategorije:
- Osnovne matematične funkcije, hitre matematične funkcije in kompleksne matematične funkcije
- Funkcije filtriranja signala
- Matrične funkcije
- Transformacijske funkcije
- Funkcije krmiljenja motorja
- Statistične funkcije
- Podporne funkcije
- Interpolacijske funkcije
Nastavitev okolja
Ta razdelek bo predstavil strojno in programsko opremo, uporabljeno v aplikaciji, nprample.
Strojna oprema
Čeprav CMSIS-DSP podpira celotno serijo HT32, je predlagana uporaba MCU z zmogljivostjo SRAM, večjo od 4 KB, kot aplikacija CMSIS-DSP npr.ample zahteva večjo velikost SRAM. To besedilo vzame ESK32-30501 kot primerampki uporablja HT32F52352.
Programska oprema
Pred uporabo aplikacije nprampnajprej zagotovite, da je bila najnovejša knjižnica vdelane programske opreme Holtek HT32 prenesena iz uradnega Holteka webmesto. Lokacija prenosa je prikazana na sliki
Dekomprimirajte file po prenosu.
Prenesite kodo aplikacije CMSIS-DSP prek spodnje povezave. Koda aplikacije je zapakirana kot zip file z imenom HT32_APPFW_xxxxx_CMSIS_DSP_vn_m.zip.
Pot prenosa: https://mcu.holtek.com.tw/ht32/app.fw/CMSIS_DSP/
The file pravilo poimenovanja je prikazano na sliki 2.
Ker koda aplikacije ne vsebuje knjižnice vdelane programske opreme files, morajo uporabniki namestiti razpakirano kodo aplikacije in knjižnico vdelane programske opreme files na pravilno pot pred začetkom prevajanja. Koda aplikacije file vsebuje dve mapi, ki sta aplikacija in knjižnica, katerih lokacija je prikazana na sliki 3. Postavite ti dve mapi v korenski imenik knjižnice vdelane programske opreme, da dokončate file konfiguracijo poti, kot je prikazano na sliki 4. Uporabniki lahko tudi dekompresirajo kodo aplikacije in stisnjeno knjižnico vdelane programske opreme files na isto pot, da dosežemo enak učinek. Za tega bivšegaample, bo imenik za CMSIS_DSP viden pod mapo aplikacije po dekompresiji.
File Struktura
Dve glavni mapi, vključeni v kodo aplikacije file, knjižnica\CMSIS in aplikacija\CMSIS_DSP, so posamezno opisani spodaj.
Vsebina mape knjižnica\CMSIS je naslednja.
Ime mape | Opis |
DSP_Lib | Izvorna koda FW aplikacije |
DSP_Lib\Examples | Vsebuje več standardnih exampdatotek knjižnice funkcij CMSIS-DSP, ki jih zagotavlja ARM. Nastavitve za te projekte se izvajajo na simuliran način brez potrebe po MCU. Uporabniki se lahko hitro naučijo uporabljati te example z njihovo izvršitvijo. |
DSP_Lib\Source | Izvorna koda knjižnice funkcij CMSIS-DSP |
Vključi | Potrebna glava file pri uporabi knjižnice funkcij CMSIS-DSP |
Vključi\arm_common_tables.h | Deklaracija zunanjih matričnih spremenljivk (extern) |
Vključi\arm_const_structs.h | Deklaracija zunanjih konstant |
Vključi\arm_math.h | to file je zelo pomemben kot vmesnik za uporabo knjižnice funkcij CMSIS-DSP. Klici katerega koli API knjižnice funkcij so implementirani prek arm_math.h. |
Lib\ARM | Knjižnica funkcij CMSIS-DSP za ARMCC l arm_cortexM3l_math.lib (Cortex-M3, Little ndian) l arm_cortexM0l_math.lib (Cortex-M0 / M0+, Little endian) |
Lib\GCC | Knjižnica funkcij CMSIS-DSP za GCC l libarm_cortexM3l_math.a (Cortex-M3, Little ndian) l libarm_cortexM0l_math.a (Cortex-M0 / M0+, Little endian) |
Mapa application\CMSIS_DSP vsebuje več CMSIS_DSP exampdatoteke, ki uporabljajo serijo MCU-jev HT32 in podpirajo celotno serijo HT32. Projekti so razviti z uporabo Keil MDK_ARM.
Ime mape | Opis |
arm_class_marks_example | Prikazuje, kako pridobiti največjo vrednost, najmanjšo vrednost, pričakovano vrednost, standardno deviacijo, varianco in matrične funkcije. |
arm_convolution_example | Demonstrira konvolucijski izrek prek kompleksnega FFT in podpornih funkcij. |
arm_dotproduct_example | Prikazuje, kako pridobiti pikčasti produkt z množenjem in seštevanjem vektorjev. |
arm_fft_bin_example | Prikazuje, kako izračunati največje energijsko okno (bin) v frekvenčni domeni vhodnih signalov z uporabo funkcij kompleksnega FFT, kompleksne magnitude in največjega modula. |
arm_fir_example | Prikazuje, kako implementirati nizkopasovno filtriranje z uporabo FIR. |
arm_graphic_equalizer_example | Prikazuje, kako spremeniti kakovost zvoka z uporabo grafičnega izenačevalnika. |
arm_linear_interp_example | Prikazuje uporabo modula linearne interpolacije in modula hitre matematike. |
arm_matrix_example | Prikazuje izračun matrične korelacije, vključno s pretvorbo matrike, množenjem matrike in inverzno matriko. |
arm_signal_converge_example | Prikazuje samonastavljiv nizkopasovni filter FIR z uporabo modulov NLMS (Normalizirani najmanjši srednji kvadrat), FIR in osnovnih matematičnih modulov. |
arm_sin_cos_example | Demonstrira trigonometrične izračune. |
arm_variance_example | Prikazuje, kako izračunati varianco z osnovno matematiko in podpornimi funkcijami. |
filter_iir_visokoprepustni_example | Prikazuje, kako implementirati visokofrekvenčno filtriranje z uporabo IIR. |
Test
To besedilo bo uporabilo aplikacijo\CMSIS_DSP\arm_class_marks_example kot test example. Pred začetkom testiranja preverite, ali je bil ESK32-30501 povezan ali ne, in zagotovite, da sta koda aplikacije in knjižnica vdelane programske opreme nameščeni na pravo mesto. Odprite aplikacijo\CMSIS_DSP\arm_class_marks_exampin izvedite datoteko _CreateProject.bat file, kot je prikazano spodaj. Po tem odprite MDK_ARMv5 (ali MDK_ARM za Keilv4), da ugotovite, da ta example podpira celotno serijo HT32. Odprite projekt Project_52352.uvprojx, ker je uporabljen ESK32-30501.
Ko odprete projekt, prevedite (tipka za bližnjico »F7«), prenesite (tipka za bližnjico »F8«), razhroščite (tipka za bližnjico »Ctrl+F5«) in nato izvedite (tipka za bližnjico »F5«). Rezultate izvajanja je mogoče opazovati z uporabo spodaj navedenih spremenljivk.
Spremenljivka Ime | Smer podatkov | Opis | Rezultat izvedbe |
testMarks_f32 | Vnos | En niz 20×4 | – |
testUnity_f32 | Vnos | En niz 4×1 | – |
testni rezultat | Izhod | Produkt testMarks_f32 in testUnity_f32 | {188,229,210…} |
max_marks | Izhod | Največja vrednost elementov v testnem izhodnem polju | 364 |
min_marks | Izhod | Najmanjša vrednost elementov v testnem izhodnem polju | 156 |
pomeniti | Izhod | Pričakovana vrednost elementov v testnem izhodnem polju | 212.300003 |
std | Izhod | Standardni odklon elementov v testnem izhodnem polju | 50.9128189 |
var | Izhod | Varianca elementov v testnem izhodnem polju | 2592.11523 |
Navodila za uporabo
Integracija
Ta razdelek bo predstavil, kako integrirati CMSIS-DSP v projekte uporabnikov.
1. korak
Najprej dodajte nov simbol Define pri nastavitvi projekta, »ARM_MATH_CM0PLUS« za M0+ in »ARM_MATH_CM3« za M3. Postopek nastavitve: (1) Možnosti ciljne bližnjične tipke “Alt+F7”), (2) Izberite stran C/C++, (3) Dodajte novo definicijo v možnost Define, kot je prikazano spodaj.
2. korak
Če želite dodati Vključno pot, kliknite gumb poleg možnosti »Vključi poti« na strani C/C++. Nato se prikaže okno Folder Setup, kjer lahko dodate novo pot ..\..\..\..\library\CMSIS\Include«, kot je prikazano spodaj.
3. korak (izbirno)
Če želite dodati knjižnico funkcij, kliknite gumb »Upravljanje elementov projekta«, kot je prikazano spodaj. Če gumb ni prikazan, kliknite »Okno → Ponastavi View na Privzete → Ponastavi«, tako da se bo konfiguracija okna IDE vrnila na privzete nastavitve. Po tem se prikaže gumb »Upravljanje elementov projekta«.
Dodajte mapo CMSIS-DSP z gumbi, kot je prikazano v spodnjem rdečem polju, in jo premaknite pod mapo CMSIS z gumbom »Premakni gor«. Ko končate, zaprite okno Manage Project tems.
4. korak
Dvokliknite mapo CMSIS-DSP na levi (če je 3. korak preskočen, izberite katero koli mapo, kot je Uporabnik ali CMSIS itd.), nato vanjo dodajte knjižnico funkcij CMSIS-DSP. Izberite \library\CMSIS\Lib\ARM\arm_cortexM0l_math.lib za M0+ ali \library\CMSIS\Lib\ARM \arm_cortexM3l_math.lib za M3. Po zaključku bo knjižnica funkcij arm_cortexMxl_math.lib prikazana v mapi CMSIS-DSP, kot je prikazano spodaj.
5. korak
Dodajte glavo file »arm_math.h« v main.c, kot je prikazano spodaj. Zdaj so vse nastavitve integracije dokončane
Nizkoprepustni filter – FIR
Ta razdelek z uvedbo aplikacije\CMSIS_DSP\arm_fir_example, bo pokazal, kako nastaviti filter FIR in odstraniti visokofrekvenčne signale z uporabo FIR. Vhodni signal je sestavljen iz sinusnih valov 1kHz in 15kHz. Signal sampfrekvenca je 48kHz. Signale nad 6 kHz filtrira FIR in oddajo signale 1 kHz. Koda aplikacije je razdeljena na več delov.
- Inicializacija. Za inicializacijo FIR se uporablja naslednji API.
void arm_fir_init_f32 (arm_fir_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, uint32_t blockSize);
S: struktura FIR filtra
številke: Število filtrov stages (število koeficientov filtra). V tem bivšemample, numTaps=29.
Coffs: Koeficient filtra. V tem primeru je 29 filtrskih koeficientovample, ki ga izračuna MATLAB.
stanje: indikator stanja
blockSize: Predstavlja število sampobdelanih naenkrat. - Nizkoprepustni filter. S klicem API FIR, 32 sampdatoteke se vsakič obdelajo in jih je 320 samples skupaj. Uporabljeni API je prikazan spodaj.
void arm_fir_f32 (const arm_fir_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize);
S: struktura FIR filtra
pSrc: Vhodni signal. Mešani signal 1kHz in 15kHz je vhod v ta example. pDst: Izhodni signal. Pričakovani izhodni signal je 1kHz. blockSize: Predstavlja število sampobdelanih naenkrat. - Preverjanje podatkov. Rezultat filtriranja, pridobljen z MATLAB, velja za referenco, rezultat filtriranja, pridobljen s CMSIS-DSP, pa je dejanska vrednost. Primerjajte oba rezultata, da preverite, ali je izhodni rezultat pravilen ali ne. float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)
Pref: Referenčna vrednost, ki jo ustvari MATLAB.
post: Dejanska vrednost, ki jo ustvari CMSIS-DSP.
blockSize: Predstavlja število sampobdelanih naenkrat.
Kot je prikazano spodaj, vhodni podatki kažejo, da signal še ni filtriran, izhodni podatki pa prikazujejo filtriran rezultat. Y-os predstavlja ampjakost signala in sampfrekvenca je 48 kHz, tako da število na osi X plus ena predstavlja čas plus 20.833 μs. Na sliki 12 in sliki 13 je razvidno, da je signal 15 kHz izločen in ostane samo signal 1 kHz.
Visokoprepustni filter – IIR
Ta razdelek z uvedbo aplikacije\CMSIS_DSP\filter_iir_high_pass_example, bo pokazal, kako nastaviti filter IIR in odstraniti nizkofrekvenčne signale z uporabo IIR. Vhodni signal je sestavljen iz sinusnih valov 1Hz in 30Hz. Signal sampling frekvenca je 100Hz in skupno 480 točk je sampLED. Signale pod 7Hz odstrani IIR.
Koda aplikacije je razdeljena na več delov.
- Obstajajo 480 samples. Sample 0~159 so 30Hz sinusni valovi, sample 160~319 so 1Hz sinusni valovi in sample 320~479 so 30Hz sinusni valovi.
- Inicializacija. Za inicializacijo IIR se uporablja naslednji API. void arm_biquad_cascade_df1_init_f32 (arm_biquad_casd_df1_inst_f32 *S, uint8_t numStages, float32_t *pCoeffs, float32_t *stanje));
S: struktura IIR filtra
vsota stages: število s drugega redatagje v filtru. V tem bivšemample, numStages=1.
Coffs: Koeficient filtra. V tem primeru je 5 filtrskih koeficientovample.
stanje: indikator stanja - Visokofreskovni filter. S klicem API-ja IIR, 1 sample se vsakič obdela in je 480 samples skupaj. Uporabljeni API je prikazan spodaj. void arm_biquad_cascade_df1_f32 (const arm_biquad_casd_df1_inst_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize);
S: struktura IIR filtra
pSrc: Vhodni signal. Mešani signal 1Hz in 30Hz je vhod v ta example.
pDst: Izhodni signal. Pričakovani izhodni signal je 30Hz.
blockSize: Predstavlja število sampobdelanih naenkrat. - Rezultat. Vhodni in izhodni signali se posredujejo v osebni računalnik prek tiskanja. Kot je prikazano spodaj, vhodni podatki kažejo, da signal še ni filtriran, izhodni podatki pa prikazujejo filtriran rezultat. Y-os predstavlja ampjakost signala in sampfrekvenca je 100 Hz, tako da število na osi X plus ena predstavlja čas plus 10 ms. Na sliki 14 in sliki 15 je razvidno, da je signal 1 Hz izločen in ostane samo signal 30 Hz.
Premisleki
Uporabniki naj bodo pri uporabi knjižnice funkcij CMSIS-DSP posebno pozorni na velikost pomnilnika po prevajanju. Pred testiranjem se prepričajte, da ne pride do prelivanja pomnilnika.
Zaključek
CMSIS-DSP ima odlične sposobnosti obdelave signalov in matematičnih izračunov in je vreden resne obravnave uporabnikov.
Referenčni material
Referenca webspletno mesto: http://www.keil.com/pack/doc/CMSIS/General/html/index.html
Različice in informacije o spremembah
Datum | Avtor | Izdaja | Informacije o spremembah |
2022.06.02 | Pisanje, Liu | V1.10 | Spremenite pot prenosa |
2019.09.03 | Allen, Wang | V1.00 | Prva različica |
Zavrnitev odgovornosti
Vse informacije, blagovne znamke, logotipi, grafike, videi, zvočni posnetki, povezave in drugi elementi, ki se pojavljajo na tem webspletno mesto ('Informacije') so samo za referenco in se lahko kadar koli spremenijo brez predhodnega obvestila in po presoji družbe Holtek Semiconductor Inc. in njenih povezanih družb (v nadaljevanju 'Holtek', 'podjetje', 'nas', ' mi« ali »naš«). Medtem ko si Holtek prizadeva zagotoviti točnost informacij o tem webstrani, Holtek ne daje nobenega izrecnega ali implicitnega jamstva za točnost informacij. Holtek ne prevzema nobene odgovornosti za kakršno koli nepravilnost ali puščanje. Holtek ni odgovoren za nobeno škodo (vključno, vendar ne omejeno na računalniške viruse, sistemske težave ali izgubo podatkov), ki bi nastala pri uporabi ali v povezavi z uporabo tega webkatero koli stran. Na tem področju so lahko povezave, ki vam omogočajo obisk webstrani drugih podjetij. te webstrani niso pod nadzorom Holteka. Holtek ne prevzema nikakršne odgovornosti in jamstva za kakršne koli informacije, prikazane na takšnih straneh. Hiperpovezave do drugih webspletna mesta so na lastno odgovornost.
Omejitev odgovornosti
V vsakem primeru podjetju ni treba prevzeti odgovornosti za kakršno koli izgubo ali škodo, povzročeno, ko kdorkoli obišče webspletnem mestu neposredno ali posredno in uporablja vsebino, informacije ali storitev na webmesto.
Veljavno pravo
Za to izjavo o omejitvi odgovornosti veljajo zakoni Republike Kitajske in je v pristojnosti sodišča Republike Kitajske.
Posodobitev izjave o omejitvi odgovornosti
Holtek si pridržuje pravico, da kadar koli posodobi Izjavo o zavrnitvi odgovornosti s predhodnim obvestilom ali brez njega, vse spremembe začnejo veljati takoj po objavi na webmesto.
Dokumenti / Viri
![]() |
Knjižnica HOLTEK HT32 CMSIS-DSP [pdf] Uporabniški priročnik HT32, knjižnica CMSIS-DSP, knjižnica HT32 CMSIS-DSP, knjižnica |