HT32 CMSIS-DSP библиотека
Упатство за употреба
D/N: AN0538EN
Вовед
CMSIS е стандарден софтверски интерфејс развиен од ARM кој го има целосното име Cortex Microcontroller Software Interface Standard. Со овој стандарден интерфејс, програмерите можат да го користат истиот интерфејс за да ги контролираат микроконтролерите од различни добавувачи со што значително ќе го скратат нивното време за развој и учење. За повеќе информации, погледнете го службеникот на CMSIS webсајт: http://www.keil.com/pack/doc/CMSIS/General/html/index.html. Овој текст главно ја опишува апликацијата CMSIS-DSP во серијата HT32 микроконтролери која вклучува поставување на околината, насока за користење итн.
Функционален опис
Карактеристики на CMSIS-DSP
CMSIS-DSP, кој е една од компонентите на CMSIS ги вклучува следните карактеристики.
- Обезбедува збир на генерички функции за обработка на сигнал посветени на Cortex-M.
- Функциската библиотека обезбедена од АРМ има над 60 функции.
- Поддржува q7, q15, q31
(Забелешка) и типови на податоци со подвижна запирка (32-битни). - Имплементациите се оптимизирани за множеството инструкции SIMD што е достапно за Cortex-M4/M7/M33/M35P.
Забелешка: Именувањето q7, q15 и q31 во библиотеката на функции соодветно ги претставуваат 8, 16 и 32 битни фиксни точки.
Ставки од библиотеката на функциите CMSIS-DSP
Функциската библиотека CMSIS-DSP е поделена на следниве категории:
- Основни математички функции, брзи математички функции и сложени математички функции
- Функции за филтрирање на сигнали
- Матрични функции
- Трансформирајте ги функциите
- Функции за контрола на моторот
- Статистички функции
- Функции за поддршка
- Функции на интерполација
Поставување на животната средина
Овој дел ќе ги претстави хардверот и софтверот што се користат во апликацијата на прampле.
Хардвер
Иако CMSIS-DSP ја поддржува целосната серија HT32, се предлага да се користи MCU со капацитет на SRAM поголем од 4KB како апликацијата CMSIS-DSP пр.ampбара поголема големина на SRAM. Овој текст го зема ESK32-30501 како прample кој користи HT32F52352.
Софтвер
Пред да ја користите апликацијата прampпрво, осигурајте се дека најновата библиотека за фирмвер на Holtek HT32 е преземена од официјалниот претставник на Holtek webсајт. Локацијата за преземање е прикажана на слика
Декомпресирај го file по преземањето.
Преземете го кодот на апликацијата CMSIS-DSP преку врската подолу. Кодот на апликацијата е спакуван како поштенски file со името на HT32_APPFW_xxxxx_CMSIS_DSP_vn_m.zip.
Патека за преземање: https://mcu.holtek.com.tw/ht32/app.fw/CMSIS_DSP/
На file правилото за именување е прикажано на слика 2.
Бидејќи кодот на апликацијата не содржи библиотека на фирмверот files, корисниците треба да го стават отпакуваниот код на апликацијата и библиотеката на фирмверот files во правилната патека пред да започнете со компилација. Кодот на апликацијата file содржи две папки, кои се апликацијата и библиотеката чија локација е прикажана на Слика 3. Ставете ги овие две папки во root директориумот на библиотеката на фирмверот за да го комплетирате file конфигурација на патеката како што е прикажано на слика 4. Корисниците исто така можат да го декомпресираат кодот на апликацијата и библиотеката на фирмверот компресирана fileна истиот пат за да се постигне истиот ефект. За овој ексampле, директориумот за CMSIS_DSP ќе се види под папката со апликации по декомпресија.
File Структура
Двете главни папки вклучени во кодот на апликацијата file, библиотека\CMSIS и апликација\CMSIS_DSP се поединечно опишани подолу.
Содржината на папката library\CMSIS е следна.
Име на папка | Опис |
DSP_Lib | Изворниот код на апликацијата FW |
DSP_Lib\Exampлес | Содржи повеќе стандардни прampделови од функционалната библиотека CMSIS-DSP кои се обезбедени од АРМ. Поставките за овие проекти се извршуваат на симулиран начин без да се бара MCU. Корисниците можат брзо да научат како да ги користат овие ексamples со нивно извршување. |
DSP_Lib\Извор | Изворниот код на библиотеката на функцијата CMSIS-DSP |
Вклучи | Неопходен заглавие file кога се користи библиотеката на функции CMSIS-DSP |
Вклучи\arm_common_tables.h | Декларација на променливи на надворешна низа (надворешна) |
Вклучи\arm_const_structs.h | Декларација на надворешни константи |
Вклучи\arm_math.h | Ова file е многу важен како интерфејс за користење на библиотеката на функции CMSIS-DSP. Повиците до било која функционална библиотека API се имплементираат преку arm_math.h. |
Lib\ARM | Библиотека со функции CMSIS-DSP за ARMCC l arm_cortexM3l_math.lib (Cortex-M3, Little ndian) l arm_cortexM0l_math.lib (Cortex-M0 / M0+, Little endian) |
Lib\GCC | Библиотека со функции CMSIS-DSP за GCC l libarm_cortexM3l_math.a (Cortex-M3, Little ndian) l libarm_cortexM0l_math.a (Cortex-M0 / M0+, Little endian) |
Папката апликација\CMSIS_DSP содржи повеќе CMSIS_DSP прamples, кои ја користат серијата HT32 MCU и ја поддржуваат целосната серија HT32. Проектите се развиени со користење на Keil MDK_ARM.
Име на папка | Опис |
arm_class_marks_example | Покажува како да се добие максимална вредност, минимална вредност, очекувана вредност, стандардна девијација, варијанса и матрични функции. |
arm_convolution_example | Ја демонстрира теоремата на конволуција преку сложените FFT и функциите за поддршка. |
arm_dotproduct_example | Покажува како да се добие производ со точки преку множење и собирање вектори. |
arm_fft_bin_example | Покажува како да се пресмета максималниот енергетски прозорец (канта) во доменот на фреквенција на влезните сигнали користејќи сложени функции FFT, сложена големина и максимален модул. |
arm_fir_example | Покажува како да се спроведе нископропусно филтрирање со помош на FIR. |
arm_graphic_equalizer_example | Покажува како да го промените квалитетот на звукот со помош на графичкиот еквилајзер. |
arm_linear_interp_example | Покажува употреба на модул за линеарна интерполација и модул за брза математика. |
arm_matrix_example | Покажува пресметка на корелација на матрицата вклучувајќи трансформација на матрица, множење на матрицата и инверзна матрица. |
arm_signal_converge_example | Го демонстрира самоприлагодливиот FIR нископропусен филтер со помош на NLMS (нормализиран најмал среден квадрат), FIR и основни математички модули. |
arm_sin_cos_example | Покажува тригонометриски пресметки. |
arm_variance_example | Покажува како да се пресмета варијансата преку основните математики и функциите за поддршка. |
filter_iir_high_pass_example | Покажува како да се спроведе високопропусно филтрирање со помош на IIR. |
Тест
Овој текст ќе ја користи апликацијата\CMSIS_DSP\arm_class_marks_example како тест прampле. Пред да започнете со тестирање, проверете дали ESK32-30501 е поврзан или не и уверете се дека кодот на апликацијата и библиотеката на фирмверот се поставени на вистинската локација. Отворете ја апликацијата\CMSIS_DSP\arm_class_marks_example папката и извршете ја _CreateProject.bat file, како што е прикажано подолу. После ова, отворете го MDK_ARMv5 (или MDK_ARM за Keilv4), за да откриете дека оваа ексampја поддржува целосната серија HT32. Отворете го проектот Project_52352.uvprojx бидејќи се користи ESK32-30501.
По отворањето на проектот, компајлирајте (копче за кратенка „F7“), преземете (копче за кратенка „F8“), дебагирајте (копче за кратенка „Ctrl+F5“) и потоа извршете (копче за кратенка „F5“). Резултатите од извршувањето може да се набљудуваат со помош на променливите наведени подолу.
Променлива Име | Насока на податоци | Опис | Резултат од извршувањето |
testMarks_f32 | Влез | Една низа 20×4 | – |
testUnity_f32 | Влез | Една низа 4×1 | – |
тест излез | Излез | Производот на testMarks_f32 и testUnity_f32 | {188, 229, 210…} |
max_marks | Излез | Максималната вредност на елементите во тест излезната низа | 364 |
min_ознаки | Излез | Минималната вредност на елементите во тест излезната низа | 156 |
значи | Излез | Очекуваната вредност на елементите во тест излезната низа | 212.300003 |
стд | Излез | Стандардното отстапување на елементите во тест излезната низа | 50.9128189 |
var | Излез | Варијансата на елементите во тест излезната низа | 2592.11523 |
Упатство за употреба
Интеграција
Овој дел ќе воведе како да се интегрира CMSIS-DSP во проектите на корисниците.
Чекор 1
Прво, додадете нов симбол Дефинирање при поставување на проектот, „ARM_MATH_CM0PLUS“ за M0+ и „ARM_MATH_CM3“ за M3. Постапка за поставување: (1) Опции на Целното копче за кратенка „Alt+F7“), (2) Изберете страница C/C++, (3) Додајте нова дефиниција во опцијата „Дефинирај“, како што е прикажано подолу.
Чекор 2
За да додадете патека за вклучување, кликнете на копчето веднаш до опцијата „Вклучи патеки“ на страницата C/C++. Потоа ќе се појави прозорец за поставување папка, каде што може да се додаде нова патека ..\..\..\..\library\CMSIS\Include“, како што е прикажано подолу.
Чекор 3 (Факултативно)
За да ја додадете библиотеката со функции, кликнете на копчето „Управување со проектните ставки“ како што е прикажано подолу. Ако копчето не се гледа, кликнете „Прозорец → Ресетирај View во Стандардно → Ресетирање“, така што конфигурацијата на прозорецот IDE ќе се врати на своите стандардни поставки. После ова, ќе се прикаже копчето „Управување со проектни ставки“.
Додадете ја папката CMSIS-DSP користејќи ги копчињата како што е прикажано во црвеното поле подолу и преместете ја под папката CMSIS користејќи го копчето „Премести нагоре“. Затворете го прозорецот Manage Project Tems кога ќе завршите.
Чекор 4
Кликнете двапати на папката CMSIS-DSP лево (ако е прескокнат чекор 3, изберете која било папка како што се Корисник или CMSIS, итн.), а потоа додадете ја библиотеката на функции CMSIS-DSP во неа. Изберете \library\CMSIS\Lib\ARM\arm_cortexM0l_math.lib за M0+ или \library\CMSIS\Lib\ARM \arm_cortexM3l_math.lib за M3. По завршувањето, библиотеката со функции arm_cortexMxl_math.lib ќе биде прикажана во папката CMSIS-DSP, како што е прикажано подолу.
Чекор 5
Додадете ја главата file „arm_math.h“ во main.c, како што е прикажано подолу. Сега сите поставки за интеграција се завршени
Нископропусен филтер – FIR
Овој дел, со воведување на апликацијата\CMSIS_DSP\arm_fir_exampќе покаже како да го поставите филтерот FIR и да ги отстраните високофреквентните сигнали користејќи го FIR. Влезниот сигнал е составен од синусни бранови од 1 kHz и 15 kHz. Сигналот сampЛинг фреквенцијата е 48 kHz. Сигналите над 6 kHz се филтрираат со FIR и излезат сигнали од 1 kHz. Кодот на апликацијата е поделен на неколку делови.
- Иницијализација. За да се иницијализира FIR, се користи следниов API.
void arm_fir_init_f32 (arm_fir_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, uint32_t blockSize);
S: FIR филтер структура
бројки: Бројот на филтер stages (бројот на коефициентите на филтерот). Во овој ексample, numTaps=29.
Coffs: Коефициент на филтер. Има 29 коефициенти на филтер во овој прample кој го пресметува MATLAB.
состојба: Индикатор за статус
blockSize: Го претставува бројот на samples обработени во исто време. - Нископропусен филтер. Со повикување на API на FIR, 32 сampлес се обработуваат секој пат и има 320 сampвкупно помалку. Користениот API е прикажан подолу.
void arm_fir_f32 (const arm_fir_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize);
S: FIR филтер структура
pSrc: Влезен сигнал. Мешан сигнал од 1kHz и 15kHz е влезен во овој прampле. pDst: Излезен сигнал. Очекуваниот излезен сигнал е 1 kHz. blockSize: Го претставува бројот на samples обработени во исто време. - Проверка на податоци. Резултатот од филтрирањето добиен од MATLAB се смета за референца, а резултатот од филтрирањето добиен од CMSIS-DSP е вистинската вредност. Споредете ги двата резултати за да потврдите дали излезниот резултат е точен или не. float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)
Pref: Референтна вредност генерирана од MATLAB.
пост: Вистинската вредност генерирана од CMSIS-DSP.
blockSize: Го претставува бројот на samples обработени во исто време.
Како што е прикажано подолу, Влезните податоци покажуваат дека сигналот сè уште не е филтриран, а излезните податоци го прикажуваат филтрираниот резултат. Y-оската го претставува ampлитуда на сигналот и сampЛинг фреквенцијата е 48 kHz, така што бројот на X-оската плус еден претставува време плус 20.833 μs. Од Слика 12 и Слика 13 може да се види дека сигналот од 15 kHz е елиминиран и останува само сигналот од 1 kHz.
Високопропусен филтер - IIR
Овој дел, со воведување на апликацијата\CMSIS_DSP\filter_iir_high_pass_example, ќе покаже како да го поставите IIR филтерот и да ги отстраните сигналите со ниска фреквенција со помош на IIR. Влезниот сигнал е составен од синусни бранови од 1Hz и 30Hz. Сигналот сampЛинг фреквенцијата е 100Hz и вкупно 480 точки се sampпредводена. Сигналите под 7Hz се отстрануваат од IIR.
Кодот на апликацијата е поделен на неколку делови.
- Има 480 сampлес. Сample 0~159 се синусни бранови од 30Hz, sample 160~319 се синусни бранови од 1Hz и sample 320~479 се синусни бранови од 30Hz.
- Иницијализација. За иницијализирање на IIR, се користи следниов API. void arm_biquad_cascade_df1_init_f32 (arm_biquad_casd_df1_inst_f32 *S, uint8_t numStages, float32_t *pCoeffs, float32_t *состојба));
S: IIR структура на филтерот
сума сtages: Бројот на s од втор редtagе во филтерот. Во овој ексample, numStages=1.
Coffs: Коефициент на филтер. Има 5 коефициенти на филтер во овој прampле.
состојба: Индикатор за статус - Високопропусен филтер. Со повикување на API на IIR, 1 сampле се обработува секој пат и има 480 сampвкупно помалку. Користениот API е прикажан подолу. void arm_biquad_cascade_df1_f32 (const arm_biquad_casd_df1_inst_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize);
S: IIR структура на филтерот
pSrc: Влезен сигнал. Мешан сигнал од 1Hz и 30Hz е влезен во овој прampле.
pDst: Излезен сигнал. Очекуваниот излезен сигнал е 30Hz.
blockSize: Го претставува бројот на samples обработени во исто време. - Излез на резултат. Влезните и излезните сигнали се емитуваат на компјутерот преку печатење. Како што е прикажано подолу, Влезните податоци покажуваат дека сигналот сè уште не е филтриран, а излезните податоци го прикажуваат филтрираниот резултат. Y-оската го претставува ampлитуда на сигналот и сampЛинг фреквенцијата е 100Hz, така што бројот на X-оската плус еден претставува време плус 10ms. Од Слика 14 и Слика 15 може да се види дека сигналот од 1 Hz е елиминиран и останува само сигналот од 30 Hz.
Размислувања
Корисниците треба да обрнат посебно внимание на големината на меморијата по компајлирањето кога ја користат библиотеката на функции CMSIS-DSP. Уверете се дека нема прелевање на меморијата пред тестирањето.
Заклучок
CMSIS-DSP има големи способности за обработка на сигнали и математичко пресметување и е достоен за сериозно разгледување од страна на корисниците.
Референтен материјал
Референца webсајт: http://www.keil.com/pack/doc/CMSIS/General/html/index.html
Информации за верзии и модификација
Датум | Автор | Прашање | Информации за модификација |
2022.06.02 | Пишување, Лиу | V1.10 | Изменете ја патеката за преземање |
2019.09.03 | Ален, Ванг | V1.00 | Првата верзија |
Одрекување
Сите информации, трговски марки, логоа, графики, видеа, аудио клипови, линкови и други ставки што се појавуваат на ова webстраницата („Информации“) се само за референца и е предмет на промена во секое време без претходна најава и по дискреција на Holtek Semiconductor Inc. и нејзините поврзани компании (во понатамошниот текст „Holtek“, „компанијата“, „нас“, „ ние“ или „наше“). Додека Holtek се труди да ја обезбеди точноста на Информациите за ова webсајт, Холтек не дава експресна или имплицитна гаранција за точноста на информациите. Холтек нема да сноси одговорност за каква било неточност или истекување. Holtek нема да биде одговорен за какви било штети (вклучувајќи, но не ограничувајќи се на компјутерски вируси, системски проблеми или загуба на податоци) што и да настане при користењето или во врска со користењето на овој webсајт од која било страна. Може да има врски во оваа област, кои ви дозволуваат да ја посетите webсајтови на други компании. Овие webсајтовите не се контролирани од Holtek. Holtek нема да сноси никаква одговорност и никаква гаранција за какви било информации прикажани на таквите страници. Хиперврски до други webсајтовите се на ваш сопствен ризик.
Ограничување на одговорноста
Во секој случај, Компанијата нема потреба да презема одговорност за каква било загуба или штета предизвикана кога некој ќе ја посети webсајт директно или индиректно и ги користи содржините, информациите или услугата на webсајт.
Управувачки закон
Ова одрекување е предмет на законите на Република Кина и под јурисдикција на Судот на Република Кина.
Ажурирање на Одрекување од одговорност
Holtek го задржува правото да го ажурира Одрекувањето од одговорност во секое време со или без претходно известување, сите промени стапуваат во сила веднаш по објавувањето на webсајт.
Документи / ресурси
![]() |
Библиотека HOLTEK HT32 CMSIS-DSP [pdf] Упатство за корисникот HT32, CMSIS-DSP библиотека, HT32 CMSIS-DSP библиотека, библиотека |