HT32 CMSIS-DSP Library
Giya sa Gumagamit
D/N: AN0538EN
Pasiuna
Ang CMSIS usa ka software standard interface nga gimugna sa ARM nga adunay tibuok nga ngalan sa Cortex Microcontroller Software Interface Standard. Uban niining standard nga interface, ang mga developers makagamit sa samang interface aron makontrol ang mga microcontroller gikan sa lain-laing mga suppliers sa ingon makapamubo pag-ayo sa ilang kalamboan ug panahon sa pagkat-on. Para sa dugang nga impormasyon, tan-awa ang opisyal sa CMSIS website: http://www.keil.com/pack/doc/CMSIS/General/html/index.html. Kini nga teksto nag-una nga naghulagway sa CMSIS-DSP nga aplikasyon sa HT32 nga serye sa mga microcontrollers nga naglakip sa environment setup, direksyon sa paggamit, ug uban pa.
Functional nga Deskripsyon
Mga Feature sa CMSIS-DSP
Ang CMSIS-DSP, nga usa sa mga sangkap sa CMSIS naglakip sa mosunod nga mga bahin.
- Naghatag og usa ka hugpong sa mga generic signal processing functions nga gipahinungod sa Cortex-M.
- Ang librarya sa function nga gihatag sa ARM adunay sobra sa 60 ka mga gimbuhaton.
- Nagsuporta sa q7, q15, q31
(Note) ug floating-point (32-bit) nga mga tipo sa datos - Ang mga pagpatuman gi-optimize alang sa SIMD instruction set nga magamit alang sa Cortex-M4/M7/M33/M35P.
Mubo nga sulat: Ang pagngalan sa q7, q15, ug q31 sa librarya sa function nagrepresentar sa 8, 16, ug 32bit nga fixed-points.
CMSIS-DSP Function Library Items
Ang CMSIS-DSP function library gibahin ngadto sa mosunod nga mga kategoriya:
- Basic maths functions, fast maths functions, ug complex maths functions
- Mga gimbuhaton sa pagsala sa signal
- Mga gimbuhaton sa matrix
- Pag-usab sa mga gimbuhaton
- Mga gimbuhaton sa pagkontrol sa motor
- Mga gimbuhaton sa estadistika
- Mga gimbuhaton sa pagsuporta
- Mga gimbuhaton sa interpolation
Setup sa Kalikopan
Kini nga seksyon magpaila sa hardware ug software nga gigamit sa aplikasyon example.
Hardware
Bisan kung gisuportahan sa CMSIS-DSP ang tibuuk nga serye sa HT32, gisugyot nga mogamit usa ka MCU nga adunay kapasidad nga SRAM nga mas dako sa 4KB ingon ang aplikasyon sa CMSIS-DSP example nagkinahanglan sa usa ka mas dako nga SRAM gidak-on. Kini nga teksto nagkuha sa ESK32-30501 isip usa ka example nga naggamit sa HT32F52352.
Software
Sa wala pa gamiton ang aplikasyon exampUna, siguroha nga ang pinakabag-o nga Holtek HT32 Firmware Library na-download gikan sa opisyal sa Holtek website. Ang lokasyon sa pag-download gipakita sa Figure
Decompress ang file pagkahuman sa pag-download.
I-download ang CMSIS-DSP application code pinaagi sa link sa ubos. Ang code sa aplikasyon giputos ingon usa ka zip file nga adunay ngalan sa HT32_APPFW_xxxxx_CMSIS_DSP_vn_m.zip.
Pag-download nga agianan: https://mcu.holtek.com.tw/ht32/app.fw/CMSIS_DSP/
Ang file Ang lagda sa pagngalan gipakita sa Figure 2.
Ingon nga ang code sa aplikasyon wala maglangkob sa librarya sa firmware files, ang mga tiggamit kinahanglan nga ibutang ang unzipped application code ug firmware library files ngadto sa husto nga dalan sa dili pa magsugod sa compilation. Ang code sa aplikasyon file adunay duha ka mga folder, nga mao ang aplikasyon ug librarya kansang lokasyon gipakita sa Figure 3. Ibutang kining duha ka mga folder ngadto sa firmware library root directory aron makompleto ang file path configuration sama sa gipakita sa Figure 4. Users mahimo usab decompress sa aplikasyon code ug firmware librarya compressed files sa parehas nga dalan aron makab-ot ang parehas nga epekto. Para ani nga example, ang direktoryo alang sa CMSIS_DSP makita sa ilawom sa folder sa aplikasyon pagkahuman sa decompression.
File Istruktura
Ang duha ka nag-unang mga folder nga gilakip sa code sa aplikasyon file, library\CMSIS, ug application\CMSIS_DSP, tagsa-tagsa nga gihulagway sa ubos.
Ang mga sulod sa library\CMSIS folder mao ang mosunod.
Ngalan sa Folder | Deskripsyon |
DSP_Lib | Aplikasyon nga FW source code |
DSP_Lib\Examples | Naglangkob sa daghang standard examples sa CMSIS-DSP function library nga gihatag sa ARM. Ang mga setting alang sa kini nga mga proyekto gipatuman sa usa ka simulate nga paagi nga wala magkinahanglan usa ka MCU. Ang mga tiggamit dali nga makakat-on kung giunsa paggamit kini nga mga examples pinaagi sa pagpatay kanila. |
DSP_Lib\Source | CMSIS-DSP function library source code |
Iapil | Kinahanglan nga header file kon gamiton ang CMSIS-DSP function library |
Iapil ang\arm_common_tables.h | Deklarasyon sa external array variables (extern) |
Iapil ang\arm_const_structs.h | Deklarasyon sa mga eksternal nga makanunayon |
Ilakip ang\arm_math.h | Kini file importante kaayo isip interface sa paggamit sa CMSIS-DSP function library. Ang mga tawag sa bisan unsang function library API gipatuman pinaagi sa arm_math.h. |
Lib\ARM | CMSIS-DSP function library para sa ARMCC l arm_cortexM3l_math.lib (Cortex-M3, Gamay nga ndian) l arm_cortexM0l_math.lib (Cortex-M0 / M0+, Gamay nga endian) |
Lib\GCC | CMSIS-DSP function library para sa GCC l libarm_cortexM3l_math.a (Cortex-M3, Little ndian) l libarm_cortexM0l_math.a (Cortex-M0 / M0+, Little endian) |
Ang aplikasyon\CMSIS_DSP folder adunay daghang CMSIS_DSP examples, nga naggamit sa serye sa HT32 sa mga MCU ug nagsuporta sa tibuok serye sa HT32. Ang mga proyekto gihimo gamit ang Keil MDK_ARM.
Ngalan sa Folder | Deskripsyon |
arm_class_marks_example | Nagpakita kon unsaon pagkuha ang pinakataas nga bili, minimum nga bili, gipaabot nga bili, standard deviation, variance ug matrix functions. |
arm_convolution_example | Nagpakita sa convolution theorem pinaagi sa komplikadong FFT ug mga function sa pagsuporta. |
arm_dotproduct_example | Nagpakita kung giunsa pagkuha ang produkto nga tuldok pinaagi sa pagpadaghan ug pagdugang sa mga vector. |
bukton_fft_bin_example | Nagpakita unsaon pagkuwenta ang maximum energy window (bin) sa frequency domain sa input signal gamit ang complex FFT, complex magnitude, ug maximum module functions. |
bukton_fir_example | Nagpakita kung giunsa pagpatuman ang low-pass nga pagsala gamit ang FIR. |
arm_graphic_equalizer_example | Nagpakita kung giunsa pagbag-o ang kalidad sa tunog gamit ang graphic equalizer. |
arm_linear_interp_example | Nagpakita sa paggamit sa linear interpolation module ug fast maths module. |
bukton_matrix_example | Nagpakita sa matrix correlation kalkulasyon lakip na ang matrix transform, matrix multiplication, ug matrix inverse. |
arm_signal_converge_example | Nagpakita sa self-adjustable FIR low-pass filter gamit ang NLMS (Normalised Least Mean Square), FIR, ug basic maths modules. |
bukton_sin_cos_example | Nagpakita sa mga kalkulasyon sa trigonometriko. |
arm_variance_example | Nagpakita kon unsaon pagkalkulo sa kalainan pinaagi sa batakang matematika ug mga gimbuhaton sa pagsuporta. |
filter_iir_high_pass_example | Nagpakita kung giunsa pagpatuman ang high-pass nga pagsala gamit ang IIR. |
Pagsulay
Kini nga teksto mogamit sa aplikasyon\CMSIS_DSP\arm_class_marks_example ingon sa pagsulay example. Sa dili pa magsugod sa pagsulay, susiha kung ang ESK32-30501 konektado o wala ug siguroha nga ang aplikasyon code ug firmware librarya nabutang sa husto nga lokasyon. Ablihi ang aplikasyon\CMSIS_DSP\arm_class_marks_example folder ug ipatuman ang _CreateProject.bat file, ingon sa gipakita sa ubos. Pagkahuman niini, ablihi ang MDK_ARMv5 (o MDK_ARM para sa Keilv4), aron mahibal-an nga kini nga exampGisuportahan sa le ang tibuuk nga serye sa HT32. Ablihi ang Project_52352.uvprojx nga proyekto tungod kay ang ESK32-30501 gigamit.
Human sa pag-abli sa proyekto, pag-compile (shortcut key "F7"), download (shortcut key "F8"), debug (shortcut key "Ctrl + F5") ug dayon i-execute (shortcut key "F5"). Ang mga resulta sa pagpatuman mahimong maobserbahan gamit ang mga variable nga gilista sa ubos.
Variable Ngalan | Direksyon sa Data | Deskripsyon | Resulta sa Pagpatay |
testMarks_f32 | Input | Usa ka 20 × 4 array | – |
testUnity_f32 | Input | Usa ka 4 × 1 array | – |
pagsulay output | Output | Ang produkto sa testMarks_f32 ug testUnity_f32 | {188…} |
max_marks | Output | Ang pinakataas nga bili sa mga elemento sa test output array | 364 |
min_marks | Output | Ang minimum nga bili sa mga elemento sa test output array | 156 |
nagpasabot | Output | Ang gipaabot nga bili sa mga elemento sa test output array | 212.300003 |
std | Output | Ang standard deviation sa mga elemento sa test output array | 50.9128189 |
var | Output | Ang kalainan sa mga elemento sa test output array | 2592.11523 |
Direksyon sa Paggamit
Paghiusa
Kini nga seksyon magpaila kung giunsa ang pag-integrate sa CMSIS-DSP sa mga proyekto sa mga tiggamit.
Lakang 1
Una, pagdugang og bag-ong Define nga simbolo sa dihang magbutang sa proyekto, “ARM_MATH_CM0PLUS” para sa M0+ ug “ARM_MATH_CM3” para sa M3. Pamaagi sa pag-set: (1) Mga Opsyon sa Target nga shortcut key “Alt+F7”), (2) Pilia ang C/C++ nga panid, (3) Pagdugang og bag-ong kahulugan sa Define option, sama sa gipakita sa ubos.
Lakang 2
Aron makadugang og Ilakip nga dalan, i-klik ang buton sunod sa opsyon nga “Ilakip ang mga Dalan” sa C/C++ nga panid. Dayon usa ka window sa Folder Setup ang mo-pop up, diin ang usa ka bag-ong dalan ..\..\..\..\library\CMSIS\Include” mahimong idugang, sama sa gipakita sa ubos.
Lakang 3 (Opsyonal)
Aron idugang ang librarya sa function, i-klik ang "Pagdumala sa Mga Butang sa Proyekto" sama sa gipakita sa ubos. Kung ang buton dili makita, i-klik ang "Window → Reset View ngadto sa Defaults → Reset", aron ang IDE window configuration mobalik sa iyang default settings. Human niini, ang "Pagdumala sa Mga Butang sa Proyekto" ipakita.
Idugang ang CMSIS-DSP folder gamit ang mga buton sama sa gipakita sa pula nga kahon sa ubos ug ibalhin kini sa ilawom sa CMSIS folder gamit ang "Move Up" nga buton. Isira ang window sa Manage Project tems kung nahuman na.
Lakang 4
Doble-klik ang CMSIS-DSP folder sa wala (kon Lakang 3 malaktawan, pilia ang bisan unsang folder sama sa User o CMSIS, ug uban pa), unya idugang ang CMSIS-DSP function library niini. Pilia ang \ library\CMSIS\Lib\ARM\arm_cortexM0l_math.lib para sa M0+ o \library\CMSIS\Lib\ARM \arm_cortexM3l_math.lib para sa M3. Sa pagkompleto, ang function library arm_cortexMxl_math.lib ipakita sa CMSIS-DSP folder, sama sa gipakita sa ubos.
Lakang 5
Idugang ang ulo file "arm_math.h" ngadto sa main.c, sama sa gipakita sa ubos. Karon ang tanan nga mga setting sa panagsama nahuman na
Ubos nga Pass Filter - FIR
Kini nga seksyon, pinaagi sa pagpaila sa aplikasyon\CMSIS_DSP\arm_fir_example, magpakita kon unsaon pag-set sa FIR filter ug pagtangtang sa high-frequency signal gamit ang FIR. Ang input signal gilangkuban sa 1kHz ug 15kHz sine waves. Ang signal sampling frequency mao ang 48kHz. Ang mga signal nga labaw sa 6kHz gisala sa FIR ug ang mga signal sa 1kHz kay output. Ang code sa aplikasyon gibahin sa daghang mga bahin.
- Inisyalisasyon. Aron masugdan ang FIR, gigamit ang mosunod nga 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 filter nga istruktura
numero: Ang gidaghanon sa filter stages (ang gidaghanon sa mga filter coefficients). Niining exampug, numTaps=29.
Coffs: Filter coefficient. Adunay 29 ka mga filter coefficient niini nga example nga gikalkula sa MATLAB.
estado: Indikasyon sa kahimtang
blockSize: Nagrepresentar sa gidaghanon sa samples giproseso sa usa ka higayon. - Ubos nga pass filter. Pinaagi sa pagtawag sa API sa FIR, 32 samples giproseso sa matag higayon ug adunay 320 samples sa kinatibuk-an. Ang gigamit nga API gipakita sa ubos.
void arm_fir_f32 (const arm_fir_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize);
S: FIR filter nga istruktura
pSrc: Input nga signal. Usa ka sinagol nga signal sa 1kHz ug 15kHz ang input niini nga example. pDst: Output signal. Ang gipaabot nga output signal mao ang 1kHz. blockSize: Nagrepresentar sa gidaghanon sa samples giproseso sa usa ka higayon. - Pagpamatuod sa datos. Ang resulta sa pagsala nga nakuha sa MATLAB giisip nga reperensiya ug ang resulta sa pagsala nga nakuha sa CMSIS-DSP mao ang aktuwal nga kantidad. Itandi ang duha ka mga resulta aron masuta kung ang resulta sa output husto ba o dili. float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)
Pref: Reference value nga gihimo sa MATLAB.
post: Aktuwal nga bili nga namugna sa CMSIS-DSP.
blockSize: Nagrepresentar sa gidaghanon sa samples giproseso sa usa ka higayon.
Sama sa gipakita sa ubos, ang Input Data nagpakita nga ang signal wala pa nasala ug ang Output Data nagpakita sa nasala nga resulta. Ang Y-axis nagrepresentar sa amplitude sa signal ug sa sampling frequency mao ang 48kHz, mao nga ang X-axis nga numero plus usa nagrepresentar sa panahon plus 20.833μs. Makita gikan sa Figure 12 ug Figure 13 nga ang 15kHz signal giwagtang ug ang 1kHz signal na lang ang nahabilin.
High-Pass Filter- IIR
Kini nga seksyon, pinaagi sa pagpaila sa aplikasyon\CMSIS_DSP\filter_iir_high_pass_example, magpakita kon unsaon pag-set sa IIR filter ug pagtangtang sa mga low-frequency signal gamit ang IIR. Ang input signal gilangkuban sa 1Hz ug 30Hz sine waves. Ang signal sampling frequency mao ang 100Hz ug sa kinatibuk-an nga 480 puntos mao ang sampgipangulohan. Ang mga signal nga ubos sa 7Hz gikuha sa IIR.
Ang code sa aplikasyon gibahin sa daghang mga bahin.
- Adunay 480 samples. Sample 0~159 mao ang 30Hz sine waves, sample 160~319 mao ang 1Hz sine waves ug sampAng 320 ~ 479 mao ang 30Hz sine waves.
- Inisyalisasyon. Aron masugdan ang IIR, gigamit ang mosunod nga API. void arm_biquad_cascade_df1_init_f32 (arm_biquad_casd_df1_inst_f32 *S, uint8_t numStages, float32_t *pCoeffs, float32_t *state));
S: IIR filter nga istruktura
suma stages: Ang gidaghanon sa ikaduhang-order stagnaa sa filter. Niining example, numerotages=1.
Coffs: Filter coefficient. Adunay 5 ka mga filter coefficient niini nga example.
estado: Indikasyon sa kahimtang - High-pass nga filter. Pinaagi sa pagtawag sa API sa IIR, 1 sample giproseso sa matag higayon ug adunay 480 samples sa kinatibuk-an. Ang gigamit nga API gipakita sa ubos. 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 filter nga istruktura
pSrc: Input nga signal. Usa ka sinagol nga signal sa 1Hz ug 30Hz ang input niini nga example.
pDst: Output signal. Ang gipaabot nga output signal mao ang 30Hz.
blockSize: Nagrepresentar sa gidaghanon sa samples giproseso sa usa ka higayon. - Output sa resulta. Ang input ug output signal kay output sa PC pinaagi sa print. Sama sa gipakita sa ubos, ang Input Data nagpakita nga ang signal wala pa nasala ug ang Output Data nagpakita sa nasala nga resulta. Ang Y-axis nagrepresentar sa amplitude sa signal ug sa sampling frequency mao ang 100Hz, mao nga ang X-axis nga numero plus usa nagrepresentar sa panahon plus 10ms. Makita gikan sa Figure 14 ug Figure 15 nga ang 1Hz signal giwagtang ug ang 30Hz signal na lang ang nahabilin.
Mga konsiderasyon
Ang mga tiggamit kinahanglan nga maghatag espesyal nga pagtagad sa gidak-on sa memorya pagkahuman sa pag-compile kung gigamit ang librarya sa function sa CMSIS-DSP. Siguroha nga walay memory overflow nga mahitabo sa dili pa ang pagsulay.
Panapos
Ang CMSIS-DSP adunay daghang mga abilidad sa pagproseso sa signal ug pagkalkula sa matematika ug takus sa seryoso nga konsiderasyon sa mga tiggamit.
Reperensya nga Materyal
Reperensya website: http://www.keil.com/pack/doc/CMSIS/General/html/index.html
Mga Bersyon ug Impormasyon sa Pagbag-o
Petsa | Awtor | Isyu | Impormasyon sa Pagbag-o |
2022.06.02 | Pagsulat, Liu | V1.10 | Usba ang dalan sa pag-download |
2019.09.03 | Allen, Wang | V1.00 | Una nga Bersyon |
Disclaimer
Ang tanan nga impormasyon, mga marka sa pamatigayon, mga logo, mga graphic, mga video, mga audio clip, mga link ug uban pang mga butang nga makita niini website ('Information') kay alang lamang sa pakisayran ug mahimong usbon sa bisan unsang oras nga walay una nga pahibalo ug sa pagkabuotan sa Holtek Semiconductor Inc. kami' o 'among'). Samtang ang Holtek naningkamot sa pagsiguro sa katukma sa Impormasyon bahin niini website, walay gipahayag o gipasabot nga garantiya nga gihatag sa Holtek sa katukma sa Impormasyon. Ang Holtek walay responsibilidad sa bisan unsang sayup o pagtulo. Ang Holtek dili manubag sa bisan unsang mga kadaot (lakip apan dili limitado sa virus sa kompyuter, mga problema sa sistema o pagkawala sa datos) bisan unsa nga motumaw sa paggamit o kalambigitan sa paggamit niini. website sa bisan unsang partido. Mahimong adunay mga link sa niini nga lugar, nga nagtugot kanimo sa pagbisita sa website sa ubang mga kompanya. Kini webAng mga site dili kontrolado sa Holtek. Ang Holtek walay responsibilidad ug walay garantiya sa bisan unsang Impormasyon nga gipakita sa maong mga site. Mga hyperlink sa uban webAng mga site naa sa imong kaugalingon nga peligro.
Limitasyon sa Tulubagon
Sa bisan unsa nga kaso, ang Kompanya dili kinahanglan nga manubag sa bisan unsang kapildihan o kadaot nga nahimo kung adunay mobisita sa website direkta o dili direkta ug naggamit sa mga sulod, impormasyon o serbisyo sa website.
Nagamandong Balaod
Kini nga disclaimer gipailalom sa mga balaod sa Republika sa China ug ubos sa hurisdiksyon sa Korte sa Republika sa China.
Pag-update sa Disclaimer
Gireserba sa Holtek ang katungod sa pag-update sa Disclaimer sa bisan unsang oras nga adunay o wala’y una nga pahibalo, ang tanan nga mga pagbag-o epektibo dayon sa pag-post sa website.
Mga Dokumento / Mga Kapanguhaan
![]() |
HOLTEK HT32 CMSIS-DSP Library [pdf] Giya sa Gumagamit HT32, CMSIS-DSP Library, HT32 CMSIS-DSP Library, Library |