国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

[DSP學(xué)習(xí)筆記]基于TMS320F28335的FIR濾波實現(xiàn)

2023-01-13 11:13 作者:七草稀飯  | 我要投稿

首先進(jìn)入TI官網(wǎng),搜索C2000 wave,進(jìn)行下載安裝。

安裝完成后,在2000 wave的安裝目錄下,進(jìn)入以下目錄:C2000Ware_4_02_00_00\libraries\dsp\FPU\c28

以我本地的安裝目錄為例:E:\ti\c2000\C2000Ware_4_02_00_00\libraries\dsp\FPU\c28

復(fù)制include、source文件夾到新建工程中。再根據(jù)選用的DSP型號對文件夾內(nèi)容進(jìn)行刪減。如:我使用的是TMS320F28335,FPU是32位的,故僅保留include、source文件夾中的fpu32文件夾以及dsp.h頭文件。

工程中,可以見有以下文件(僅進(jìn)行濾波可刪除FFT相關(guān)文件)

include文件樹
source文件樹

同時記得添加頭文件路徑

至此,對于我們進(jìn)行濾波所需的函數(shù)庫已經(jīng)移植完畢。

測試部分:首先使用MATLAB生成輸入信號。

函數(shù)式文件
命令式文件

生成了采樣率為100KHz,測試頻率分別為1K、5K、10K的信號。

測試信號時域圖及頻域圖

將record.txt文件內(nèi)容復(fù)制到INPUT.c文件中,如下

INPUT.c

借助MATLAB自帶的filter designer,生成濾波器系數(shù)(濾波器截止頻率選擇1500Hz,濾除高頻噪聲,指定階數(shù)為80階)。

再點擊目標(biāo),選擇生成到CCS目標(biāo)工程中。

28335FPU為32位,故選用單精度浮點型

生成以下頭文件,需注意,使用此頭文件需在工程中包含“tmwtypes.h”

“tmwtypes.h”文件路徑在生成的文件中以自動標(biāo)注

至此,已完成了大部分的準(zhǔn)備工作,接下來開始編寫函數(shù)進(jìn)行濾波。

仿照TI官方例程,完成了下列函數(shù)的編寫。

?/* FIR.h*/

#ifndef APP_FIR_H_

#define APP_FIR_H_

#include "DSP28x_Project.h"

#include <stdio.h>

#include <string.h>

void FIR_Init(void);

void FIR_filter_run(void);

#endif /* APP_FIR_H_ */


/* FIR.c */

#include <FIR.h>

#include "dsp.h"

#include "fpu_filter.h"

#include <math.h>

#include "complex.h"

#include "fdacoefs.h"


#define pi 3.14159

#define FIR_SIZE? ? ? ?(512U)

#define FIR_ORDER? ? ? ?(80U)? ? ? ? ? ? ?// ORDER = NUM_TAPS - 1,ORDER為濾波器階數(shù)


#pragma DATA_SECTION(coeffs, "FIR_buffer0");

#pragma DATA_SECTION(FIR_output, "FIR_buffer1");


FIR_f32 fir;

FIR_f32_Handle hnd_fir = &fir;


float delayLine[FIR_ORDER+1];

float FIR_output[FIR_SIZE];

extern float test_input[];

extern const float coeffs[];


void FIR_Init(void)

{

? ? FIR_f32_setCoefficientsPtr(hnd_fir, coeffs);

? ? FIR_f32_setDelayLinePtr(hnd_fir, delayLine);

? ? FIR_f32_setOrder(hnd_fir, FIR_ORDER);

? ? FIR_f32_setInitFunction(hnd_fir, (v_pfn_v)FIR_f32_init);

? ? FIR_f32_setCalcFunction(hnd_fir, (v_pfn_v)FIR_f32_calc);


? ? hnd_fir->init(hnd_fir);

}


void FIR_filter_run(void)

{

? ? uint16_t i;

? ? float32u_t in, out;


? ? for(i = 0U; i < FIR_SIZE; i++)

? ? {

? ? ? ? in.f32? ?= test_input[i];

? ? ? ? out.f32? = FLT_MAX;

? ? ? ? FIR_f32_setInput(hnd_fir, in.f32);

? ? ? ? FIR_f32_setOutput(hnd_fir, out.f32);


? ? ? ? hnd_fir->calc(hnd_fir);


? ? ? ? out.f32 = FIR_f32_getOutput(hnd_fir);

? ? ? ? FIR_output[i] = out.f32;

? ? }

}

// End of File

再在主函數(shù)中調(diào)用FIR_Init();????FIR_filter_run();函數(shù)即可完成濾波操作。

在cmd文件中,添加以下兩行代碼,進(jìn)行內(nèi)存分配。

借助CCS的Graph畫圖工具測試濾波效果如下:

原始信號:

原始信號

濾波后:

低通濾波后1KHz信號

測試結(jié)束,實現(xiàn)了FIR濾波。

本人是TMS320F28335的學(xué)習(xí)小白,如有錯誤,請大佬多多指正。

[DSP學(xué)習(xí)筆記]基于TMS320F28335的FIR濾波實現(xiàn)的評論 (共 條)

分享到微博請遵守國家法律
田阳县| 汉寿县| 仲巴县| 扎囊县| 泰宁县| 集贤县| 曲水县| 奉贤区| 琼海市| 应城市| 青河县| 嵊州市| 仪陇县| 石嘴山市| 新蔡县| 鹤庆县| 新和县| 连江县| 凭祥市| 洞头县| 双辽市| 东海县| 海城市| 武强县| 葵青区| 尖扎县| 遂宁市| 博白县| 灯塔市| 徐闻县| 资讯 | 泽普县| 河津市| 青岛市| 平塘县| 手机| 珲春市| 旺苍县| 孟州市| 苍梧县| 腾冲县|