[MCU] MCU运算时间超过采样间隔怎么办?

[复制链接]
5202|36
ZHENGXIUWEI 发表于 2015-7-8 13:22 | 显示全部楼层
定时中断去采集数据,放到环形缓冲区里(缓冲区大小可设为32个数据长度),主程序判断缓冲区数据》=25时,读取25个数据 去处理否则等待     原理上只要处理速度大于采集速度切缓冲区足够长就没问题。也可采用RTOS ,稍复杂一点,但也是应该掌握的。
 楼主| pkuzhx 发表于 2015-7-8 13:40 | 显示全部楼层
gx_huang 发表于 2015-7-8 12:24
这家公司有一个应用笔记,有FFT代码和运行时间数据。见附件。

多谢,我去试试这个代码
 楼主| pkuzhx 发表于 2015-7-8 13:44 | 显示全部楼层
john_lee 发表于 2015-7-8 12:24
楼主这种情况属于“过载”。
先解释一下“载荷”和“载荷周期”的概念:在嵌入式环境中,CPU 都是为了处理 ...

谢谢,讲的很详细,感觉跟版主说的方法原理是一样的
 楼主| pkuzhx 发表于 2015-7-8 13:45 | 显示全部楼层
songchenping 发表于 2015-7-8 12:50
如果你关心的是最近25次采集数据,可以考虑用DMA的方法,边采集边计算啊。 ...

嗯,好的,正在尝试
manbo789 发表于 2015-7-8 14:36 | 显示全部楼层
我想问楼主,你25个数据进行一次FFT,为什么要用512点的FFT?
forrest11 发表于 2015-7-8 15:10 | 显示全部楼层
这个问题明显是用主循环来做FFT运算,用定时中断的方法来读取传感器数据。时间肯定够了。
ocon 发表于 2015-7-8 15:19 | 显示全部楼层
读数据的中断优先级大于FFT计算的优先级即可,如果中断没有优先级就不能把计算放中断里做。
playerboy 发表于 2015-7-8 17:20 | 显示全部楼层
采集用中断做,计算放在主循环里面来做
 楼主| pkuzhx 发表于 2015-7-8 17:38 | 显示全部楼层
manbo789 发表于 2015-7-8 14:36
我想问楼主,你25个数据进行一次FFT,为什么要用512点的FFT?

采完25个点进行一次计算,不代表计算只用这25点啊,前面采到的点也会用到的
tdmn3374 发表于 2015-7-8 17:50 | 显示全部楼层
中断采集数据就行了
jlhgold 发表于 2015-7-8 20:37 | 显示全部楼层
AD是中断采样 计算一次才消耗2-3次采样 时间绝对是够的啊 时间怎么会不够 你在逗我么
lyjian 发表于 2015-7-8 21:30 | 显示全部楼层
1S才计算一次,计算一次时间100mS。
这样也会时间不够?开什么玩笑!
wzx2088 发表于 2015-7-8 22:04 | 显示全部楼层
定时采样,DMA可用可不用,能用更好
ltbytyn 发表于 2015-7-8 22:15 | 显示全部楼层
很简单了,我以前做过这东西。采样数据放到2维数组里面。data[m][25]  (m>2,具体根据情况根据CPU处理速度)。动动脑子,知道怎么做了吧?
coody 发表于 2015-7-8 22:34 | 显示全部楼层
类似的应用我是经常碰到的,比如语音压缩,比如Speex或ADPCM等等,FFT也是,必须要等采集够数据才能处理。
比如语音压缩ADPCM,采样频率16KHZ,采样1016个点就要压缩,我用两个采样缓冲,轮流放两个缓冲,压缩或解压缩程序发现有数据就去压缩或解压缩,我还是用8位的STC的MCU做的,都很好,用ARM的话,那简直就不是事。
dwdsp 发表于 2015-7-9 08:28 | 显示全部楼层
什么计算啊,这么复杂占这么长时间啊,提高运行速度吧
 楼主| pkuzhx 发表于 2015-7-9 11:55 | 显示全部楼层
多谢各位,通过中断的方法解决了这个问题。
作为一个新手,有太多需要学习了,感谢各位的帮助。
还有一些人提到的其他方法以后再试咯
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部