概述
本文首先介紹數字信號處理(DSP),是指將連續的模擬信號轉換為不連續、離散的數字信號并進行處理以提取所需的信號(信息)的過程。然后通過一個簡單的Lab來說明DSP庫文件的使用方法和功能實現。
DSP系統工程如下
將模擬(連續)信號轉換為數字信號。
通過專用DSP、MCU等對信號進行處理(噪聲濾波、頻率分析等),并提取所需信號。
輸出處理后的信號。

過去,DSP系統需要多個芯片,例如MCU和專用DSP。而RX MCU使得在單芯片上配置DSP系統成為可能,并具有多種優勢。

使用DSP庫,可以在RX系列MCU上輕松執行FIR、IIR濾波器和FFT等數字信號處理。RX系列MCU支持執行高速數字信號處理所需的乘法和累加運算等DSP指令。
RX DSP庫的目標設備有以下這些RX MCU


RX DSP庫版本5.0包含以下5個API,API為RX CPU的浮點和DSP指令運算提供了高效的操作。
統計操作API
過濾操作API
線性變換API
復數運算API
矩陣運算API
如下表所示,RX DSP庫版本5.0由多個文檔、庫文件和示例項目組成。庫文件針對每個RXv1、RXv2和Xv3 CPU進行了優化,并且示例項目針對每個CPU進行了配置。
表1 DSP庫的構成

每個CPU的“dsplib-rxv*”文件夾中有8種類型的庫文件和8個頭文件。庫文件根據支持的FPU、字節序模式和錯誤檢查進行分類。頭文件分為API專用定義和通用定義。所有通用定義均在r_dsp_types.h中描述,該文件包含在每個API頭文件中。詳細信息請參閱“RX DSP Library APIs Version 5.0 User’s Manual: Software (R01UW0200)”。
下面通過一個簡單的Lab了解RX DSP庫和如何使用DSP庫實現對信號的低通濾波,使用RX23E-A(RXv2 CPU)為例。
本Lab主要介紹如何添加DSP庫,然后完成對采集到的信號進行IIR濾波。由于本次實驗中采集到的數據是溫度結果,所以使用IIR濾波的效果不明顯。這里用一組特定的數據為例,來展示IIR濾波的效果。
步驟
● 解壓縮an-r01an4359ej0100-rx-dsplib.zip文件,將其中的dsplib-rxv2文件夾拷貝到工程中。

●在src文件夾中新建r_dsp文件夾。解壓縮r01an4431xx0160-rx-apl.zip文件,workspace_dsp_example→dsp_demo_rx231_tb→src→r_dsp文件夾中的r_dsp_iirbiquad.h、r_dsp_iirbiquad.c、wave_sample1.h、wave_sample2.h拷貝到新建的r_dsp文件夾中。

●在工程屬性中添加DSP Lib和新加文件夾的路徑。
鼠標右鍵點擊工程名,選擇Properties。

選擇C/C++ Build→Settings→Compiler→Source,點擊右上角的
。

添加dsplib-rxv2文件夾的路徑。
Add directory path對話框中,點擊Workspace。

選擇dsplib-rxv2文件夾,點擊OK。

點擊OK,完成路路徑的添加。

用上面同樣的方式,添加r_dsp文件夾的路徑。

添加Library。
選擇Linkeryou6Input,點擊右上角的
。

Format選擇library,點擊Workspace。

選擇dsplib-rxv2文件夾中的RX_DSP_FPU_LE_Check.lib文件。

點擊OK。

