logu HOLTEK 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.

  1. Fornisce un inseme di funzioni generiche di trattamentu di signale dedicate à u Cortex-M.
  2. A biblioteca di funzioni furnita da ARM hà più di 60 funzioni.
  3. Supporta q7, q15, q31
    (Nota) è tipi di dati in virgola flottante (32-bit).
  4. 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:

  1. Funzioni matematiche basiche, funzioni matematiche veloci è funzioni matematiche cumplesse
  2. Funzioni di filtru di signali
  3. Funzioni di a matrice
  4. Funzioni di trasfurmazioni
  5. Funzioni di cuntrollu di u mutore
  6. Funzioni statistiche
  7. Funzioni di supportu
  8. 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à.

Biblioteca HOLTEK HT32 CMSIS-DSP - Fig

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.

Biblioteca HOLTEK HT32 CMSIS-DSP - Fig 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.

Biblioteca HOLTEK HT32 CMSIS-DSP - Fig 3

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.

Biblioteca HOLTEK HT32 CMSIS-DSP - Fig 4

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
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.

Biblioteca HOLTEK HT32 CMSIS-DSP - Fig 5

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.

Biblioteca HOLTEK HT32 CMSIS-DSP - Fig 6

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.

Biblioteca HOLTEK HT32 CMSIS-DSP - Fig 7

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.

Biblioteca HOLTEK HT32 CMSIS-DSP - Fig 8

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.

Biblioteca HOLTEK HT32 CMSIS-DSP - Fig 9

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

Biblioteca HOLTEK HT32 CMSIS-DSP - Fig 10

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.

  1. 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.
  2. 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.
  3. 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.

Biblioteca HOLTEK HT32 CMSIS-DSP - Fig 11

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. 

  1.  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.
  2. 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
  3. 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.
  4. 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.

Biblioteca HOLTEK HT32 CMSIS-DSP - Fig 12

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.

logu HOLTEK

Documenti / Risorse

Biblioteca HOLTEK HT32 CMSIS-DSP [pdfGuida di l'utente
HT32, CMSIS-DSP Library, HT32 CMSIS-DSP Library, Library

Referenze

Lascia un cumentu

U vostru indirizzu email ùn serà micca publicatu. I campi obbligatori sò marcati *