想用28335实现测试存储一个三通道几百毫秒的冲击电压信号,要求每个通道的采样频率都大于等于50KHz。拟用一个50kHz的PWM波触发AD采样,进入AD中断后对数据进行3kHz的二阶低通滤波并通过SPI存储到铁电里面,完事之后再通过串口发送到PC端。请各位大神帮我分析一下是否可行?采用哪种滤波器比较适合?谢谢
Seven Han:
您好,采样频率根据AD模块设置,滤波器的设计主要是参考想要滤除的以及想要保留的频率,也就是滤波器设计时需要考虑的截至频率
想用28335实现测试存储一个三通道几百毫秒的冲击电压信号,要求每个通道的采样频率都大于等于50KHz。拟用一个50kHz的PWM波触发AD采样,进入AD中断后对数据进行3kHz的二阶低通滤波并通过SPI存储到铁电里面,完事之后再通过串口发送到PC端。请各位大神帮我分析一下是否可行?采用哪种滤波器比较适合?谢谢
hongliang chen:
回复 Seven Han:
您好,我用fdatool设计了一个采样频率48k,低通3k的61阶FIR滤波器。但是参考controlSUITE\libs\dsp\FPU\v131\examples\2833x_FIR和controlSUITE\libs\dsp\FPU\v131\examples\2833x_RFFT_ADC_RT的例程时,发现它们都是采集一批数据,做一次FIR或者FFT处理,得到一批处理后的数据,前一批数据和后一批数据衔接不上,我要对加速度传感器的电压信号进行实时滤波处理,有用的冲击信号持续时间只有几个毫秒甚至更小,这样的话好像实时性不好。
能否设置一个N单元的循环缓冲区,初始化FIR一次后,AD采集一个数据x(n)更新到循环缓冲区,执行一次FIR,得到一个y(n),即一进一出。比如说你在第n个采样点得到一个ADC值,更新到循环缓冲区,然后对缓冲区内的第x(n),x(n-1),x(n-2),……x(n-N+1)个采样点的值与N阶FIR滤波器系数h(0),h(1),h(2)……h(N-1)进行乘加运算后得到一个输出值。这样的话如何调用官方的fir函数进行计算呢?