Canmv k230 案例4.3——实时FIR (ADC+FIR+UART)(三)
实时FIR原理
待补充
Canmv k230代码
采用ADC的采集数据,在采集完数据后进行实时滤波,并将滤波结果输出到串口,由VOFA+串口工具显示
# FIR滤波器 ADC 滑动平均滤波器 +UART输出显示
import utime
import time
import array
import math
from ulab import numpy as np
from machine import ADC
from machine import UART
from machine import FPIOA
fpioa = FPIOA()
fpioa.set_function(5, fpioa.UART2_TXD)
fpioa.set_function(6, fpioa.UART2_RXD)
uart = UART(UART.UART2, baudrate=115200, bits=UART.EIGHTBITS, parity=UART.PARITY_NONE, stop=UART.STOPBITS_ONE)
adc = ADC(0,enable=True)
b=[1/4,1/4,1/4,1/4]
x=[2,3,4,5]
y=[0,0,0,0]
yy=[]
st=time.time_ns()
for i in range(10000):
value = adc.value()
for i in range(3):
x[i]=x[i+1]
x[3]=value
yy=0
for i in range(4):
yy+=b[i]*x[i]
uart.write("{0},{1}\n".format(value,yy))
adc.deinit()
滑动平均滤波器输出
采用ADC默认的输入信号,可以看到输出信号与滤波器之间存在很小的延时,延时时间与滤波器长度相关。
待续。。。