Knižnica HT32 CMSIS-DSP
Používateľská príručka
D/N: AN0538EN
Úvod
CMSIS je softvérové štandardné rozhranie vyvinuté spoločnosťou ARM, ktoré má celý názov Cortex Microcontroller Software Interface Standard. Pomocou tohto štandardného rozhrania môžu vývojári použiť rovnaké rozhranie na ovládanie mikrokontrolérov od rôznych dodávateľov, čím sa výrazne skráti čas ich vývoja a učenia. Bližšie informácie nájdete u predstaviteľa CMSIS webmiesto: http://www.keil.com/pack/doc/CMSIS/General/html/index.html. Tento text popisuje hlavne aplikáciu CMSIS-DSP v rade mikrokontrolérov HT32, ktorá zahŕňa nastavenie prostredia, smer použitia atď.
Popis funkcie
Vlastnosti CMSIS-DSP
CMSIS-DSP, ktorý je jednou z komponentov CMSIS, obsahuje nasledujúce funkcie.
- Poskytuje súbor všeobecných funkcií spracovania signálu určených pre Cortex-M.
- Knižnica funkcií poskytovaná ARM má viac ako 60 funkcií.
- Podporuje q7, q15, q31
(Poznámka) a dátové typy s pohyblivou rádovou čiarkou (32-bit). - Implementácie sú optimalizované pre inštrukčnú sadu SIMD, ktorá je dostupná pre Cortex-M4/M7/M33/M35P.
Poznámka: Pomenovanie q7, q15 a q31 v knižnici funkcií predstavuje 8, 16 a 32 bitové pevné body.
Položky knižnice funkcií CMSIS-DSP
Knižnica funkcií CMSIS-DSP je rozdelená do nasledujúcich kategórií:
- Základné matematické funkcie, rýchle matematické funkcie a zložité matematické funkcie
- Funkcie filtrovania signálu
- Maticové funkcie
- Transformačné funkcie
- Funkcie ovládania motora
- Štatistické funkcie
- Podporné funkcie
- Interpolačné funkcie
Nastavenie prostredia
Táto časť predstaví hardvér a softvér použitý v aplikácii naprample.
Hardvér
Hoci CMSIS-DSP podporuje plnú sériu HT32, odporúča sa použiť MCU s kapacitou SRAM väčšou ako 4 KB ako aplikácia CMSIS-DSP napr.ample vyžaduje väčšiu veľkosť SRAM. Tento text berie ESK32-30501 ako example, ktorý používa HT32F52352.
softvér
Pred použitím aplikácie naprampNajprv sa uistite, že bola stiahnutá najnovšia knižnica firmvéru Holtek HT32 z oficiálnej stránky spoločnosti Holtek webstránky. Miesto sťahovania je znázornené na obrázku
Dekomprimovať file po stiahnutí.
Stiahnite si kód aplikácie CMSIS-DSP prostredníctvom odkazu nižšie. Kód aplikácie je zabalený ako zips file s názvom HT32_APPFW_xxxxx_CMSIS_DSP_vn_m.zip.
Cesta na stiahnutie: https://mcu.holtek.com.tw/ht32/app.fw/CMSIS_DSP/
The file pravidlo pomenovania je znázornené na obrázku 2.
Pretože kód aplikácie neobsahuje knižnicu firmvéru files, používatelia musia umiestniť rozbalený aplikačný kód a knižnicu firmvéru files na správnu cestu pred spustením kompilácie. Kód aplikácie file obsahuje dva priečinky, ktorými sú aplikácia a knižnica, ktorých umiestnenie je znázornené na obrázku 3. Umiestnite tieto dva priečinky do koreňového adresára knižnice firmvéru, aby ste dokončili file konfigurácia cesty, ako je znázornené na obrázku 4. Užívatelia môžu tiež dekomprimovať kód aplikácie a komprimovanú knižnicu firmvéru files na rovnakú cestu, aby sa dosiahol rovnaký efekt. Pre túto example, adresár pre CMSIS_DSP sa po dekompresii zobrazí pod priečinkom aplikácie.
File Štruktúra
Dva hlavné priečinky zahrnuté v kóde aplikácie file, knižnica\CMSIS a aplikácia\CMSIS_DSP, sú jednotlivo popísané nižšie.
Obsah priečinka library\CMSIS je nasledujúci.
Názov priečinka | Popis |
DSP_Lib | Zdrojový kód FW aplikácie |
DSP_Lib\Examples | Obsahuje viacero štandardných exampsúbory knižnice funkcií CMSIS-DSP, ktoré poskytuje ARM. Nastavenia pre tieto projekty sa vykonávajú simulovaným spôsobom bez potreby MCU. Používatelia sa môžu rýchlo naučiť používať tieto exampich vykonaním. |
DSP_Lib\Source | Zdrojový kód knižnice funkcií CMSIS-DSP |
Zahrnúť | Nevyhnutná hlavička file pri použití knižnice funkcií CMSIS-DSP |
Include\arm_common_tables.h | Deklarácia externých premenných poľa (externé) |
Include\arm_const_structs.h | Deklarácia vonkajších konštánt |
Zahrnúť\arm_math.h | Toto file je veľmi dôležité ako rozhranie na používanie knižnice funkcií CMSIS-DSP. Volania akejkoľvek knižnice funkcií API sú implementované cez arm_math.h. |
Lib\ARM | Knižnica funkcií CMSIS-DSP pre ARMCC l arm_cortexM3l_math.lib (Cortex-M3, Little ndian) l arm_cortexM0l_math.lib (Cortex-M0 / M0+, Little endian) |
Lib\GCC | Knižnica funkcií CMSIS-DSP pre GCC l libarm_cortexM3l_math.a (Cortex-M3, Little ndian) l libarm_cortexM0l_math.a (Cortex-M0 / M0+, Little endian) |
Priečinok application\CMSIS_DSP obsahuje viacero CMSIS_DSP napramplesov, ktoré používajú sériu MCU HT32 a podporujú celú sériu HT32. Projekty sú vyvinuté pomocou Keil MDK_ARM.
Názov priečinka | Popis |
arm_class_marks_example | Ukazuje, ako získať maximálnu hodnotu, minimálnu hodnotu, očakávanú hodnotu, štandardnú odchýlku, rozptyl a maticové funkcie. |
arm_convolution_example | Demonštruje konvolučný teorém prostredníctvom komplexných FFT a podporných funkcií. |
arm_dotproduct_example | Ukazuje, ako získať bodový súčin pomocou násobenia a sčítania vektorov. |
arm_fft_bin_example | Ukazuje, ako vypočítať maximálne energetické okno (bin) vo frekvenčnej doméne vstupných signálov pomocou komplexných funkcií FFT, komplexnej magnitúdy a maximálneho modulu. |
arm_fir_example | Ukazuje, ako implementovať dolnopriepustné filtrovanie pomocou FIR. |
arm_graphic_equalizer_example | Ukazuje, ako zmeniť kvalitu zvuku pomocou grafického ekvalizéra. |
arm_linear_interp_example | Ukazuje použitie modulu lineárnej interpolácie a modulu rýchlej matematiky. |
arm_matrix_example | Demonštruje výpočet maticovej korelácie vrátane transformácie matice, násobenia matice a inverzie matice. |
arm_signal_converge_example | Demonštruje samonastaviteľný dolnopriepustný filter FIR pomocou modulov NLMS (Normalised Least Mean Square), FIR a základných matematických modulov. |
arm_sin_cos_example | Demonštruje trigonometrické výpočty. |
arm_variance_example | Ukazuje, ako vypočítať rozptyl pomocou základných matematických a podporných funkcií. |
filter_iir_high_pass_example | Ukazuje, ako implementovať vysokopriepustné filtrovanie pomocou IIR. |
Test
Tento text bude používať aplikáciu\CMSIS_DSP\arm_class_marks_example ako test example. Pred začatím testovania skontrolujte, či je ESK32-30501 pripojený alebo nie, a uistite sa, že kód aplikácie a knižnica firmvéru boli umiestnené na správnom mieste. Otvorte aplikáciu\CMSIS_DSP\arm_class_marks_example a spustite súbor _CreateProject.bat file, ako je uvedené nižšie. Potom otvorte MDK_ARMv5 (alebo MDK_ARM pre Keilv4), aby ste zistili, že tento example podporuje celú sériu HT32. Otvorte projekt Project_52352.uvprojx, pretože sa používa ESK32-30501.
Po otvorení projektu skompilujte (klávesová skratka “F7”), stiahnite (klávesová skratka “F8”), odlaďte (klávesová skratka “Ctrl+F5”) a potom spustite (klávesová skratka “F5”). Výsledky vykonania možno pozorovať pomocou premenných uvedených nižšie.
Variabilné Meno | Smer údajov | Popis | Výsledok vykonania |
testMarks_f32 | Vstup | Jedno pole 20×4 | – |
testUnity_f32 | Vstup | Jedno pole 4×1 | – |
testovací výstup | Výstup | Produkt testMarks_f32 a testUnity_f32 | {188, 229, 210...} |
max_marks | Výstup | Maximálna hodnota prvkov v testovacom výstupnom poli | 364 |
min_marks | Výstup | Minimálna hodnota prvkov v testovacom výstupnom poli | 156 |
priemerný | Výstup | Očakávaná hodnota prvkov v testovacom výstupnom poli | 212.300003 |
std | Výstup | Štandardná odchýlka prvkov v testovacom výstupnom poli | 50.9128189 |
var | Výstup | Rozptyl prvkov v testovacom výstupnom poli | 2592.11523 |
Návod na použitie
integrácia
Táto časť predstaví, ako integrovať CMSIS-DSP do projektov používateľov.
Krok 1
Najprv pridajte nový symbol definície pri nastavovaní projektu, „ARM_MATH_CM0PLUS“ pre M0+ a „ARM_MATH_CM3“ pre M3. Postup nastavenia: (1) Možnosti klávesovej skratky Target “Alt+F7”), (2) Vyberte stránku C/C++, (3) Pridajte novú definíciu vo voľbe Define, ako je uvedené nižšie.
Krok 2
Ak chcete pridať cestu Zahrnúť, kliknite na tlačidlo vedľa možnosti „Zahrnúť cesty“ na stránke C/C++. Potom sa zobrazí okno Nastavenie priečinka, kde je možné pridať novú cestu ..\..\..\..\library\CMSIS\Include”, ako je uvedené nižšie.
Krok 3 (Voliteľné)
Ak chcete pridať knižnicu funkcií, kliknite na tlačidlo „Spravovať položky projektu“, ako je uvedené nižšie. Ak sa tlačidlo nezobrazuje, kliknite na „Okno → Obnoviť View na Predvolené → Obnoviť“, takže konfigurácia okna IDE sa vráti na predvolené nastavenia. Potom sa zobrazí tlačidlo „Spravovať položky projektu“.
Pridajte priečinok CMSIS-DSP pomocou tlačidiel, ako je znázornené v červenom poli nižšie, a presuňte ho pod priečinok CMSIS pomocou tlačidla „Posunúť nahor“. Po dokončení zatvorte okno Spravovať položky projektu.
Krok 4
Dvakrát kliknite na priečinok CMSIS-DSP vľavo (ak preskočíte krok 3, vyberte ľubovoľný priečinok, ako napríklad Používateľ alebo CMSIS atď.), potom doň pridajte knižnicu funkcií CMSIS-DSP. Vyberte \library\CMSIS\Lib\ARM\arm_cortexM0l_math.lib pre M0+ alebo \library\CMSIS\Lib\ARM \arm_cortexM3l_math.lib pre M3. Po dokončení sa knižnica funkcií arm_cortexMxl_math.lib zobrazí v priečinku CMSIS-DSP, ako je uvedené nižšie.
Krok 5
Pridajte hlavu file „arm_math.h“ do main.c, ako je uvedené nižšie. Teraz sú všetky nastavenia integrácie dokončené
Nízkopriepustný filter – FIR
Táto sekcia predstavením aplikácie\CMSIS_DSP\arm_fir_example, ukáže, ako nastaviť FIR filter a odstrániť vysokofrekvenčné signály pomocou FIR. Vstupný signál sa skladá zo sínusových vĺn 1 kHz a 15 kHz. Signál sampfrekvencia je 48 kHz. Signály nad 6 kHz sú filtrované FIR a na výstupe sú signály 1 kHz. Kód aplikácie je rozdelený do niekoľkých častí.
- Inicializácia. Na inicializáciu FIR sa používa nasledujúce API.
void arm_fir_init_f32 (arm_fir_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, uint32_t blockSize);
S: Štruktúra filtra FIR
číslice: Počet filtrov stages (počet koeficientov filtra). V tomto example, numTaps=29.
Coffs: koeficient filtra. V tomto príklade je 29 filtračných koeficientovample, ktorý vypočíta MATLAB.
stav: Indikátor stavu
blockSize: Predstavuje počet sampspracované naraz. - Nízkopriepustný filter. Volaním API FIR, 32 sampsúbory sú spracované zakaždým a je ich 320 sampcelkovo. Použité API je uvedené nižšie.
void arm_fir_f32 (const arm_fir_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize);
S: Štruktúra filtra FIR
pSrc: Vstupný signál. V tomto príklade je na vstupe zmiešaný signál 1 kHz a 15 kHzample. pDst: Výstupný signál. Očakávaný výstupný signál je 1 kHz. blockSize: Predstavuje počet sampspracované naraz. - Overenie údajov. Výsledok filtrovania získaný pomocou MATLABu sa považuje za referenčný a výsledok filtrovania získaný pomocou CMSIS-DSP je aktuálna hodnota. Porovnajte dva výsledky a overte, či je výstupný výsledok správny alebo nie. float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)
Pref: Referenčná hodnota vygenerovaná MATLABom.
príspevok: Skutočná hodnota generovaná CMSIS-DSP.
blockSize: Predstavuje počet sampspracované naraz.
Ako je uvedené nižšie, vstupné dáta ukazujú, že signál ešte nie je filtrovaný a výstupné dáta zobrazujú filtrovaný výsledok. Os Y predstavuje ampšírka signálu a sampfrekvencia je 48 kHz, takže číslo na osi X plus jedna predstavuje čas plus 20.833 μs. Z obrázku 12 a obrázku 13 je možné zistiť, že 15kHz signál je eliminovaný a zostáva len 1kHz signál.
Vysokopriepustný filter – IIR
Táto sekcia zavedením aplikácie\CMSIS_DSP\filter_iir_high_pass_example, ukáže, ako nastaviť IIR filter a odstrániť nízkofrekvenčné signály pomocou IIR. Vstupný signál sa skladá zo sínusových vĺn 1Hz a 30Hz. Signál sampfrekvencia je 100 Hz a spolu 480 bodov je sampviedol. Signály pod 7 Hz sú odstránené IIR.
Kód aplikácie je rozdelený do niekoľkých častí.
- K dispozícii sú 480 samples. Sample 0~159 sú 30Hz sínusové vlny, sample 160~319 sú 1Hz sínusové vlny a sample 320~479 sú 30Hz sínusové vlny.
- Inicializácia. Na inicializáciu IIR sa používa nasledujúce API. void arm_biquad_cascade_df1_init_f32 (arm_biquad_casd_df1_inst_f32 *S, uint8_t numStages, float32_t *pCoeffs, float32_t *state));
S: Štruktúra filtra IIR
súčet stages: Počet stages vo filtri. V tomto example, numStages=1.
Coffs: koeficient filtra. V tomto príklade je 5 filtračných koeficientovample.
stav: Indikátor stavu - Vysokopriepustný filter. Volaním API IIR, 1 sample sa spracováva zakaždým a je tam 480 sampcelkovo. Použité API je uvedené nižšie. void arm_biquad_cascade_df1_f32 (const arm_biquad_casd_df1_inst_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize);
S: Štruktúra filtra IIR
pSrc: Vstupný signál. V tomto príklade je na vstupe zmiešaný signál 1Hz a 30Hzample.
pDst: Výstupný signál. Očakávaný výstupný signál je 30 Hz.
blockSize: Predstavuje počet sampspracované naraz. - Výstup výsledku. Vstupné a výstupné signály sa vytlačia do počítača. Ako je uvedené nižšie, vstupné dáta ukazujú, že signál ešte nie je filtrovaný a výstupné dáta zobrazujú filtrovaný výsledok. Os Y predstavuje ampšírka signálu a sampfrekvencia je 100 Hz, takže číslo na osi X plus jedna predstavuje čas plus 10 ms. Z obrázku 14 a obrázku 15 je možné zistiť, že 1Hz signál je eliminovaný a zostáva len 30Hz signál.
Úvahy
Používatelia by mali pri používaní knižnice funkcií CMSIS-DSP venovať osobitnú pozornosť veľkosti pamäte po kompilácii. Pred testovaním sa uistite, že nedošlo k preplneniu pamäte.
Záver
CMSIS-DSP má skvelé schopnosti v oblasti spracovania signálu a matematických výpočtov a je hodný seriózneho zváženia používateľov.
Referenčný materiál
Odkaz webmiesto: http://www.keil.com/pack/doc/CMSIS/General/html/index.html
Verzie a informácie o úpravách
Dátum | Autor | Vydanie | Informácie o úprave |
2022.06.02 | Píšem, Liu | V1.10 | Upravte cestu sťahovania |
2019.09.03 | Allen, Wang | V1.00 | Prvá verzia |
Vylúčenie zodpovednosti
Všetky informácie, ochranné známky, logá, grafika, videá, zvukové klipy, odkazy a ďalšie položky, ktoré sa tu objavujú webstránky (ďalej len „informácie“) sú len orientačné a môžu sa kedykoľvek zmeniť bez predchádzajúceho upozornenia a podľa uváženia spoločnosti Holtek Semiconductor Inc. a jej pridružených spoločností (ďalej len „Holtek“, „spoločnosť“, „nás“, „ my“ alebo „naše“). Zatiaľ čo Holtek sa snaží zabezpečiť presnosť informácií o tomto webSpoločnosť Holtek neposkytuje žiadnu výslovnú ani implicitnú záruku na presnosť informácií. Holtek nenesie žiadnu zodpovednosť za akúkoľvek nesprávnosť alebo únik. Holtek nezodpovedá za žiadne škody (vrátane, ale nie výlučne, počítačového vírusu, systémových problémov alebo straty dát), bez ohľadu na to, ktoré vzniknú pri používaní alebo v súvislosti s používaním tohto webstránky ktorejkoľvek strany. V tejto oblasti môžu byť odkazy, ktoré vám umožňujú navštíviť stránku webstránky iných spoločností. Títo webstránky nie sú kontrolované spoločnosťou Holtek. Holtek nenesie žiadnu zodpovednosť a žiadnu záruku za akékoľvek informácie zobrazené na takýchto stránkach. Hypertextové odkazy na iné webstránky sú na vlastné riziko.
Obmedzenie zodpovednosti
V každom prípade Spoločnosť nemusí niesť zodpovednosť za akúkoľvek stratu alebo škodu spôsobenú, keď niekto navštívi stránku webpriamo alebo nepriamo a používa obsah, informácie alebo službu na webstránky.
Rozhodujúce právo
Toto vylúčenie zodpovednosti podlieha zákonom Čínskej republiky a podlieha jurisdikcii Súdu Čínskej republiky.
Aktualizácia Vylúčenia zodpovednosti
Holtek si vyhradzuje právo aktualizovať Vyhlásenie kedykoľvek s predchádzajúcim upozornením alebo bez neho, všetky zmeny sú účinné okamžite po zverejnení na webstránky.
Dokumenty / zdroje
![]() |
Knižnica HOLTEK HT32 CMSIS-DSP [pdf] Používateľská príručka HT32, CMSIS-DSP Library, HT32 CMSIS-DSP Library, Library |