基于ESP32 DevKitC设计FIR数字滤波器
1. FIR滤波器设计基础
在使用ESP32 DevKitC设计FIR数字滤波器时,会遇到一些硬件特性带来的问题。ESP32自带的ADC和DAC存在一定局限性,ADC为12位宽,范围是0到4095;DAC仅8位宽,范围是0到255。若使用标准16位转换器,输出波形的精度会受影响。而且,ADC和DAC是单极性的,不接受负数据,而正弦波输入有正负半周期,因此需要将输入波形上移以保证其始终为正。
设计FIR滤波器可从基本原理出发,借助ESP32处理器的定时器中断。程序的运行逻辑是:配置定时器在滤波器所需的采样时刻产生中断,在中断服务程序(ISR)中读取ADC数据、处理数据并输出到DAC。以下是程序操作的PDL描述:
BEGIN/MAIN
Configure timer interrupt at the filter sampling time
Store filter coefficients in an array
Configure ADC and DAC
Wait for timer interrupts (ISR)
END/MAIN
BEGIN/ISR
Read a new sample from ADC
Calculate the output sample
Send the output sample to the DAC
Delay the input signals by one sample time
END/TMR
超级会员免费看
订阅专栏 解锁全文
945

被折叠的 条评论
为什么被折叠?



