最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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)的評論 (共 條)

分享到微博請遵守國家法律
星子县| 丰原市| 洛扎县| 洪泽县| 仙游县| 辉南县| 土默特右旗| 盐津县| 荔波县| 泸州市| 罗山县| 张家港市| 黄骅市| 湾仔区| 资源县| 大冶市| 太仓市| 延边| 常德市| 灯塔市| 平凉市| 焦作市| 深泽县| 河池市| 林口县| 福贡县| 绍兴市| 辽阳县| 昌邑市| 达孜县| 靖宇县| 乌拉特前旗| 景东| 滨州市| 鄯善县| 虎林市| 新乡县| 广南县| 观塘区| 亚东县| 恭城|