Biblioteca HT32 CMSIS-DSP
Guida d'usu
D/N: AN0538EN
Introduzione
CMSIS hè una interfaccia standard di software sviluppata da ARM chì hà u nome completo di Cortex Microcontroller Software Interface Standard. Cù sta interfaccia standard, i sviluppatori ponu utilizà a listessa interfaccia per cuntrullà i microcontrollers da diversi fornitori, accurtendu cusì assai u so sviluppu è u tempu di apprendimentu. Per più infurmazione, riferite à l'ufficiale CMSIS websitu: http://www.keil.com/pack/doc/CMSIS/General/html/index.html. Stu testu descrive principalmente l'applicazione CMSIS-DSP in a serie HT32 di microcontrollers chì include a configurazione di l'ambiente, a direzzione per l'usu, etc.
Descrizzione Funziunale
Caratteristiche CMSIS-DSP
CMSIS-DSP, chì hè unu di i cumpunenti CMSIS include e seguenti caratteristiche.
- Fornisce un inseme di funzioni generiche di trattamentu di signale dedicate à u Cortex-M.
- A biblioteca di funzioni furnita da ARM hà più di 60 funzioni.
- Supporta q7, q15, q31
(Nota) è tipi di dati in virgola flottante (32-bit). - L'implementazioni sò ottimizzate per u settore di struzzioni SIMD chì hè dispunibule per Cortex-M4/M7/M33/M35P.
Nota: A denominazione q7, q15 è q31 in a biblioteca di funzioni rapprisentanu rispettivamente i punti fissi di 8, 16 è 32 bit.
Elementi di biblioteca di funzioni CMSIS-DSP
A libreria di funzioni CMSIS-DSP hè divisa in e seguenti categurie:
- Funzioni matematiche basiche, funzioni matematiche veloci è funzioni matematiche cumplesse
- Funzioni di filtru di signali
- Funzioni di a matrice
- Funzioni di trasfurmazioni
- Funzioni di cuntrollu di u mutore
- Funzioni statistiche
- Funzioni di supportu
- Funzioni di interpolazione
Configurazione di l'ambiente
Questa sezione introduverà u hardware è u software utilizatu in l'applicazione example.
Hardware
Ancu se u CMSIS-DSP supporta a serie completa HT32, hè suggeritu di utilizà un MCU cù una capacità SRAM più grande di 4KB cum'è l'applicazione CMSIS-DSP ex.ample richiede una dimensione SRAM più grande. Stu testu piglia l'ESK32-30501 cum'è example chì usa u HT32F52352.
Software
Prima di utilizà l'applicazione example, prima, assicuratevi chì a più recente Holtek HT32 Firmware Library hè stata scaricata da u Holtek ufficiale. websitu. U locu di scaricamentu hè mostratu in Figura
Decompressà u file dopu à scaricà.
Scaricate u codice di l'applicazione CMSIS-DSP attraversu u ligame sottu. U codice di l'applicazione hè imballatu cum'è un zip file cù u nome di HT32_APPFW_xxxxx_CMSIS_DSP_vn_m.zip.
Percorsu di scaricamentu: https://mcu.holtek.com.tw/ht32/app.fw/CMSIS_DSP/
U file A regula di nomi hè mostrata in Figura 2.
Cum'è u codice di l'applicazione ùn cuntene micca a biblioteca di firmware files, utilizatori bisognu di mette u codice applicazione unzipped è biblioteca firmware files in u percorsu currettu prima di inizià a compilazione. U codice di l'applicazione file cuntene dui cartulare, chì sò l'applicazione è a libreria chì a so situazione hè indicata in a Figura 3. Pone sti dui cartulare in u cartulare radicale di a biblioteca di firmware per compie u file cunfigurazione di strada cum'è mostra in Figura 4. Users ponu dinù decompress u codice applicazione è biblioteca firmware cumpressu files in a stessa strada per ottene u listessu effettu. Per questu example, u repertoriu per CMSIS_DSP serà vistu sottu à u cartulare di l'applicazione dopu a decompressione.
File Struttura
I dui caratteri principali inclusi in u codice di l'applicazione file, library\CMSIS, è applicazione\CMSIS_DSP, sò descritti individualmente quì sottu.
U cuntenutu di u cartulare library\CMSIS sò i seguenti.
Nome di u cartulare | Descrizzione |
DSP_Lib | U codice fonte di l'applicazione FW |
DSP_Lib\Examples | Contene parechje standard examples di a biblioteca di funzioni CMSIS-DSP chì sò furnite da ARM. I paràmetri per questi prughjetti sò eseguiti in modu simulatu senza bisognu di un MCU. L'utilizatori ponu amparà rapidamente cumu utilizà questi examples eseguenduli. |
DSP_Lib\Source | CMSIS-DSP codice fonte di a biblioteca di funzioni |
Includite | Intestazione necessaria file quandu si usa a biblioteca di funzioni CMSIS-DSP |
Include\arm_common_tables.h | Dichjarazione di variabili di array esterni (esterni) |
Include\arm_const_structs.h | Dichjarazione di custanti esterni |
Include\arm_math.h | Questu file hè assai impurtante cum'è l'interfaccia per aduprà a biblioteca di funzioni CMSIS-DSP. Chjamate à qualsiasi API di libreria di funzioni sò implementate attraversu arm_math.h. |
Lib\ARM | Libreria di funzioni CMSIS-DSP per ARMCC l arm_cortexM3l_math.lib (Cortex-M3, Little indian) l arm_cortexM0l_math.lib (Cortex-M0 / M0+, Little endian) |
Lib\GCC | Libreria di funzioni CMSIS-DSP per GCC l libarm_cortexM3l_math.a (Cortex-M3, Little indian) l libarm_cortexM0l_math.a (Cortex-M0 / M0+, Little endian) |
U cartulare application\CMSIS_DSP cuntene parechje CMSIS_DSP examples, chì utilizanu a serie HT32 di MCU è supportanu a serie completa HT32. I prughjetti sò sviluppati cù u Keil MDK_ARM.
Nome di u cartulare | Descrizzione |
arm_class_marks_example | Dimustra cumu ottene u valore massimu, u valore minimu, u valore previstu, a deviazione standard, a varianza è e funzioni di matrice. |
arm_convolution_example | Dimostra u teorema di cunvoluzione via a FFT cumplessa è funzioni di supportu. |
arm_dotproduct_example | Dimustra cumu ottene u produttu di punti via a multiplicazione è l'aghjunzione di vettori. |
arm_fft_bin_example | Dimostra cumu per calculà a finestra di energia massima (bin) in u duminiu di freccia di i segnali di input utilizendu e funzioni cumplesse FFT, magnitudine cumplessa è moduli massimi. |
arm_fir_example | Dimostra cumu implementà u filtru passa-bassu cù FIR. |
arm_graphic_equalizer_example | Dimustra cumu cambià a qualità di u sonu utilizendu l'equalizzatore graficu. |
arm_linear_interp_example | Dimostra l'usu di u modulu d'interpolazione lineare è u modulu di matematica rapida. |
arm_matrix_example | Dimostra u calculu di correlazione di a matrice cumprese a trasformazione di a matrice, a multiplicazione di a matrice è a matrice inversa. |
arm_signal_converge_example | Dimostra u filtru passa-bassu FIR auto-regulabile utilizendu NLMS (Prazza minima media normalizzata), FIR è moduli di matematica basi. |
arm_sin_cos_example | Dimostra i calculi trigonometrichi. |
arm_variance_example | Dimustra cumu calculà a varianza via matematiche basi è funzioni di supportu. |
filter_iir_high_pass_example | Dimustra cumu implementà u filtru passa-altu cù l'IIR. |
Testu
Stu testu hà da utilizà l'applicazione \ CMSIS_DSP \ arm_class_marks_example cum'è a prova example. Prima di inizià a prova, verificate se l'ESK32-30501 hè stata cunnessa o micca è assicuratevi chì u codice di l'applicazione è a biblioteca di firmware sò stati posti in u locu ghjustu. Aprite l'applicazione\CMSIS_DSP\arm_class_marks_exampu cartulare è eseguisce u _CreateProject.bat file, cum'è mostra sottu. Dopu questu, apre u MDK_ARMv5 (o MDK_ARM per Keilv4), per truvà chì questu ex.ample supporta a serie completa HT32. Apertura u prughjettu Project_52352.uvprojx perchè l'ESK32-30501 hè utilizatu.
Dopu avè apertu u prughjettu, compilate (chjave di scelta rapida "F7"), scaricate (tasti di scelta rapida "F8"), debug (tasti di scelta rapida "Ctrl + F5") è poi eseguite (tasti di scelta rapida "F5"). I risultati di l'esekzione ponu esse osservati cù e variàbili elencate quì sottu.
Variabile Nome | Direzzione di dati | Descrizzione | Risultatu di Esecuzione |
testMarks_f32 | Input | Una matrice 20 × 4 | – |
testUnity_f32 | Input | Una matrice 4 × 1 | – |
output di prova | Output | U pruduttu di testMarks_f32 è testUnity_f32 | {188,229,210…} |
max_marks | Output | U valore massimu di l'elementi in l'array di output di prova | 364 |
min_marks | Output | U valore minimu di l'elementi in l'array di output di prova | 156 |
dì | Output | U valore previstu di l'elementi in u array di output di prova | 212.300003 |
std | Output | A deviazione standard di l'elementi in l'array di output di prova | 50.9128189 |
var | Output | A varianza di l'elementi in l'array di output di prova | 2592.11523 |
Direzzione per l'usu
Integrazione
Questa sezione introduverà cumu integrà CMSIS-DSP in i prughjetti di l'utilizatori.
Passu 1
Prima, aghjunghje un novu simbulu Definite quandu stabilisce u prughjettu, "ARM_MATH_CM0PLUS" per M0+ è "ARM_MATH_CM3" per M3. Prucedura di cunfigurazione: (1) Opzioni di a chjave di scelta rapida "Alt + F7"), (2) Selezziunate a pagina C / C++, (3) Aghjunghjite una nova definizione in l'opzione Defini, cum'è mostra quì sottu.
Passu 2
Per aghjunghje un percorsu Includite, cliccate nantu à u buttone accantu à l'opzione "Include Paths" in a pagina C/C++. Allora apparirà una finestra di installazione di u cartulare, induve un novu percorsu ..\..\..\..\library\CMSIS\Include" pò esse aghjuntu, cum'è mostratu quì sottu.
Passu 3 (Opcional)
Per aghjunghje a biblioteca di funzioni, cliccate nantu à u buttone "Manage Project Items" cum'è mostra quì sottu. Se u buttone ùn hè micca vistu, cliccate "Finestra → Reset View à Defaults → Reset", in modu chì a cunfigurazione di a finestra IDE torna à i so paràmetri predeterminati. Dopu questu, u buttone "Gestisce Articuli di Prughjettu" serà mostratu.
Aghjunghjite u cartulare CMSIS-DSP usendu i buttoni cum'è mostra in a casella rossa sottu è spustà sottu à u cartulare CMSIS cù u buttone "Move Up". Chiudi a finestra Manage Project tems quandu finitu.
Passu 4
Doppiu cliccà nantu à u cartulare CMSIS-DSP à a manca (se u Step 3 hè saltatu, selezziunate qualsiasi cartulare cum'è User o CMSIS, etc.), dopu aghjunghje a biblioteca di funzione CMSIS-DSP in questu. Scegli \library\CMSIS\Lib\ARM\arm_cortexM0l_math.lib per M0+ o \library\CMSIS\Lib\ARM \arm_cortexM3l_math.lib per M3. À a fine, a biblioteca di funzioni arm_cortexMxl_math.lib serà mostrata in u cartulare CMSIS-DSP, cum'è mostra quì sottu.
Passu 5
Aghjunghjite a testa file "arm_math.h" in main.c, cum'è mostra sottu. Avà tutti i paràmetri di integrazione sò stati cumpleti
Filtru Low-Pass - FIR
Questa sezione, intruducendu l'applicazione\CMSIS_DSP\arm_fir_example, vi dimustrarà cumu si mette u filtru FIR è caccià i segnali d'alta freccia cù u FIR. U signale di input hè cumpostu da onde sinusoidali 1kHz è 15kHz. U signale sampa frequenza di ling hè 48 kHz. I segnali sopra 6kHz sò filtrati da u FIR è i segnali 1kHz sò emessi. U codice di l'applicazione hè divisu in parechje parti.
- Inizializazione. Per inizializà FIR, l'API seguente hè utilizata.
void arm_fir_init_f32 (arm_fir_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, uint32_t blockSize);
S: Struttura di filtru FIR
numerali : U numaru di filtru stages (u numaru di coefficienti di filtru). In questu example, numTaps=29.
Coffs: coefficient di filtru. Ci sò 29 coefficienti di filtru in questu example chì hè calculatu da MATLAB.
state: indicatore di statutu
blockSize: Rapprisenta u numeru di sampi processati in un tempu. - Filtru passa-bassu. En appelant l'API de FIR, 32 sampi sò trattati ogni volta è ci sò 320 samples in totale. L'API utilizata hè mostrata quì sottu.
void arm_fir_f32 (const arm_fir_instance_f32 * S, float32_t * pSrc, float32_t * pDst, uint32_t blockSize);
S: Struttura di filtru FIR
pSrc : signale d'entrée. Un signalu mistu di 1kHz è 15kHz hè input in questu example. pDst: Segnale di uscita. U signale di output previstu hè 1kHz. blockSize: Rapprisenta u numeru di sampi processati in un tempu. - Verificazione di dati. U risultatu di filtru ottenutu da MATLAB hè cunsideratu cum'è riferimentu è u risultatu di filtrazione ottenutu da CMSIS-DSP hè u valore attuale. Comparare i dui risultati per verificà s'ellu u risultatu di output hè currettu o micca. float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)
Pref: Valore di riferimentu generatu da MATLAB.
post: Valore attuale generatu da CMSIS-DSP.
blockSize: Rapprisenta u numeru di sampi processati in un tempu.
Comu mostra quì sottu, Input Data mostra chì u signale ùn hè ancu filtratu è Output Data mostra u risultatu filtratu. L'assi Y rapprisenta u amplitudine di u signale è u sampa freccia di ling hè 48kHz, cusì u numeru di l'assi X plus unu rapprisenta u tempu più 20.833μs. Pò esse truvatu da a Figura 12 è a Figura 13 chì u signale 15kHz hè eliminatu è solu u signale 1kHz hè lasciatu.
Filtru High-Pass - IIR
Questa sezione, intruducendu l'applicazione\CMSIS_DSP\filter_iir_high_pass_example, dimustrarà cumu stabilisce u filtru IIR è caccià i segnali di bassa freccia cù l'IIR. U signale di input hè cumpostu di onde sinusoidali 1Hz è 30Hz. U signale sampa frequenza di ling hè 100Hz è un totale di 480 punti sò samppurtatu. I signali sottu 7Hz sò eliminati da l'IIR.
U codice di l'applicazione hè divisu in parechje parti.
- Ci hè 480 samples. Sample 0~159 sono onde sinusoidali a 30 Hz, sampi 160~319 sò onde sinusoidali di 1 Hz è sampi 320 ~ 479 sò onde sinusoidali di 30 Hz.
- Inizializazione. Per inizializà l'IIR, l'API seguente hè utilizata. void arm_biquad_cascade_df1_init_f32 (arm_biquad_casd_df1_inst_f32 *S, uint8_t numStages, float32_t *pCoeffs, float32_t *state));
S: Struttura di filtru IIR
somma stages: U numaru di s di u sicondu ordinetaghè in u filtru. In questu example, numStages=1.
Coffs: coefficient di filtru. Ci sò 5 coefficienti di filtru in questu example.
state: indicatore di statutu - Filtru passa altu. En appelant l'API de l'IIR, 1 sample hè processatu ogni volta è ci sò 480 samples in totale. L'API utilizata hè mostrata quì sottu. void arm_biquad_cascade_df1_f32 (const arm_biquad_casd_df1_inst_f32 * S, float32_t * pSrc, float32_t * pDst, uint32_t blockSize);
S: Struttura di filtru IIR
pSrc : signale d'entrée. Un signalu mistu di 1Hz è 30Hz hè input in questu example.
pDst: Segnale di uscita. U signale di output previstu hè 30Hz.
blockSize: Rapprisenta u numeru di sampi processati in un tempu. - U risultatu di u risultatu. I segnali di input è output sò emessi à u PC attraversu stampa. Comu mostra quì sottu, Input Data mostra chì u signale ùn hè ancu filtratu è Output Data mostra u risultatu filtratu. L'assi Y rapprisenta u amplitudine di u signale è u sampa frequenza di ling hè 100Hz, cusì u numeru di l'asse X plus unu rapprisenta u tempu più 10ms. Pò esse truvatu da a Figura 14 è a Figura 15 chì u signale 1Hz hè eliminatu è solu u signale 30Hz hè lasciatu.
Considerazioni
L'utilizatori devenu esse attenti à a dimensione di a memoria dopu a compilazione quandu utilizanu a biblioteca di funzioni CMSIS-DSP. Assicuratevi chì ùn ci hè micca un overflow di memoria prima di pruvà.
Cunclusioni
U CMSIS-DSP hà grandi capacità in u trattamentu di u signale è u calculu matematicu è hè degne di cunsiderazione seria da l'utilizatori.
Materiale di riferimentu
Riferimentu websitu: http://www.keil.com/pack/doc/CMSIS/General/html/index.html
Versioni è infurmazione di mudificazione
Data | Autore | Issue | L'infurmazione di mudificazione |
2022.06.02 | Scrive, Liu | V1.10 | Mudificà a strada di scaricamentu |
2019.09.03 | Allen, Wang | V1.00 | Prima Versione |
Disclaimer
Tutte l'infurmazioni, i marchi, i loghi, i grafici, i video, i clips audio, i ligami è altri elementi chì appariscenu nantu à questu web('Informazioni') sò solu per riferimentu è sò sottumessi à cambià in ogni mumentu senza preavvisu è à a discrezione di Holtek Semiconductor Inc. noi" o "nostru"). Mentre Holtek s'impegna à assicurà l'accuratezza di l'infurmazioni nantu à questu websitu, nisuna garanzia espressa o implicita hè datu da Holtek à l'accuratezza di l'Informazioni. Holtek ùn hà micca rispunsabilità per qualsiasi incorrezzione o fuga. Holtek ùn serà micca rispunsevule per qualsiasi dannu (cumpresu, ma senza limitazione, virus di l'informatica, prublemi di sistema o perdita di dati) qualunque sia in l'usu o in cunnessione cù l'usu di questu. websitu da ogni partitu. Ci ponu esse ligami in questa zona, chì permettenu di visità u websiti di altre imprese. Quessi websiti ùn sò micca cuntrullati da Holtek. Holtek ùn hà micca rispunsabilità è nisuna garanzia per qualsiasi infurmazione affissata in tali siti. Hyperlinks à l'altri webi siti sò à u vostru propiu risicu.
Limitazione di Responsabilità
In ogni casu, a Cumpagnia ùn hà micca bisognu di piglià a rispunsabilità per ogni perdita o dannu causatu quandu qualchissia visita websitu direttamente o indirettu è usa u cuntenutu, infurmazione o serviziu nant'à u websitu.
Legge chì guverna
Stu disclaimer hè sottumessu à e lege di a Republica di Cina è sottu a ghjuridizione di a Corte di a Republica di Cina.
Actualizazione di Disclaimer
Holtek si riserva u dirittu di aghjurnà a Disclaimer in ogni mumentu cù o senza preavvisu, tutti i cambiamenti sò efficaci immediatamente dopu a pubblicazione à u websitu.
Documenti / Risorse
![]() |
Biblioteca HOLTEK HT32 CMSIS-DSP [pdfGuida di l'utente HT32, CMSIS-DSP Library, HT32 CMSIS-DSP Library, Library |