Knihovna HT32 CMSIS-DSP
Uživatelská příručka
D/N: AN0538EN
Zavedení
CMSIS je softwarové standardní rozhraní vyvinuté společností ARM, které má plný název Cortex Microcontroller Software Interface Standard. S tímto standardním rozhraním mohou vývojáři používat stejné rozhraní k ovládání mikrokontrolérů od různých dodavatelů, čímž výrazně zkracují dobu jejich vývoje a učení. Další informace získáte od úředníka CMSIS webmísto: http://www.keil.com/pack/doc/CMSIS/General/html/index.html. Tento text popisuje především aplikaci CMSIS-DSP v řadě mikrokontrolérů HT32, která zahrnuje nastavení prostředí, směr použití atd.
Popis funkce
Vlastnosti CMSIS-DSP
CMSIS-DSP, což je jedna z komponent CMSIS, obsahuje následující funkce.
- Poskytuje sadu obecných funkcí zpracování signálu vyhrazených pro Cortex-M.
- Knihovna funkcí poskytovaná ARM má více než 60 funkcí.
- Podporuje q7, q15, q31
(Poznámka) a datové typy s pohyblivou řádovou čárkou (32 bitů). - Implementace jsou optimalizovány pro instrukční sadu SIMD, která je k dispozici pro Cortex-M4/M7/M33/M35P.
Poznámka: Pojmenování q7, q15 a q31 v knihovně funkcí reprezentují 8, 16 a 32bitové pevné body.
Položky knihovny funkcí CMSIS-DSP
Knihovna funkcí CMSIS-DSP je rozdělena do následujících kategorií:
- Základní matematické funkce, rychlé matematické funkce a komplexní matematické funkce
- Funkce filtrování signálu
- Maticové funkce
- Transformační funkce
- Funkce ovládání motoru
- Statistické funkce
- Podpůrné funkce
- Interpolační funkce
Nastavení prostředí
Tato část představí hardware a software použitý v aplikaci, napřample.
Železářské zboží
Ačkoli CMSIS-DSP podporuje celou řadu HT32, doporučuje se použít MCU s kapacitou SRAM větší než 4 kB jako aplikaci CMSIS-DSP ex.ample vyžaduje větší velikost SRAM. Tento text bere ESK32-30501 jako example, který používá HT32F52352.
Software
Před použitím aplikace napřampNejprve se ujistěte, že byla stažena nejnovější knihovna firmwaru Holtek HT32 z oficiálního webu společnosti Holtek webmísto. Umístění stahování je znázorněno na obrázku
Dekomprimujte file po stažení.
Stáhněte si kód aplikace CMSIS-DSP prostřednictvím odkazu níže. Kód aplikace je zabalen jako zip file s názvem HT32_APPFW_xxxxx_CMSIS_DSP_vn_m.zip.
Cesta ke stažení: https://mcu.holtek.com.tw/ht32/app.fw/CMSIS_DSP/
The file pravidlo pojmenování je znázorněno na obrázku 2.
Protože kód aplikace neobsahuje knihovnu firmwaru files, uživatelé musí umístit rozbalený kód aplikace a knihovnu firmwaru files na správnou cestu před zahájením kompilace. Kód aplikace file obsahuje dvě složky, což jsou aplikace a knihovna, jejichž umístění je znázorněno na obrázku 3. Umístěte tyto dvě složky do kořenového adresáře knihovny firmwaru a dokončete file konfigurace cesty, jak je znázorněno na obrázku 4. Uživatelé mohou také dekomprimovat kód aplikace a komprimovanou knihovnu firmwaru files na stejnou cestu k dosažení stejného efektu. Pro tento example, adresář pro CMSIS_DSP bude po dekompresi vidět pod složkou aplikace.
File Struktura
Dvě hlavní složky zahrnuté v kódu aplikace file, library\CMSIS a application\CMSIS_DSP, jsou jednotlivě popsány níže.
Obsah složky library\CMSIS je následující.
Název složky | Popis |
DSP_Lib | Zdrojový kód FW aplikace |
DSP_Lib\Examples | Obsahuje několik standardních exampsoubory knihovny funkcí CMSIS-DSP, které poskytuje ARM. Nastavení pro tyto projekty se provádějí simulovaným způsobem bez potřeby MCU. Uživatelé se mohou rychle naučit používat tyto examples jejich provedením. |
DSP_Lib\Zdroj | Zdrojový kód knihovny funkcí CMSIS-DSP |
Zahrnout | Nezbytná hlavička file při použití knihovny funkcí CMSIS-DSP |
Include\arm_common_tables.h | Deklarace externích proměnných pole (externí) |
Include\arm_const_structs.h | Deklarace vnějších konstant |
Zahrnout\arm_math.h | Tento file je velmi důležité jako rozhraní pro použití knihovny funkcí CMSIS-DSP. Volání libovolného rozhraní API knihovny funkcí jsou implementována prostřednictvím arm_math.h. |
Lib\ARM | Knihovna funkcí CMSIS-DSP pro ARMCC l arm_cortexM3l_math.lib (Cortex-M3, Little ndian) l arm_cortexM0l_math.lib (Cortex-M0 / M0+, Little endian) |
Lib\GCC | Knihovna funkcí CMSIS-DSP pro GCC l libarm_cortexM3l_math.a (Cortex-M3, Little ndian) l libarm_cortexM0l_math.a (Cortex-M0 / M0+, Little endian) |
Složka application\CMSIS_DSP obsahuje několik CMSIS_DSP examples, které používají řadu MCU HT32 a podporují celou řadu HT32. Projekty jsou vyvíjeny pomocí Keil MDK_ARM.
Název složky | Popis |
arm_class_marks_example | Ukazuje, jak získat maximální hodnotu, minimální hodnotu, očekávanou hodnotu, směrodatnou odchylku, rozptyl a maticové funkce. |
arm_convolution_example | Demonstruje konvoluční teorém pomocí komplexních FFT a podpůrných funkcí. |
arm_dotproduct_example | Ukazuje, jak získat bodový součin pomocí násobení a sčítání vektorů. |
arm_fft_bin_example | Ukazuje, jak vypočítat maximální energetické okno (bin) ve frekvenční doméně vstupních signálů pomocí komplexních funkcí FFT, komplexní magnitudy a maximálního modulu. |
arm_fir_example | Ukazuje, jak implementovat filtrování dolní propustí pomocí FIR. |
arm_graphic_equalizer_example | Ukazuje, jak změnit kvalitu zvuku pomocí grafického ekvalizéru. |
arm_linear_interp_example | Ukazuje použití modulu lineární interpolace a modulu rychlé matematiky. |
arm_matrix_example | Demonstruje výpočet maticové korelace včetně transformace matice, násobení matice a inverze matice. |
arm_signal_converge_example | Demonstruje samonastavitelný dolní propust FIR pomocí modulů NLMS (Normalised Least Mean Square), FIR a základních matematických modulů. |
arm_sin_cos_example | Demonstruje trigonometrické výpočty. |
arm_variance_example | Ukazuje, jak vypočítat rozptyl pomocí základních matematických a podpůrných funkcí. |
filter_iir_high_pass_example | Ukazuje, jak implementovat filtrování horní propustí pomocí IIR. |
Test
Tento text bude používat aplikaci\CMSIS_DSP\arm_class_marks_example jako test example. Před zahájením testování zkontrolujte, zda byl ESK32-30501 připojen nebo ne, a ujistěte se, že kód aplikace a knihovna firmwaru byly umístěny na správné místo. Otevřete aplikaci\CMSIS_DSP\arm_class_marks_example a spusťte soubor _CreateProject.bat file, Jak je ukázáno níže. Poté otevřete MDK_ARMv5 (nebo MDK_ARM pro Keilv4), abyste zjistili, že tento example podporuje celou řadu HT32. Otevřete projekt Project_52352.uvprojx, protože se používá ESK32-30501.
Po otevření projektu zkompilujte (klávesová zkratka “F7”), stáhněte (klávesová zkratka “F8”), odlaďte (klávesová zkratka “Ctrl+F5”) a poté spusťte (klávesová zkratka “F5”). Výsledky provedení lze sledovat pomocí proměnných uvedených níže.
Variabilní Jméno | Směr dat | Popis | Výsledek provedení |
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ální hodnota prvků v testovacím výstupním poli | 364 |
min_marks | Výstup | Minimální hodnota prvků v testovacím výstupním poli | 156 |
střední | Výstup | Očekávaná hodnota prvků v testovacím výstupním poli | 212.300003 |
std | Výstup | Směrodatná odchylka prvků v testovacím výstupním poli | 50.9128189 |
var | Výstup | Rozptyl prvků v testovacím výstupním poli | 2592.11523 |
Návod k použití
Integrace
Tato část představí, jak integrovat CMSIS-DSP do projektů uživatelů.
Krok 1
Nejprve přidejte nový symbol Define při nastavování projektu, „ARM_MATH_CM0PLUS“ pro M0+ a „ARM_MATH_CM3“ pro M3. Postup nastavení: (1) Možnosti klávesové zkratky Target “Alt+F7”), (2) Vyberte stránku C/C++, (3) Přidejte novou definici ve volbě Define, jak je uvedeno níže.
Krok 2
Chcete-li přidat cestu zahrnout, klikněte na tlačítko vedle možnosti „Zahrnout cesty“ na stránce C/C++. Poté se objeví okno Folder Setup, kam lze přidat novou cestu ..\..\..\..\library\CMSIS\Include”, jak je znázorněno níže.
Krok 3 (Volitelný)
Chcete-li přidat knihovnu funkcí, klikněte na tlačítko „Spravovat položky projektu“, jak je znázorněno níže. Pokud tlačítko nevidíte, klikněte na „Okno → Obnovit View na Výchozí → Obnovit“, takže konfigurace okna IDE se vrátí na výchozí nastavení. Poté se zobrazí tlačítko „Spravovat položky projektu“.
Přidejte složku CMSIS-DSP pomocí tlačítek, jak je znázorněno v červeném poli níže, a přesuňte ji pod složku CMSIS pomocí tlačítka „Posunout nahoru“. Po dokončení zavřete okno Spravovat položky projektu.
Krok 4
Poklepejte na složku CMSIS-DSP vlevo (pokud přeskočíte krok 3, vyberte libovolnou složku, jako je User nebo CMSIS atd.), poté do ní přidejte knihovnu funkcí CMSIS-DSP. Vyberte \library\CMSIS\Lib\ARM\arm_cortexM0l_math.lib pro M0+ nebo \library\CMSIS\Lib\ARM \arm_cortexM3l_math.lib pro M3. Po dokončení se knihovna funkcí arm_cortexMxl_math.lib zobrazí ve složce CMSIS-DSP, jak je znázorněno níže.
Krok 5
Přidejte hlavu file „arm_math.h“ do main.c, jak je uvedeno níže. Nyní jsou všechna nastavení integrace dokončena
Nízkopropustný filtr – FIR
Tato sekce, zavedením aplikace\CMSIS_DSP\arm_fir_example, předvede, jak nastavit FIR filtr a odstranit vysokofrekvenční signály pomocí FIR. Vstupní signál se skládá z 1kHz a 15kHz sinusových vln. Signál sampfrekvence je 48 kHz. Signály nad 6 kHz jsou filtrovány FIR a na výstupu jsou signály 1 kHz. Kód aplikace je rozdělen do několika částí.
- Inicializace. K inicializaci FIR se používá následující 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 filtru FIR
číslice: Počet filtrů stages (počet koeficientů filtru). V tomto example, numTaps=29.
Coffs: Filtrační koeficient. V tomto příkladu je 29 filtračních koeficientůample, který vypočítá MATLAB.
stav: Indikátor stavu
blockSize: Představuje počet sampsoubory zpracované najednou. - Dolní propust. Voláním API FIR, 32 sampsoubory jsou zpracovány pokaždé a je jich 320 sampcelkem. Použité API je uvedeno níže.
void arm_fir_f32 (const arm_fir_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize);
S: Struktura filtru FIR
pSrc: Vstupní signál. V tomto příkladu je na vstupu smíšený signál 1kHz a 15kHzample. pDst: Výstupní signál. Očekávaný výstupní signál je 1 kHz. blockSize: Představuje počet sampsoubory zpracované najednou. - Ověření dat. Výsledek filtrování získaný v MATLABu je považován za referenční a výsledek filtrování získaný pomocí CMSIS-DSP je skutečná hodnota. Porovnejte dva výsledky a ověřte, zda je výsledek výstupu správný nebo ne. float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)
Pref: Referenční hodnota generovaná MATLABem.
příspěvek: Skutečná hodnota generovaná CMSIS-DSP.
blockSize: Představuje počet sampsoubory zpracované najednou.
Jak je uvedeno níže, vstupní data ukazují, že signál ještě není filtrován, a výstupní data ukazují filtrovaný výsledek. Osa Y představuje ampšířka signálu a sampfrekvence je 48 kHz, takže číslo na ose X plus jedna představuje čas plus 20.833 μs. Z obrázku 12 a obrázku 13 lze zjistit, že 15kHz signál je eliminován a zůstává pouze 1kHz signál.
Horní propust – IIR
Tato sekce zavedením aplikace\CMSIS_DSP\filter_iir_high_pass_example, předvede, jak nastavit IIR filtr a odstranit nízkofrekvenční signály pomocí IIR. Vstupní signál se skládá z 1Hz a 30Hz sinusových vln. Signál sampfrekvence je 100 Hz a celkem 480 bodů je sampvedený. Signály pod 7 Hz jsou odstraněny IIR.
Kód aplikace je rozdělen do několika částí.
- K dispozici jsou 480 samples. Sample 0~159 jsou 30Hz sinusové vlny, sample 160~319 jsou 1Hz sinusové vlny a sample 320~479 jsou 30Hz sinusové vlny.
- Inicializace. K inicializaci IIR se používá následující 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: Struktura filtru IIR
součet stages: Počet s. druhého řádutagje ve filtru. V tomto example, numStages=1.
Coffs: Filtrační koeficient. V tomto příkladu je 5 filtračních koeficientůample.
stav: Indikátor stavu - Vysokopropustný filtr. Voláním API IIR, 1 sample se zpracovává pokaždé a je zde 480 sampcelkem. Použité API je uvedeno níže. 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 filtru IIR
pSrc: Vstupní signál. V tomto příkladu je na vstupu smíšený signál 1Hz a 30Hzample.
pDst: Výstupní signál. Očekávaný výstupní signál je 30 Hz.
blockSize: Představuje počet sampsoubory zpracované najednou. - Výstup výsledku. Vstupní a výstupní signály jsou vytištěny na PC. Jak je uvedeno níže, vstupní data ukazují, že signál ještě není filtrován, a výstupní data ukazují filtrovaný výsledek. Osa Y představuje ampšířka signálu a sampfrekvence je 100 Hz, takže číslo na ose X plus jedna představuje čas plus 10 ms. Z obrázku 14 a obrázku 15 lze zjistit, že signál 1Hz je eliminován a zůstává pouze signál 30Hz.
Úvahy
Uživatelé by měli věnovat zvláštní pozornost velikosti paměti po kompilaci při použití knihovny funkcí CMSIS-DSP. Před testováním se ujistěte, že nedojde k přetečení paměti.
Závěr
CMSIS-DSP má skvělé schopnosti ve zpracování signálu a matematických výpočtech a zaslouží si seriózní pozornost uživatelů.
Referenční materiál
Odkaz webmísto: http://www.keil.com/pack/doc/CMSIS/General/html/index.html
Verze a informace o úpravách
Datum | Autor | Problém | Informace o úpravě |
2022.06.02 | Píšu, Liu | V1.10 | Upravte cestu ke stažení |
2019.09.03 | Allene, Wang | V1.00 | První verze |
Zřeknutí se odpovědnosti
Všechny informace, ochranné známky, loga, grafika, videa, zvukové klipy, odkazy a další položky, které se zde objevují webstránky („Informace“) jsou pouze orientační a mohou se kdykoli změnit bez předchozího upozornění a podle uvážení společnosti Holtek Semiconductor Inc. a jejích spřízněných společností (dále jen „Holtek“, „společnost“, „nás“, „ my" nebo "naše"). Zatímco Holtek se snaží zajistit přesnost těchto informací webSpolečnost Holtek neposkytuje žádnou výslovnou ani předpokládanou záruku na přesnost informací. Holtek nenese žádnou odpovědnost za jakoukoli nesprávnost nebo únik. Holtek nenese odpovědnost za žádné škody (včetně, ale nejen, počítačových virů, systémových problémů nebo ztráty dat), ať už vzniknou při používání nebo v souvislosti s používáním tohoto webstránky jakékoli strany. V této oblasti mohou být odkazy, které vám umožní navštívit webstránky jiných společností. Tyto webstránky nejsou kontrolovány společností Holtek. Holtek nenese žádnou odpovědnost a žádnou záruku za jakékoli informace zobrazené na takových stránkách. Hypertextové odkazy na jiné webstránky jsou na vlastní nebezpečí.
Omezení odpovědnosti
Společnost v žádném případě nemusí nést odpovědnost za jakoukoli ztrátu nebo škodu způsobenou, když někdo navštíví webpřímo nebo nepřímo a používá obsah, informace nebo službu na webmísto.
Rozhodné právo
Toto vyloučení odpovědnosti podléhá zákonům Čínské republiky a podléhá jurisdikci soudu Čínské republiky.
Aktualizace prohlášení o vyloučení odpovědnosti
Holtek si vyhrazuje právo kdykoli aktualizovat prohlášení o vyloučení odpovědnosti s předchozím upozorněním nebo bez něj, všechny změny jsou účinné okamžitě po zveřejnění na webmísto.
Dokumenty / zdroje
![]() |
Knihovna HOLTEK HT32 CMSIS-DSP [pdfUživatelská příručka HT32, CMSIS-DSP Library, HT32 CMSIS-DSP Library, Library |