要实现6路模拟量的测量和计算,每个周波(50Hz)采样300点(要测量50次的谐波),计算出1-50次的谐波,用到傅氏滤波算法,其他功能主要是2路串口通信,请问一下,想用STM32 103系列的芯片,它有硬件乘法器,72MHz,不知计算速度能满足以上要求吗?
好像stm32的乘法器和除法器执行时间长
好像stm32的乘法器和除法器执行时间长,要连续采样和计算不行啊
STM32的乘法指令为单周期的,除法指令根据操作数大小为2~12
指令 语义 操作
MUL r0, r1, r2 r0 = (r1 * r2) 乘法,32位结果
MLA r0, r1, r2, r3 r0 = ( r1 * r2) + r3 乘加,32位结果
[U|S]MULL r4, r5, r2, r3 r5:r4 = r2 * r3 乘法,64位结果
[U|S]MLAL r4, r5, r2, r3 r5:r4 = r2 * r3 + r5:r4 乘加,64位结果
SDIV Rd, Rn, Rm Rd = Rn / Rm 有符号除法
SDIV Rd, Rn, Rm Rd = Rn / Rm 无符号除法
乘除法共6条指令形式。
建议采样取2的N次幂!
256点 或者 512点,这样做FFT比较简单,如果实时的处理估计够呛,我是瞎说的,没有做过计算,但是一般来说,没有必要完全是实时的,你想呀,20ms 刷一次屏,谁能看请?还是从实际出发吧,做成间歇行的,只有控制类的,或者瞬间信号捕捉,才需要全实时(每20ms最少算一次)。
我做过4通道 64点的FFT,每个点算一次,每20ms算64次FFT,最后发现完全没有必要,而且计算已经基本完全占用CPU资源,无法完成其它的功能,最后改成每
20ms算2次,CPU空闲时间还很多的,
等你做完了,告诉我哈!我也做一个玩玩!
电表计量用
电表计量用,要一直在采样计算,还要考虑高次谐波到23次以上,没办法啊,至少每周波128个点,6通道
每20ms算1次FFT
一直在采样计算,还要考虑高次谐波到23次以上,没办法啊,至少每周波128个点,6通道
每20ms算1次FFT,应该改没问题,但是注意AD芯片的选择,估计至少要上16位的吧,如果AD芯片采样占用时间过长,就很难完成了。如果能用内部的AD就好了,它的采样应用起来很简单,但是这个AD肯定不能满足你的应用。
如果实现起来,比较困难。
可采用双CPU的方式,把采样数据单元剥离出去,用一个CPU单独控制,利用这个CPU内部的RAM作为数据缓冲,并将数据直接归一化,这样传给数据处理的CPU的数据就可以直接进行计算了,数据处理的CPU压力就小多了,两个CPU通过SPI的方式连接起来,如果后面CPU的压力依然比较大,可以考虑将地址变换也放到前一个CPU,因为后面CPU还需要响应LCD,通讯 ......的任务。最好两个CPU用同一型号,这样调试起来比较方便,两个CPU很多程序模块可以共用。
老狼说的用双CPU可行啊!
原来设计流量仪表时就是这么用的,那时是用了两个51
一个主做主控制,另一个只进行流量的检测!
hotpower:这个事情说来话长呀!
这个设备软件前后改了几次,但是每次改的都很急!ARM熟呀,其实ARM作FFT 最大的问题就是地址变换比较麻烦,不能像DSP那样自动地址变换,反正对我的应用来说已经够了,相信将来的ARM,这方面肯定会加强的。
我现在拿ARM当DSP用,作FIR,IIR,FFT,也挺好玩的.
至于DSP,我个人认为最大的麻烦是指令没有通用性,一个产品一个样,搞起来比较烦,我比较懒,不太愿意记太多死的东西。但是用ARM作数据处理,有一个不太方便的地方,就是数据采集完后,无法自动显示波形,TI的编译器就有这个功能!要看波形,得自己动手编写小程序。
谢谢老狼
谢谢老狼,原来都是用2个cpu的,现在想用1个,str912 做128点FFT计算,时间有多长阿?
香水给的数据重要啊
香水给的数据重要啊,和TMS320F2812对比一下就好了
这个数据的详细情况,请看ST网站上的手册
手册的链接在16楼。
建议老大将这个手册中的单位改一下!
microsecond 的英文解释就是 one millionth of a second 微秒
很容易让人误解成ms,不如直接改成 us,这样看着直观!
哈哈,那个手册是我们美国的工程师写的
估计美国人不会误解的吧。。。。。。