使用STM32f1,先用ADC采集数据放到数组,然后将数据进行dsp滤波。但是滤波过程中,ADC没有采集数据,导致这段数据丢失,应该咋修改代码?
dma+双缓冲
首先得保证CPU的速度要足够快,能满足 DSP的计算量。
AD采集可以采用DMA/中断/缓存等措施减少CPU的占用。
采用多任务调度也能较好的解决问题。
有一个想法,不晓得能不能解决你的问题。
添加一个中间层,ADC采集到数据,然后就存到中间层里面,链表的形式。
需要对数据进行滤波时,就从中间层的链表中取数据。
这样能把数据采集,和数据滤波两个不同的处理函数分隔开,单独作用。
而且中间层还具有缓冲的效果,起到防止数据丢失的作用。