●打開rx23ea_local_board_lab.c文件,main()函數前添加以下頭文件、宏定義和變量。
#include "r_sensor_common_api.h" #include "r_rtd_api.h" #include "r_dsp_types.h" #include "r_dsp_iirbiquad.h" bool timer_flag = false; static volatile int32_t s_dsad0_value; /** DSAD0 24bit A/D value storage variable */ static volatile float s_temp = 0; /** Measurement temperature storage variable */ /* Filter Characteristic definition */ #define IIRBIQUAD_COEF_FLAT (0) /* Pass-through characteristics */ #define IIRBIQUAD_COEF_HPF (1) /* High pass filter characteristics */ #define IIRBIQUAD_COEF_LPF (2) /* Low pass filter characteristics */ static volatile int32_t gs_intermediate_buffer[2][1024]; /* buffer to interface DSP module */ static volatile int32_t gs_output_buffer[1024/2]; /* Output Buffer for DSP to store the result */ static uint8_t gs_coef_select; /* Number of filter Characteristic */ static const int32_t gs_sample_wave_data[1024] = { #include "wave_sample2.h" };
●在main()函數中添加以下代碼
uint32_t dsad0_reg; /** DSAD0.DR register storage variable */
float rtd_temp = 0; /** Measurement temperature */
memset((void *)gs_intermediate_buffer, 0, sizeof(gs_intermediate_buffer)); /* Clears Intermediate Buffer to zero */
memset((void *)gs_output_buffer, 0, sizeof(gs_output_buffer)); /* Clears Output Buffer to zero */
/*** Initializes IIR filter & FFT processing ***/
gs_coef_select = IIRBIQUAD_COEF_HPF;
R_DSP_IIRBiquad_Init();
R_DSP_IIRBiquad_UpdateCoef(gs_coef_select);
R_Config_TMR0_TMR1_Start();
while(1)中最后加入DSP處理部分代碼
/* Executes IIRbiquad processing */
R_DSP_IIRBiquad_Operation((int32_t *)gs_sample_wave_data,
(int32_t *)gs_intermediate_buffer[1]);
}
}
while(1)中最后加入DSP處理部分代碼
/* Executes IIRbiquad processing */
R_DSP_IIRBiquad_Operation((int32_t *)gs_sample_wave_data,
(int32_t *)gs_intermediate_buffer[1]);
}
}
●對工程進行編譯
和調試
。
●打開Memory窗口,點擊
。

添加變量gs_sample_wave_data和gs_intermediate_buffer[1]。

點擊

選擇Waveform,點擊Add Rendering(s)。

點擊Wave Properties。

設定屬性,Data Size選擇32bit,Buffer Size填寫2048,點擊OK。

并點擊
,進行實時刷新。

兩個變量用同樣的方法進行設置。
注 意
如果找不到Memory窗口,可以使用下面的方法,其他窗口同理。
點擊Window→Show View→Other…

按分類查找,或者直接在上面的框中進行關鍵字搜索。

●運行代碼
,需要點擊兩次,在Memory窗口觀察DSP結果。


可以把鼠標放在波形上,按住Ctrl鍵通過滾動鼠標滾輪放大或者縮小波形。
●按下斷開按鈕
,或者終止按鈕
。
審核編輯:劉清
-
dsp
+關注
關注
561文章
8244瀏覽量
366635 -
單芯片
+關注
關注
3文章
487瀏覽量
36118 -
數字信號處理
+關注
關注
16文章
571瀏覽量
47795 -
FFT
+關注
關注
15文章
458瀏覽量
63064 -
IIR濾波器
+關注
關注
0文章
33瀏覽量
11981 -
頻率分析
+關注
關注
0文章
4瀏覽量
5050 -
庫文件
+關注
關注
5文章
35瀏覽量
14929
發布評論請先 登錄
TMS320VC5402 定點數字信號處理器深度解析
SMJ320C80數字信號處理器:架構、特性與應用全解析
TMS320C6711D浮點數字信號處理器:高性能與靈活性的完美結合
深度剖析SM320F2812-HT數字信號處理器:特性、應用與設計要點
HXS320F280049C數字信號處理器(DSP)芯片
探索 NXP MC56F80xxx 數字信號控制器:特性、應用與設計要點
NORDIC藍牙芯片NRF54l15的dsp庫支持分享
HXS320F280025C數字信號處理器(DSP)芯片
為什么DSP(數字信號處理)需要Q格式?q31、q15、q7 和 f32 是什么意思呢?
Analog Devices Inc. ADSP-SC598雙SHARC+?數字信號處理器數據手冊
數字信號處理DSP庫文件的使用方法和功能實現
評論