程序清单:
.title “FIR1.ASM”
.mmregs
.def start
x .usect “x”,8
PA0 .set 0
PA1 .set 1
.data
COEF: .word 1*32768/10
.word 2*32768/10
.word -4*32768/10
.word 3*32768/10
.word -4*32768/10
.word 2*32768/10
.word 1*32768/10
.text
start: SSBX FRCT
STM #x+7,AR2
STM #6,AR0
LD #x+1,DP
PORTR PA1,@x+1
FIR1: RPTZ A,#6
MACD *AR2-,COEF,A
STH A,*AR2
PORTW *AR2+,PA0
BD FIR1
PORTR PA1,*AR2+0
.end
用循环缓冲区实现FIR滤波器
程序清单:
.title “FIR2.ASM”
.mmregs
.def start
.bss y,1
xn .usect “xn”,7
b0 .usect “b0”,7
PA0 .set 0
PA1 .set 1
.data
table: .word 1*32768/10
.word 2*32768/10
.word 3*32768/10
.word 4*32768/10
.word 5*32768/10
.word 6*32768/10
.word 7*32768/10
.text
start: SSBX FRCT
STM #b0,AR1
RPT #6
MVPD table,*AR1+
STM #xn+6,AR2
STM #b0+6,AR3
STM #7,BK
STM #-1,AR0
LD #xn,DP
PORTR PA1,@xn
FIR2: RPTZ A,#6
MAC *AR2+0%,*AR3+0%,A
STH A,@y
PORTW @y,PA0
BD FIR2
PORTR PA1,*AR2+0%
.end
链接命令文件
FIR2.obj
vectors.obj
-o FIR2.out
-m FIR2.map
-e start
MEMORY
{
PAGE0:
EPROM:org=0E000h,
len=1000h
VECS: org=0FF80h,
len=0080h
PAGE1:
SPRAM:org=0060h,
len=0020h
DARAM:org=0080h,
len=1380h
}
SECTIONS
{
.text:>EPROM PAGE 0
.data:>EPROM PAGE 0
.bss :>SPRAM PAGE 1
xn:align(8){}>DARAM PAGE 1
b0:align(8){}>DARAM PAGE 1
.vections:VECS PAGE 0
}
xiexie
dsp_lib中滤波函数怎么用滤波函数在dsp_lib中主要有两种,一种是滤波器,另一种是滤波器器件。滤波器可以用来滤除高频噪声,提高信号质量,滤波器器件则可以用来实现更复杂的滤波功能,比如滤波器器件可以用来实现滤波器的可调节功能、陷波功能等。
使用dsp_lib中的滤波函数需要先定义滤波器的类型,然后根据需要设置其参数,最后调用滤波函数来实现滤波功能。例如,要实现一个低通滤波器,首先需要定义一个低通滤波器类型,然后根据需要设置其参数,最后调用dsp_lib中的低通滤波函数来实现滤波功能。
:模拟信号切速率不高,精度要求不高的话,可以用STM32内部ADC ,DMA模式; 通讯速度,串口不够快的话,可以考虑用USB或USB转串口; 数据发送接口方面, STM32 的性能对比 DSP 可以说没有弱点. 如果对比 ADC , mcu 自带的 ADC 速度上也并不差欢迎分享,转载请注明来源:内存溢出
评论列表(0条)