Logotipo de HOLTEK 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.

  1. Ofrece un conxunto de funcións xenéricas de procesamento de sinal dedicadas ao Cortex-M.
  2. A biblioteca de funcións proporcionada por ARM ten máis de 60 funcións.
  3. Soporta q7, q15, q31
    (Nota) e tipos de datos de coma flotante (32 bits).
  4. 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:

  1. Funcións matemáticas básicas, funcións matemáticas rápidas e funcións matemáticas complexas
  2. Funcións de filtrado de sinal
  3. Funcións da matriz
  4. Funcións de transformación
  5. Funcións de control do motor
  6. Funcións estatísticas
  7. Funcións de apoio
  8. 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.

Biblioteca HOLTEK HT32 CMSIS-DSP - Fig

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.

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

Biblioteca HOLTEK HT32 CMSIS-DSP - Figura 3

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.

Biblioteca HOLTEK HT32 CMSIS-DSP - Figura 4

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.

Biblioteca HOLTEK HT32 CMSIS-DSP - Figura 5

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.

Biblioteca HOLTEK HT32 CMSIS-DSP - Figura 6

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

Biblioteca HOLTEK HT32 CMSIS-DSP - Figura 7

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.

Biblioteca HOLTEK HT32 CMSIS-DSP - Figura 8

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.

Biblioteca HOLTEK HT32 CMSIS-DSP - Figura 9

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

Biblioteca HOLTEK HT32 CMSIS-DSP - Figura 10

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.

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

Biblioteca HOLTEK HT32 CMSIS-DSP - Figura 11

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. 

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

Biblioteca HOLTEK HT32 CMSIS-DSP - Figura 12

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.

Logotipo de HOLTEK

Documentos/Recursos

Biblioteca HOLTEK HT32 CMSIS-DSP [pdfGuía do usuario
HT32, Biblioteca CMSIS-DSP, Biblioteca HT32 CMSIS-DSP, Biblioteca

Referencias

Deixa un comentario

O teu enderezo de correo electrónico non será publicado. Os campos obrigatorios están marcados *