HT32 CMSIS-DSP Library
Gabay sa Gumagamit
D/N: AN0538EN
Panimula
Ang CMSIS ay isang software standard interface na binuo ng ARM na may buong pangalan ng Cortex Microcontroller Software Interface Standard. Sa karaniwang interface na ito, maaaring gamitin ng mga developer ang parehong interface upang kontrolin ang mga microcontroller mula sa iba't ibang mga supplier kaya lubos na pinaikli ang kanilang pag-unlad at oras ng pag-aaral. Para sa karagdagang impormasyon, sumangguni sa opisyal ng CMSIS website: http://www.keil.com/pack/doc/CMSIS/General/html/index.html. Pangunahing inilalarawan ng text na ito ang CMSIS-DSP application sa HT32 series ng mga microcontroller na kinabibilangan ng environment setup, direksyon para sa paggamit, atbp.
Functional na Paglalarawan
Mga Tampok ng CMSIS-DSP
Ang CMSIS-DSP, na isa sa mga bahagi ng CMSIS ay kinabibilangan ng mga sumusunod na feature.
- Nagbibigay ng isang hanay ng mga generic na function sa pagpoproseso ng signal na nakatuon sa Cortex-M.
- Ang function library na ibinigay ng ARM ay may higit sa 60 function.
- Sinusuportahan ang q7, q15, q31
(Tandaan) at floating-point (32-bit) na mga uri ng data - Ang mga pagpapatupad ay na-optimize para sa set ng pagtuturo ng SIMD na magagamit para sa Cortex-M4/M7/M33/M35P.
Tandaan: Ang pagpapangalan ng q7, q15, at q31 sa function library ayon sa pagkakabanggit ay kumakatawan sa 8, 16, at 32bit na fixed-points.
CMSIS-DSP Function Library Items
Ang CMSIS-DSP function library ay nahahati sa mga sumusunod na kategorya:
- Basic maths functions, fast maths functions, at complex maths functions
- Mga function ng pag-filter ng signal
- Mga function ng matrix
- Ibahin ang anyo ng mga function
- Mga function ng kontrol ng motor
- Mga pag-andar ng istatistika
- Mga function ng suporta
- Mga function ng interpolation
Pag-setup ng Kapaligiran
Ipakikilala ng seksyong ito ang hardware at software na ginamit sa application halample.
Hardware
Bagama't sinusuportahan ng CMSIS-DSP ang buong serye ng HT32, iminumungkahi na gumamit ng MCU na may kapasidad na SRAM na mas malaki sa 4KB bilang CMSIS-DSP application exampnangangailangan ng mas malaking sukat ng SRAM. Kinukuha ng text na ito ang ESK32-30501 bilang example na gumagamit ng HT32F52352.
Software
Bago gamitin ang application halampUna, siguraduhin na ang pinakabagong Holtek HT32 Firmware Library ay na-download mula sa opisyal ng Holtek weblugar. Ang lokasyon ng pag-download ay ipinapakita sa Figure
I-decompress ang file pagkatapos mag-download.
I-download ang CMSIS-DSP application code sa pamamagitan ng link sa ibaba. Naka-pack ang application code bilang isang zip file na may pangalang HT32_APPFW_xxxxx_CMSIS_DSP_vn_m.zip.
I-download ang landas: https://mcu.holtek.com.tw/ht32/app.fw/CMSIS_DSP/
Ang file Ang panuntunan sa pagbibigay ng pangalan ay ipinapakita sa Figure 2.
Dahil ang application code ay hindi naglalaman ng firmware library files, kailangan ng mga user na ilagay ang unzipped application code at firmware library files sa tamang landas bago simulan ang compilation. Ang application code file naglalaman ng dalawang folder, na ang application at library na ang lokasyon ay ipinapakita sa Figure 3. Ilagay ang dalawang folder na ito sa root directory ng firmware library upang makumpleto ang file path configuration gaya ng ipinapakita sa Figure 4. Maaari ding i-decompress ng mga user ang application code at ang firmware library na naka-compress files sa parehong landas upang makamit ang parehong epekto. Para itong example, ang direktoryo para sa CMSIS_DSP ay makikita sa ilalim ng folder ng application pagkatapos ng decompression.
File Istruktura
Ang dalawang pangunahing folder na kasama sa application code file, library\CMSIS, at application\CMSIS_DSP, ay indibidwal na inilalarawan sa ibaba.
Ang mga nilalaman ng folder ng library\CMSIS ay ang mga sumusunod.
Pangalan ng Folder | Paglalarawan |
DSP_Lib | Application FW source code |
DSP_Lib\Examples | Naglalaman ng maramihang karaniwang halamples ng CMSIS-DSP function library na ibinibigay ng ARM. Ang mga setting para sa mga proyektong ito ay isinasagawa sa isang simulate na paraan nang hindi nangangailangan ng MCU. Mabilis na matututunan ng mga user kung paano gamitin ang mga ex na itoamples sa pamamagitan ng pagpapatupad sa kanila. |
DSP_Lib\Source | CMSIS-DSP function library source code |
Isama | Kinakailangang header file kapag gumagamit ng CMSIS-DSP function library |
Isama ang\arm_common_tables.h | Deklarasyon ng mga panlabas na variable ng array (panlabas) |
Isama ang\arm_const_structs.h | Deklarasyon ng mga panlabas na constants |
Isama ang\arm_math.h | Ito file ay napakahalaga bilang interface para sa paggamit ng CMSIS-DSP function library. Ang mga tawag sa anumang function library API ay ipinapatupad sa pamamagitan ng arm_math.h. |
Lib\ARM | CMSIS-DSP function library para sa ARMCC l arm_cortexM3l_math.lib (Cortex-M3, Little ndian) l arm_cortexM0l_math.lib (Cortex-M0 / M0+, Little 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 application\CMSIS_DSP folder ay naglalaman ng maramihang CMSIS_DSP halamples, na gumagamit ng HT32 series ng MCUs at sumusuporta sa buong HT32 series. Ang mga proyekto ay binuo gamit ang Keil MDK_ARM.
Pangalan ng Folder | Paglalarawan |
arm_class_marks_example | Nagpapakita kung paano makuha ang maximum na halaga, pinakamababang halaga, inaasahang halaga, standard deviation, variance at matrix function. |
arm_convolution_example | Nagpapakita ng convolution theorem sa pamamagitan ng kumplikadong FFT at mga function ng suporta. |
arm_dotproduct_example | Nagpapakita kung paano makakuha ng tuldok na produkto sa pamamagitan ng pagpaparami at pagdaragdag ng mga vector. |
arm_fft_bin_example | Nagpapakita kung paano kalkulahin ang maximum na window ng enerhiya (bin) sa frequency domain ng mga input signal gamit ang complex FFT, complex magnitude, at maximum module functions. |
arm_fir_example | Nagpapakita kung paano ipatupad ang low-pass filtering gamit ang FIR. |
arm_graphic_equalizer_example | Nagpapakita kung paano baguhin ang kalidad ng tunog gamit ang graphic equalizer. |
arm_linear_interp_example | Nagpapakita ng paggamit ng linear interpolation module at fast maths module. |
arm_matrix_example | Nagpapakita ng pagkalkula ng matrix correlation kabilang ang matrix transform, matrix multiplication, at matrix inverse. |
arm_signal_converge_example | Nagpapakita ng self-adjustable na FIR low-pass na filter gamit ang NLMS (Normalised Least Mean Square), FIR, at basic maths modules. |
braso_sin_cos_example | Nagpapakita ng mga kalkulasyon ng trigonometriko. |
arm_variance_example | Nagpapakita kung paano kalkulahin ang pagkakaiba sa pamamagitan ng mga pangunahing matematika at mga function ng suporta. |
filter_iir_high_pass_example | Nagpapakita kung paano ipatupad ang high-pass filtering gamit ang IIR. |
Pagsubok
Gagamitin ng text na ito ang application\CMSIS_DSP\arm_class_marks_example bilang pagsubok example. Bago simulan ang pagsubok, suriin kung ang ESK32-30501 ay konektado o hindi at tiyakin na ang application code at firmware library ay inilagay sa tamang lokasyon. Buksan ang application\CMSIS_DSP\arm_class_marks_example folder at i-execute ang _CreateProject.bat file, tulad ng ipinapakita sa ibaba. Pagkatapos nito, buksan ang MDK_ARMv5 (o MDK_ARM para sa Keilv4), upang malaman na ang datingampSinusuportahan ng le ang buong serye ng HT32. Buksan ang proyektong Project_52352.uvprojx dahil ginagamit ang ESK32-30501.
Pagkatapos buksan ang proyekto, mag-compile (shortcut key "F7"), i-download (shortcut key "F8"), debug (shortcut key "Ctrl+F5") at pagkatapos ay i-execute (shortcut key "F5"). Ang mga resulta ng pagpapatupad ay maaaring maobserbahan gamit ang mga variable na nakalista sa ibaba.
Variable Pangalan | Direksyon ng Data | Paglalarawan | Resulta ng Pagpapatupad |
testMarks_f32 | Input | Isang 20×4 array | – |
testUnity_f32 | Input | Isang 4×1 array | – |
pagsubok na output | Output | Ang produkto ng testMarks_f32 at testUnity_f32 | {188…} |
max_marks | Output | Ang maximum na halaga ng mga elemento sa array ng output ng pagsubok | 364 |
min_marks | Output | Ang pinakamababang halaga ng mga elemento sa array ng output ng pagsubok | 156 |
ibig sabihin | Output | Ang inaasahang halaga ng mga elemento sa array ng output ng pagsubok | 212.300003 |
std | Output | Ang standard deviation ng mga elemento sa test output array | 50.9128189 |
var | Output | Ang pagkakaiba-iba ng mga elemento sa hanay ng output ng pagsubok | 2592.11523 |
Direksyon sa Paggamit
Pagsasama
Ipakikilala ng seksyong ito kung paano isama ang CMSIS-DSP sa mga proyekto ng mga user.
Hakbang 1
Una, magdagdag ng bagong simbolo ng Define kapag nagtatakda ng proyekto, "ARM_MATH_CM0PLUS" para sa M0+ at "ARM_MATH_CM3" para sa M3. Pamamaraan ng pagtatakda: (1) Mga Opsyon ng Target na shortcut key na “Alt+F7”), (2) Piliin ang pahina ng C/C++, (3) Magdagdag ng bagong kahulugan sa opsyong Tukuyin, tulad ng ipinapakita sa ibaba.
Hakbang 2
Upang magdagdag ng Isama ang landas, i-click ang button sa tabi ng opsyong "Isama ang Mga Path" sa pahina ng C/C++. Pagkatapos ay mag-pop up ang isang window ng Folder Setup, kung saan maaaring magdagdag ng bagong path ..\..\..\..\library\CMSIS\Include, tulad ng ipinapakita sa ibaba.
Hakbang 3 (Opsyonal)
Upang idagdag ang library ng function, i-click ang pindutang "Pamahalaan ang Mga Item ng Proyekto" tulad ng ipinapakita sa ibaba. Kung ang pindutan ay hindi nakikita, i-click ang "Window → I-reset View sa Mga Default → I-reset", upang ang configuration ng IDE window ay bumalik sa mga default na setting nito. Pagkatapos nito, ipapakita ang "Pamahalaan ang Mga Item ng Proyekto".
Idagdag ang folder ng CMSIS-DSP gamit ang mga button tulad ng ipinapakita sa pulang kahon sa ibaba at ilipat ito sa ilalim ng folder ng CMSIS gamit ang button na "Move Up". Isara ang window ng Manage Project tems kapag tapos na.
Hakbang 4
I-double click ang CMSIS-DSP folder sa kaliwa (kung ang Hakbang 3 ay nilaktawan, pumili ng anumang folder gaya ng User o CMSIS, atbp.), pagkatapos ay idagdag ang CMSIS-DSP function library dito. Piliin 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 pagkumpleto, ang function library arm_cortexMxl_math.lib ay ipapakita sa CMSIS-DSP folder, tulad ng ipinapakita sa ibaba.
Hakbang 5
Idagdag ang ulo file “arm_math.h” sa main.c, gaya ng ipinapakita sa ibaba. Ngayon ang lahat ng mga setting ng pagsasama ay kumpleto na
Low-Pass Filter – FIR
Ang seksyong ito, sa pamamagitan ng pagpapakilala ng application\CMSIS_DSP\arm_fir_example, ay magpapakita kung paano itakda ang FIR filter at alisin ang mga high-frequency na signal gamit ang FIR. Ang input signal ay binubuo ng 1kHz at 15kHz sine waves. Ang signal sampling frequency ay 48kHz. Ang mga signal sa itaas ng 6kHz ay sinasala ng FIR at ang 1kHz signal ay output. Ang application code ay nahahati sa ilang bahagi.
- Pagsisimula. Upang simulan ang FIR, ginagamit ang sumusunod na API.
void arm_fir_init_f32 (arm_fir_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, uint32_t blockSize);
S: istraktura ng filter ng FIR
numerals: Ang bilang ng filter stages (ang bilang ng mga filter coefficient). Sa ex na itoample, numTaps=29.
Coffs: Filter coefficient. Mayroong 29 na filter coefficient sa ex na itoample na kinakalkula ng MATLAB.
estado: Tagapagpahiwatig ng katayuan
blockSize: Kinakatawan ang bilang ng mga sampang mga naproseso sa isang pagkakataon. - Low-pass na filter. Sa pamamagitan ng pagtawag sa API ng FIR, 32 sampAng mga les ay pinoproseso sa bawat oras at mayroong 320 samples sa kabuuan. Ang API na ginamit ay ipinapakita sa ibaba.
void arm_fir_f32 (const arm_fir_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize);
S: istraktura ng filter ng FIR
pSrc: Input signal. Isang magkahalong signal na 1kHz at 15kHz ang input sa ex na itoample. pDst: Output signal. Ang inaasahang output signal ay 1kHz. blockSize: Kinakatawan ang bilang ng mga sampang mga naproseso sa isang pagkakataon. - Pag-verify ng data. Ang resulta ng pag-filter na nakuha ng MATLAB ay itinuturing na sanggunian at ang resulta ng pag-filter na nakuha ng CMSIS-DSP ay ang aktwal na halaga. Ihambing ang dalawang resulta upang ma-verify kung tama o hindi ang resulta ng output. float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize)
Pref: Reference value na nabuo ng MATLAB.
post: Aktwal na halaga na nabuo ng CMSIS-DSP.
blockSize: Kinakatawan ang bilang ng mga sampang mga naproseso sa isang pagkakataon.
Gaya ng ipinapakita sa ibaba, ipinapakita ng Data ng Input na hindi pa na-filter ang signal at ipinapakita ng Output Data ang na-filter na resulta. Ang Y-axis ay kumakatawan sa amplitude ng signal at ang sampAng ling frequency ay 48kHz, kaya ang X-axis number plus one ay kumakatawan sa oras at 20.833μs. Makikita sa Figure 12 at Figure 13 na ang 15kHz signal ay inalis at ang 1kHz signal na lang ang natitira.
High-Pass Filter– IIR
Ang seksyong ito, sa pamamagitan ng pagpapakilala ng application\CMSIS_DSP\filter_iir_high_pass_example, ay magpapakita kung paano itakda ang IIR filter at alisin ang mga signal na mababa ang dalas gamit ang IIR. Ang input signal ay binubuo ng 1Hz at 30Hz sine wave. Ang signal sampAng dalas ng ling ay 100Hz at kabuuang 480 puntos ay samppinangunahan. Ang mga signal sa ibaba 7Hz ay inalis ng IIR.
Ang application code ay nahahati sa ilang bahagi.
- Mayroong 480 samples SampAng le 0~159 ay 30Hz sine wave, sampAng 160~319 ay 1Hz sine wave at sampAng le 320~479 ay 30Hz sine wave.
- Pagsisimula. Upang simulan ang IIR, ginagamit ang sumusunod na 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 na istraktura
kabuuan stages: Ang bilang ng second-order stagay nasa filter. Sa ex na itoample, numStages=1.
Coffs: Filter coefficient. Mayroong 5 na filter coefficient sa ex na itoample.
estado: Tagapagpahiwatig ng katayuan - HIGH pass filter. Sa pamamagitan ng pagtawag sa API ng IIR, 1 sampAng le ay pinoproseso sa bawat oras at mayroong 480 samples sa kabuuan. Ang API na ginamit ay ipinapakita sa ibaba. 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 na istraktura
pSrc: Input signal. Isang magkahalong signal na 1Hz at 30Hz ang input sa ex na itoample.
pDst: Output signal. Ang inaasahang output signal ay 30Hz.
blockSize: Kinakatawan ang bilang ng mga sampang mga naproseso sa isang pagkakataon. - Output ng resulta. Ang input at output signal ay output sa PC sa pamamagitan ng pag-print. Gaya ng ipinapakita sa ibaba, ipinapakita ng Data ng Input na hindi pa na-filter ang signal at ipinapakita ng Output Data ang na-filter na resulta. Ang Y-axis ay kumakatawan sa amplitude ng signal at ang sampAng ling frequency ay 100Hz, kaya ang X-axis number plus one ay kumakatawan sa oras at 10ms. Makikita mula sa Figure 14 at Figure 15 na ang 1Hz signal ay inalis at ang 30Hz signal na lang ang natitira.
Mga pagsasaalang-alang
Dapat bigyang-pansin ng mga user ang laki ng memorya pagkatapos mag-compile kapag ginagamit ang library ng CMSIS-DSP function. Tiyaking walang memory overflow na magaganap bago ang pagsubok.
Konklusyon
Ang CMSIS-DSP ay may mahusay na kakayahan sa pagpoproseso ng signal at pagkalkula ng matematika at karapat-dapat sa seryosong pagsasaalang-alang ng mga gumagamit.
Sangguniang Materyal
Sanggunian website: http://www.keil.com/pack/doc/CMSIS/General/html/index.html
Mga Bersyon at Impormasyon sa Pagbabago
Petsa | May-akda | Isyu | Impormasyon sa Pagbabago |
2022.06.02 | Nagsusulat, Liu | V1.10 | Baguhin ang landas ng pag-download |
2019.09.03 | Allen, Wang | V1.00 | Unang Bersyon |
Disclaimer
Lahat ng impormasyon, trademark, logo, graphics, video, audio clip, link at iba pang item na lumalabas dito website ('Impormasyon') ay para sa sanggunian lamang at maaaring magbago anumang oras nang walang paunang abiso at sa pagpapasya ng Holtek Semiconductor Inc. at mga kaugnay nitong kumpanya (simula dito 'Holtek', 'ang kumpanya', 'us', ' tayo' o 'atin'). Habang sinisikap ni Holtek na tiyakin ang katumpakan ng Impormasyon tungkol dito website, walang malinaw o ipinahiwatig na warranty ang ibinigay ng Holtek sa katumpakan ng Impormasyon. Walang pananagutan ang Holtek para sa anumang pagkakamali o pagtagas. Hindi mananagot ang Holtek para sa anumang mga pinsala (kabilang ang ngunit hindi limitado sa virus ng computer, mga problema sa system o pagkawala ng data) anuman ang mangyari sa paggamit o kaugnay ng paggamit nito. website ng anumang partido. Maaaring may mga link sa lugar na ito, na nagpapahintulot sa iyo na bisitahin ang webmga site ng iba pang mga kumpanya. Ang mga ito webAng mga site ay hindi kinokontrol ng Holtek. Walang pananagutan at walang garantiya ang Holtek sa anumang impormasyong ipinapakita sa mga naturang site. Mga hyperlink sa iba webang mga site ay nasa iyong sariling peligro.
Limitasyon ng Pananagutan
Sa anumang kaso, hindi na kailangang panagutin ng Kumpanya ang anumang pagkawala o pinsalang dulot kapag may bumisita sa website nang direkta o hindi direkta at ginagamit ang mga nilalaman, impormasyon o serbisyo sa website.
Batas na Namamahala
Ang disclaimer na ito ay napapailalim sa mga batas ng Republika ng Tsina at nasa ilalim ng hurisdiksyon ng Korte ng Republika ng Tsina.
Update ng Disclaimer
Inilalaan ng Holtek ang karapatang i-update ang Disclaimer anumang oras nang may paunang abiso o walang paunang abiso, lahat ng mga pagbabago ay epektibo kaagad sa pag-post sa website.
Mga Dokumento / Mga Mapagkukunan
![]() |
HOLTEK HT32 CMSIS-DSP Library [pdf] Gabay sa Gumagamit HT32, CMSIS-DSP Library, HT32 CMSIS-DSP Library, Library |