Biblioteca HT32 CMSIS-DSP
Guía de usuario
D/N: AN0538EN
Introdución
CMSIS é unha interface estándar de software desenvolvida por ARM que ten o nome completo de Cortex Microcontroller Software Interface Standard. Con esta interface estándar, os desenvolvedores poden usar a mesma interface para controlar microcontroladores de diferentes provedores, acurtando así moito o seu tempo de desenvolvemento e aprendizaxe. Para máis información, consulte o oficial do CMSIS websitio: http://www.keil.com/pack/doc/CMSIS/General/html/index.html. Este texto describe principalmente a aplicación CMSIS-DSP da serie de microcontroladores HT32 que inclúe a configuración do ambiente, a dirección de uso, etc.
Descrición funcional
Características do CMSIS-DSP
CMSIS-DSP, que é un dos compoñentes do CMSIS, inclúe as seguintes características.
- Ofrece un conxunto de funcións xenéricas de procesamento de sinal dedicadas ao Cortex-M.
- A biblioteca de funcións proporcionada por ARM ten máis de 60 funcións.
- Soporta q7, q15, q31
(Nota) e tipos de datos de coma flotante (32 bits). - As implementacións están optimizadas para o conxunto de instrucións SIMD que está dispoñible para Cortex-M4/M7/M33/M35P.
Nota: A denominación q7, q15 e q31 na biblioteca de funcións representan respectivamente os puntos fixos de 8, 16 e 32 bits.
Elementos da biblioteca de funcións CMSIS-DSP
A biblioteca de funcións CMSIS-DSP divídese nas seguintes categorías:
- Funcións matemáticas básicas, funcións matemáticas rápidas e funcións matemáticas complexas
- Funcións de filtrado de sinal
- Funcións da matriz
- Funcións de transformación
- Funcións de control do motor
- Funcións estatísticas
- Funcións de apoio
- Funcións de interpolación
Configuración do entorno
Nesta sección presentarase o hardware e o software utilizados na aplicación, example.
Hardware
Aínda que o CMSIS-DSP admite a serie HT32 completa, suxírese utilizar un MCU cunha capacidade SRAM superior a 4 KB como a aplicación CMSIS-DSP por exemplo.ample require un tamaño SRAM maior. Este texto toma o ESK32-30501 como example que usa o HT32F52352.
Software
Antes de usar a aplicación exampEn primeiro lugar, asegúrate de que a biblioteca de firmware máis recente de Holtek HT32 foi descargada do oficial de Holtek. websitio. A localización de descarga móstrase na figura
Descomprimir o file despois da descarga.
Descarga o código da aplicación CMSIS-DSP a través da seguinte ligazón. O código da aplicación está embalado como un zip file co nome de HT32_APPFW_xxxxx_CMSIS_DSP_vn_m.zip.
Ruta de descarga: https://mcu.holtek.com.tw/ht32/app.fw/CMSIS_DSP/
O file A regra de nomeamento móstrase na Figura 2.
Como o código da aplicación non contén biblioteca de firmware files, os usuarios deben colocar o código de aplicación descomprimido e a biblioteca de firmware files no camiño correcto antes de comezar a compilación. O código da aplicación file contén dous cartafoles, que son a aplicación e a biblioteca cuxa localización se mostra na Figura 3. Coloque estes dous cartafoles no directorio raíz da biblioteca de firmware para completar o file configuración de ruta como se mostra na Figura 4. Os usuarios tamén poden descomprimir o código da aplicación e a biblioteca de firmware comprimida files no mesmo camiño para conseguir o mesmo efecto. Para este example, o directorio para CMSIS_DSP verase baixo o cartafol da aplicación despois da descompresión.
File Estrutura
Os dous cartafoles principais incluídos no código da aplicación file, biblioteca\CMSIS e aplicación\CMSIS_DSP, descríbense individualmente a continuación.
O contido do cartafol biblioteca\CMSIS é o seguinte.
Nome do cartafol | Descrición |
DSP_Lib | Código fonte da aplicación FW |
DSP_Lib\Examples | Contén varios estándares exampficheiros da biblioteca de funcións CMSIS-DSP que son proporcionados por ARM. A configuración destes proxectos execútase dun xeito simulado sen necesidade de MCU. Os usuarios poden aprender rapidamente a usar estes examples executándoos. |
DSP_Lib\Fonte | Código fonte da biblioteca de funcións CMSIS-DSP |
Incluír | Cabeceira necesaria file ao utilizar a biblioteca de funcións CMSIS-DSP |
Incluír\arm_common_tables.h | Declaración de variables de matriz externas (extern) |
Incluír\arm_const_structs.h | Declaración de constantes externas |
Incluír\arm_math.h | Isto file é moi importante como interface para usar a biblioteca de funcións CMSIS-DSP. As chamadas a calquera API da biblioteca de funcións impléntanse a través de arm_math.h. |
Lib\ARM | Biblioteca de funcións CMSIS-DSP para ARMCC l arm_cortexM3l_math.lib (Cortex-M3, Little indian) l arm_cortexM0l_math.lib (Cortex-M0 / M0+, Little endian) |
Lib\GCC | Biblioteca de funcións CMSIS-DSP para GCC l libarm_cortexM3l_math.a (Cortex-M3, Little indian) l libarm_cortexM0l_math.a (Cortex-M0 / M0+, Little endian) |
O cartafol aplicación\CMSIS_DSP contén varios CMSIS_DSP, por exemploamples, que usan a serie de MCU HT32 e admiten a serie completa HT32. Os proxectos desenvólvense mediante o Keil MDK_ARM.
Nome do cartafol | Descrición |
arm_class_marks_example | Demostra como obter as funcións de valor máximo, valor mínimo, valor esperado, desviación estándar, varianza e matriz. |
arm_convolution_example | Demostra o teorema de convolución mediante a FFT complexa e as funcións de apoio. |
arm_dotproduct_example | Demostra como obter o produto escalar mediante a multiplicación e a suma de vectores. |
arm_fft_bin_example | Demostra como calcular a ventá de enerxía máxima (bin) no dominio da frecuencia dos sinais de entrada utilizando as funcións complexas FFT, magnitude complexa e módulo máximo. |
brazo_fir_example | Demostra como implementar o filtrado paso baixo usando FIR. |
arm_graphic_equalizer_example | Demostra como cambiar a calidade do son usando o ecualizador gráfico. |
arm_linear_interp_example | Demostra o uso do módulo de interpolación lineal e do módulo de matemáticas rápidas. |
matriz_brazo_example | Demostra o cálculo de correlación matricial, incluíndo transformación matricial, multiplicación matricial e inversa matricial. |
arm_signal_converge_example | Demostra o filtro de paso baixo FIR autoaxustable mediante NLMS (Mínimos Cuadrados Medios Normalizados), FIR e módulos básicos de matemáticas. |
arm_sin_cos_example | Demostra cálculos trigonométricos. |
brazo_varianza_example | Demostra como calcular a varianza mediante funcións matemáticas básicas e de apoio. |
filter_iir_high_pass_example | Demostra como implementar o filtrado paso alto usando IIR. |
Proba
Este texto usará a aplicación\CMSIS_DSP\arm_class_marks_example como a proba example. Antes de comezar a probar, comprobe se o ESK32-30501 está conectado ou non e asegúrate de que o código da aplicación e a biblioteca de firmware se colocaron no lugar correcto. Abra a aplicación\CMSIS_DSP\arm_class_marks_example e executa o ficheiro _CreateProject.bat file, como se mostra a continuación. Despois diso, abra o MDK_ARMv5 (ou MDK_ARM para Keilv4), para descubrir que este example admite a serie completa HT32. Abre o proxecto Project_52352.uvprojx porque se usa o ESK32-30501.
Despois de abrir o proxecto, compile (tecla de atallo "F7"), descargue (tecla de atallo "F8"), depure (tecla de atallo "Ctrl+F5") e execute (tecla de atallo "F5"). Os resultados da execución pódense observar mediante as variables que se indican a continuación.
Variable Nome | Dirección de datos | Descrición | Resultado da execución |
testMarks_f32 | Entrada | Unha matriz de 20×4 | – |
testUnity_f32 | Entrada | Unha matriz de 4×1 | – |
saída de proba | Saída | O produto de testMarks_f32 e testUnity_f32 | {188,229,210…} |
max_marks | Saída | O valor máximo dos elementos na matriz de saída de proba | 364 |
min_marks | Saída | O valor mínimo dos elementos na matriz de saída de proba | 156 |
significar | Saída | O valor esperado dos elementos na matriz de saída de proba | 212.300003 |
std | Saída | A desviación estándar dos elementos na matriz de saída de proba | 50.9128189 |
var | Saída | A varianza dos elementos na matriz de saída de proba | 2592.11523 |
Indicación de uso
Integración
Esta sección presentará como integrar CMSIS-DSP nos proxectos dos usuarios.
Paso 1
Primeiro, engade un novo símbolo Definir ao configurar o proxecto, "ARM_MATH_CM0PLUS" para M0+ e "ARM_MATH_CM3" para M3. Procedemento de configuración: (1) Opcións da tecla de atallo de destino "Alt+F7"), (2) Seleccione a páxina C/C++, (3) Engade unha nova definición na opción Definir, como se mostra a continuación.
Paso 2
Para engadir un camiño Incluír, faga clic no botón situado xunto á opción "Incluír camiños" na páxina C/C++. A continuación, aparecerá unha xanela de configuración de cartafoles, onde se pode engadir un novo camiño ..\..\..\..\library\CMSIS\Include”, como se mostra a continuación.
Paso 3 (Opcional)
Para engadir a biblioteca de funcións, faga clic no botón "Xestionar elementos do proxecto" como se mostra a continuación. Se o botón non se ve, faga clic en "Xanela → Restablecer View a Valores predeterminados → Restablecer”, para que a configuración da xanela IDE volva á súa configuración predeterminada. Despois diso, aparecerá o botón "Xestionar elementos do proxecto".
Engade o cartafol CMSIS-DSP usando os botóns como se mostra no cadro vermello de abaixo e móveo baixo o cartafol CMSIS usando o botón "Mover arriba". Pecha a xanela Xestionar os elementos do proxecto cando remate.
Paso 4
Faga dobre clic no cartafol CMSIS-DSP da esquerda (se se omite o paso 3, seleccione calquera cartafol como Usuario ou CMSIS, etc.) e, a continuación, engada a biblioteca de funcións CMSIS-DSP. Escolla \library\CMSIS\Lib\ARM\arm_cortexM0l_math.lib para M0+ ou \library\CMSIS\Lib\ARM \arm_cortexM3l_math.lib para M3. Ao rematar, a biblioteca de funcións arm_cortexMxl_math.lib mostrarase no cartafol CMSIS-DSP, como se mostra a continuación.
Paso 5
Engade a cabeza file “arm_math.h” en main.c, como se mostra a continuación. Agora todas as opcións de integración están completas
Filtro paso baixo - FIR
Esta sección, introducindo a aplicación\CMSIS_DSP\arm_fir_example, demostrará como configurar o filtro FIR e eliminar os sinais de alta frecuencia usando o FIR. O sinal de entrada está composto por ondas senoidal de 1 kHz e 15 kHz. O sinal sampfrecuencia ling é de 48 kHz. Os sinais superiores a 6 kHz son filtrados polo FIR e os sinais de 1 kHz saen. O código da aplicación divídese en varias partes.
- Inicialización. Para inicializar FIR, utilízase a seguinte API.
void arm_fir_init_f32 (arm_fir_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, uint32_t blockSize);
S: Estrutura do filtro FIR
numerais: O número de filtro stages (número de coeficientes de filtro). Neste example, numTaps=29.
Coffs: coeficiente de filtro. Hai 29 coeficientes de filtro neste example que é calculado por MATLAB.
estado: indicador de estado
blockSize: representa o número de sampficheiros procesados ao mesmo tempo. - Filtro paso baixo. Ao chamar á API de FIR, 32 sampOs ficheiros son procesados cada vez e hai 320 samples en total. A API utilizada móstrase a continuación.
void arm_fir_f32 (const arm_fir_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize);
S: Estrutura do filtro FIR
pSrc: sinal de entrada. Neste exemplo, introdúcese un sinal mixto de 1 kHz e 15 kHzample. pDst: Sinal de saída. O sinal de saída esperado é de 1 kHz. blockSize: representa o número de sampficheiros procesados ao mesmo tempo. - Verificación de datos. O resultado de filtrado obtido por MATLAB considérase como a referencia e o resultado de filtrado obtido por CMSIS-DSP é o valor real. Compare os dous resultados para verificar se o resultado da saída é correcto ou non. float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)
Pref: valor de referencia xerado por MATLAB.
publicación: valor real xerado por CMSIS-DSP.
blockSize: representa o número de sampficheiros procesados ao mesmo tempo.
Como se mostra a continuación, os datos de entrada mostran que o sinal aínda non está filtrado e os datos de saída mostran o resultado filtrado. O eixe Y representa o amplitude do sinal e do sampa frecuencia ling é de 48 kHz, polo que o número do eixe X máis un representa o tempo máis 20.833 μs. Na figura 12 e na figura 13 pódese comprobar que o sinal de 15 kHz está eliminado e só queda o sinal de 1 kHz.
Filtro paso alto - IIR
Esta sección, introducindo a aplicación\CMSIS_DSP\filter_iir_high_pass_example, demostrará como configurar o filtro IIR e eliminar os sinais de baixa frecuencia usando o IIR. O sinal de entrada está composto por ondas senoidal de 1 Hz e 30 Hz. O sinal sampa frecuencia ling é de 100 Hz e un total de 480 puntos son sampLED. Os sinais inferiores a 7 Hz son eliminados polo IIR.
O código da aplicación divídese en varias partes.
- Hai 480 samples. Sampos 0~159 son ondas sinusoidales de 30 Hz, sampos 160~319 son ondas senoidal de 1 Hz e sampos 320~479 son ondas sinusoidales de 30 Hz.
- Inicialización. Para inicializar o IIR, utilízase a seguinte API. void arm_biquad_cascade_df1_init_f32 (arm_biquad_casd_df1_inst_f32 *S, uint8_t numStages, float32_t *pCoeffs, float32_t *estado));
S: Estrutura do filtro IIR
suma stages: O número de s de segunda ordetages no filtro. Neste example, numStages = 1.
Coffs: coeficiente de filtro. Hai 5 coeficientes de filtro neste example.
estado: indicador de estado - Filtro paso alto. Ao chamar á API do IIR, 1 sample é procesado cada vez e hai 480 samples en total. A API utilizada móstrase a continuación. void arm_biquad_cascade_df1_f32 (const arm_biquad_casd_df1_inst_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize);
S: Estrutura do filtro IIR
pSrc: sinal de entrada. Neste exemplo, introdúcese un sinal mixto de 1 Hz e 30 Hzample.
pDst: Sinal de saída. O sinal de saída esperado é de 30 Hz.
blockSize: representa o número de sampficheiros procesados ao mesmo tempo. - Saída do resultado. Os sinais de entrada e saída son enviados ao PC a través da impresión. Como se mostra a continuación, os datos de entrada mostran que o sinal aínda non está filtrado e os datos de saída mostran o resultado filtrado. O eixe Y representa o amplitude do sinal e do sampa frecuencia ling é de 100 Hz, polo que o número do eixe X máis un representa o tempo máis 10 ms. Na Figura 14 e na Figura 15 pódese comprobar que o sinal de 1 Hz está eliminado e só queda o sinal de 30 Hz.
Consideracións
Os usuarios deben prestar especial atención ao tamaño da memoria despois da compilación cando usan a biblioteca de funcións CMSIS-DSP. Asegúrese de que non se produza ningún desbordamento de memoria antes da proba.
Conclusión
O CMSIS-DSP ten grandes habilidades no procesamento de sinal e no cálculo matemático e merece unha seria consideración por parte dos usuarios.
Material de referencia
Referencia websitio: http://www.keil.com/pack/doc/CMSIS/General/html/index.html
Versións e información de modificación
Data | Autor | Problema | Información de modificación |
2022.06.02 | Escribindo, Liu | V1.10 | Modifica a ruta de descarga |
2019.09.03 | Allen, Wang | V1.00 | Primeira Versión |
Exención de responsabilidade
Toda a información, marcas comerciais, logotipos, gráficos, vídeos, clips de audio, ligazóns e outros elementos que aparecen neste web('Información') son só para referencia e están suxeitos a cambios en calquera momento sen previo aviso e a criterio de Holtek Semiconductor Inc. e as súas compañías relacionadas (en diante 'Holtek', 'a empresa', 'nós', ' nós" ou "os nosos"). Mentres que Holtek se esforza por garantir a exactitude da información sobre isto websitio, Holtek non ofrece ningunha garantía expresa ou implícita sobre a exactitude da información. Holtek non asumirá ningunha responsabilidade por calquera incorrección ou fuga. Holtek non será responsable de ningún dano (incluíndo, entre outros, virus informáticos, problemas do sistema ou perda de datos) que se produza polo uso ou en relación co uso deste websitio por calquera parte. Pode haber ligazóns nesta zona, que che permiten visitar o websitios doutras empresas. Estes webos sitios non están controlados por Holtek. Holtek non asumirá ningunha responsabilidade e ningunha garantía con respecto á información que se mostre nestes sitios. Hipervínculos a outros websitios son baixo o seu propio risco.
Limitación de responsabilidade
En calquera caso, a Compañía non ten por que responsabilizarse de calquera perda ou dano causado cando alguén visita o webdirecta ou indirectamente e utiliza os contidos, a información ou o servizo do websitio.
Lei vixente
Esta exención de responsabilidade está suxeita ás leis da República de China e baixo a xurisdición do Tribunal da República de China.
Actualización de exención de responsabilidade
Holtek resérvase o dereito de actualizar o Aviso de exención de responsabilidade en calquera momento con ou sen aviso previo, todos os cambios entrarán en vigor inmediatamente despois da publicación no websitio.
Documentos/Recursos
![]() |
Biblioteca HOLTEK HT32 CMSIS-DSP [pdfGuía do usuario HT32, Biblioteca CMSIS-DSP, Biblioteca HT32 CMSIS-DSP, Biblioteca |