DSP FIR滤波器设计Word文档格式.docx

上传人:b****4 文档编号:17269423 上传时间:2022-11-30 格式:DOCX 页数:16 大小:23.52KB
下载 相关 举报
DSP FIR滤波器设计Word文档格式.docx_第1页
第1页 / 共16页
DSP FIR滤波器设计Word文档格式.docx_第2页
第2页 / 共16页
DSP FIR滤波器设计Word文档格式.docx_第3页
第3页 / 共16页
DSP FIR滤波器设计Word文档格式.docx_第4页
第4页 / 共16页
DSP FIR滤波器设计Word文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

DSP FIR滤波器设计Word文档格式.docx

《DSP FIR滤波器设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《DSP FIR滤波器设计Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

DSP FIR滤波器设计Word文档格式.docx

pcr0.set39h;

串口0引脚控制寄存器

dxr11.set43h;

串口1数据发送寄存器

spsa1.set48h;

串口1子地址寄存器

spcr11.set49h;

多通道串口1寄存器1

spcr21.set49h;

多通道串口1寄存器2

xcr11.set49h;

串口1发送控制寄存器

pcr1.set49h;

串口1引脚控制寄存器

srgr1.set49h;

采样率发生寄存器1

srgr2.set49h;

采样率发生寄存器2

swcr.set2bh;

软件等待状态寄存器

;

以下部分为要用变量的定义

timer_count.set060h;

定时器计数

mcbsp_init.set061h;

mcbsp初始化

wave_ptr.set062h

is_new_data.set063h;

新数据到达标志

new_ad.set064h

out_wave_ptr.set065h

t_ar2.set066h

t_ar3.set067h

temp.set068h

wave_buf.set0900h

out_wave_buf.set01000h

N.set38;

FIRtaps

fir_coef_buf.set100h;

FIRcoefbuffer

fir_data.set200h;

FIRwindowsdatabuffer!

.text

--------------------------------------------------------------------

interruptvectortable!

rsb_c_int00

nop

nmib__ret

sint17b__ret

sint18b__ret

sint19b__ret

sint20b__ret

.word0,0

sint21b__ret

sint22.word01000h

.word0,0,0

sint23.word0ff80h

sint24.word01000h

sint25.word0ff80h

sint26.word01000h

sint27.word0ff80h

sint28.word01000h

sint29.word0ff80h

sint30.word01000h

int0b__ret

int1b__ret

int2b__ret

tintbtimer;

内部定时中断

brint0breceive;

缓冲串口接收中断

bxint0btransmit;

缓冲串口发送中断

trintb__ret

txintb__ret

int3b__ret

hpintb__ret

q26.word0ff80h

q27.word01000h

q28.word0ff80h

q29.word01000h

q30.word0ff80h

q31.word01000h

--------------------------------------------------------------------------

复位中断服务程序

------------------------------------------------------------------------

_c_int00:

stm#2020h,pmst;

vectortablestart:

0x2000,看IPTR中的值

ssbxintm;

closeallint!

(ssbxintm)

ssbxsxm;

extendsign!

ssbxfrct;

factionmultiply

stm#10h,26h;

stopTIMER0!

stm#10h,36h;

stopTIMER1!

stm#0ffh,sp;

sp=0x0ff

ld#0,dp;

dp=0

stm#0ffffh,ifr;

clearallint!

中断标志寄存器

stm#20h,imr;

bit5->

BXINT0,bit4->

BRINT0,enableBXINT0

中断屏蔽寄存器

stm#02492h,swwsr;

all2waits!

stm#0,swcr

stm#0,58h

wait_pll:

ldm58h,a

and#1,a

bcwait_pll,aneq

stm#97ffh,58h;

switchpll*10->

100Mclk

rpt#100

********************************************************************

初始化RAM,Variable....

stm#wave_buf,ar6

stm#1,ar0

rpt#24

mvpdwave_data,*ar6+0;

movewavedatatowave_buf->

0x0900h

stm#wave_buf,wave_ptr;

savewavebuffer'

ptr

stm#out_wave_buf,out_wave_ptr;

saveoutwavebuffer'

ptr,becauseuse

circularaddress,sowhensaveout_wave

date,must++!

stm#fir_coef_buf,ar6

rpt#N-1

mvpdfir_coef,*ar6+;

movefircoeftofir_coef_buf(indatamem)

stm#fir_coef_buf,t_ar2;

stm#fir_data,t_ar3

stm#0aa55h,mcbsp_init;

whenmcbsp_init==0xaa55,transmitforinitac01

stm#5,timer_count;

initvariabletimer_count!

stm#0,is_new_data;

ifis_new_data==1,hasnewADdatabyslaveac01!

stm#1000h,ar0

stm#1800h,ar5

stm#400h,bk

ld*ar0,t

ld#0,b

stm#0,spsa0;

spsa0为串口0的子地址寄存器,chooseSPCR10

stm#2000h,spcr10;

receivesign_extendinDRR

stm#1,spsa0;

chooseSPCR20

stm#0c0h,spcr20;

fs->

int!

stm#2,spsa0;

chooseRCR10

stm#40h,39h

stm#3,spsa0;

chooseRCR20

stm#0,39h

stm#4,spsa0;

chooseXCR10

stm#40h,xcr10

stm#5,spsa0;

chooseXCR20

stm#0eh,spsa0;

choosePCR0

stm#0dh,pcr0;

fsislowactive,riseedgeofclkx,fallingedge

ofclkr

stm#7h,spsa0

stm#8000h,39h

rpt#0ffffh

stm#00h,dxr10

ldm22h,a

stm#1,38h

stm#0c1h,39h;

startMcBSP0send!

ld#603h,a

rsbxintm;

enableallint!

idle1

idle1

idle1;

软件复位两个AC01

ld#600h,a

waitforint.....

ld#3,a

send#3

ld#00105h,a;

fs=10M/2/A/B=25k

flp=10M/2/40/A=25k(allpass)

fhp=fs/200=125Hz(notuse!

A=05,B=40(0x28)

送05h到AC01的数据寄存器1

ld#00228h,a

送28h到AC01的数据寄存器2

ld#00300h,a

送00h到AC01的数据寄存器3

ld#00405h,a

送05h到AC01的数据寄存器4(AD&

DA0dB)

ld#00505h,a

送05h到AC01的数据寄存器5(highpassfilterdisable)

ld#00600h,a

送00h到AC01的数据寄存器6

ld#00700h,a

送0到AC01的数据寄存器7

ld#800h,a

送0到AC01的数据寄存器8

ld#0h,a

stm#0,38h

stm#2001h,39h;

开始MCbsp0接收!

stm#30h,imr;

BRINT0,使能BXINT0

stm#10h,tcr;

stopTIMER!

stm#0ffffh,prd;

装载PRD,周期寄存器

stm#0fh,tcr;

TIMERstart,eachabout100HZ....

orm#8,imr;

enableTIMERINT!

again:

bitfis_new_data,#1;

testis_new_data==1?

ccfir,tc;

==1,thencallfir!

newADdatainnew_ad(0x64)

bagain

transmit:

pshmst1

pshmst0

pshmbk

pshmar7

pshmah

pshmal

cmpmmcbsp_init,#0aa55h

bcinit,tc

stm#25,bk;

eachAC01has25dotstoD/A!

mvdm#wave_ptr,ar7;

restorewavebufferptr!

ld*ar7+%,a

stlma,dxr10;

sendwavedata!

MasterAC01makesourcewave,

SlaveAC01makefilterresultwave!

bdwave_make_end

mvmdar7,#wave_ptr;

savewavebufferptr!

init:

stlma,dxr10

bitfdxr10,#800h;

ifsetuplastregofAC01,setmcbsp_init=0!

bcwave_make_end,ntc;

notequal,jump!

stm#0,mcbsp_init;

whenmcbsp==0or1,transmitformakewave!

wave_make_end:

popmal

popmah

popmar7

popmbk

popmst0

popmst1

__ret:

rete

receive:

ld#0,dp

mvkddrr10,*ar5;

saveADdata

pshd*ar5+%;

saveADdatainAD_buffer(0x1800-0x1c00)

popdnew_ad

stm#1,is_new_data;

hasnewADdata

timer:

ldmtimer_count,a

sub#1,a

bcnot_show_led,aneq;

ifa!

=0,jump!

bitfst1,#2000h;

testXF?

bcshow_led,tc

ssbxxf;

setxf=1

bshow_con

show_led:

rsbxxf;

setxf=0

show_con:

ld#5,a;

not_show_led:

stlma,timer_count

fir:

pshmar0

pshmar2

pshmar3

mvdm#t_ar2,ar2;

restorear2

mvdm#t_ar3,ar3;

restorear3

ldnew_ad,-2,a;

newADdata->

a,removetwoLSBs

stm#N,bk;

setcircularaddressingsize

stla,*ar3+%

rptza,#(N-1);

0->

a,thenrepeat34times

mac*ar2+0%,*ar3+0%,a;

doneFIRfilter,resultinah

mvmdar3,#t_ar3;

savear3

mvmdar2,#t_ar2;

savear2

stm#100h,bk;

mvdm#out_wave_ptr,ar7;

stha,-2,temp;

saveFIRresultintemp

ldtemp,2,a;

shift2bitforAC01D/A!

stla,*ar7+0%;

saveFIRresulttowavebuffer!

stla,temp

mvmdar7,#out_wave_ptr;

newADdatahasbeenprocessed!

cmpmout_wave_ptr,1000h

bccon_fir,ntc

ccs_show:

此处加断点,查看结果

nop;

ifout_wave_ptr==0xc00,

nop;

mayshowout_waveinCCS!

!

show128dots!

inputbuffer->

0x1800

outputbuffer->

0x1000(showfrom0x1020)

con_fir:

popmar3

popmar2

popmar0

ret

wave_data:

freqabout1kHz

.word03ffch;

+2volt

.word03ffch

.word0c000h;

-2volt

.word0c000h

fir_coef:

.wo-50

.word101

.word150

.word203

.word216

.word153

.word-3

.word-239

.word-508

.word-729

.word-802

.word-634

.word-163

.word615

.word1638

.word2777

.word3861

.word4711

.word5178

.word2777

.word150

.word-50

.end

4.调试步骤:

1短接JP9,使得DES5402PP的信号输出通道和输入通道相连。

2启动CCS,新建一个工程fir5402.pjt。

3在工程中添加文件fir5402.asm和文件*.cmd,在标号ccs_show处添加断点,编译连接,然后将OUT文件装入,按Animate按扭运行程序。

这时会看到断点处黄色箭头一直闪烁,状态栏有go字一直闪烁。

4选择View->

graph->

Time/Frequency菜单打开一个图形显示窗口。

在“starta

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1