要实现6路模拟量的测量和计算,每个周波(50Hz)采样300点

zhaohuaipu   2007-12-11 21:08 楼主
                                 要实现6路模拟量的测量和计算,每个周波(50Hz)采样300点(要测量50次的谐波),计算出1-50次的谐波,用到傅氏滤波算法,其他功能主要是2路串口通信,请问一下,想用STM32 103系列的芯片,它有硬件乘法器,72MHz,不知计算速度能满足以上要求吗?

回复评论 (21)

间歇性的可以

                                  
点赞  2007-12-11 22:38

re

                                 完全可以
点赞  2007-12-13 15:11

好像stm32的乘法器和除法器执行时间长

                                 好像stm32的乘法器和除法器执行时间长,要连续采样和计算不行啊
点赞  2007-12-13 17:12

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条指令形式。
点赞  2007-12-13 21:31

11

                                 LZ  算128的点  要多少时间 
点赞  2007-12-27 16:56

建议采样取2的N次幂!

256点 或者 512点,这样做FFT比较简单,如果实时的处理估计够呛,我是瞎说的,没有做过计算,但是一般来说,没有必要完全是实时的,你想呀,20ms 刷一次屏,谁能看请?还是从实际出发吧,做成间歇行的,只有控制类的,或者瞬间信号捕捉,才需要全实时(每20ms最少算一次)。

我做过4通道 64点的FFT,每个点算一次,每20ms算64次FFT,最后发现完全没有必要,而且计算已经基本完全占用CPU资源,无法完成其它的功能,最后改成每
20ms算2次,CPU空闲时间还很多的,
等你做完了,告诉我哈!我也做一个玩玩!
点赞  2007-12-27 17:34

电表计量用

                                 电表计量用,要一直在采样计算,还要考虑高次谐波到23次以上,没办法啊,至少每周波128个点,6通道
点赞  2007-12-28 11:02

每20ms算1次FFT

一直在采样计算,还要考虑高次谐波到23次以上,没办法啊,至少每周波128个点,6通道

每20ms算1次FFT,应该改没问题,但是注意AD芯片的选择,估计至少要上16位的吧,如果AD芯片采样占用时间过长,就很难完成了。如果能用内部的AD就好了,它的采样应用起来很简单,但是这个AD肯定不能满足你的应用。
点赞  2007-12-28 11:23

如果实现起来,比较困难。

                                 可采用双CPU的方式,把采样数据单元剥离出去,用一个CPU单独控制,利用这个CPU内部的RAM作为数据缓冲,并将数据直接归一化,这样传给数据处理的CPU的数据就可以直接进行计算了,数据处理的CPU压力就小多了,两个CPU通过SPI的方式连接起来,如果后面CPU的压力依然比较大,可以考虑将地址变换也放到前一个CPU,因为后面CPU还需要响应LCD,通讯 ......的任务。最好两个CPU用同一型号,这样调试起来比较方便,两个CPU很多程序模块可以共用。
点赞  2007-12-28 11:50

老狼为何不用DSP???28系列也适合你呀~~~

                                  
点赞  2007-12-28 13:06

老狼说的用双CPU可行啊!

原来设计流量仪表时就是这么用的,那时是用了两个51
一个主做主控制,另一个只进行流量的检测!
点赞  2007-12-28 13:26

hotpower:这个事情说来话长呀!

这个设备软件前后改了几次,但是每次改的都很急!ARM熟呀,其实ARM作FFT 最大的问题就是地址变换比较麻烦,不能像DSP那样自动地址变换,反正对我的应用来说已经够了,相信将来的ARM,这方面肯定会加强的。

我现在拿ARM当DSP用,作FIR,IIR,FFT,也挺好玩的.

至于DSP,我个人认为最大的麻烦是指令没有通用性,一个产品一个样,搞起来比较烦,我比较懒,不太愿意记太多死的东西。但是用ARM作数据处理,有一个不太方便的地方,就是数据采集完后,无法自动显示波形,TI的编译器就有这个功能!要看波形,得自己动手编写小程序。

点赞  2007-12-28 14:12

谢谢老狼

                                 谢谢老狼,原来都是用2个cpu的,现在想用1个,str912 做128点FFT计算,时间有多长阿? 
点赞  2007-12-28 14:59

哈哈,这个U我也没用过,你自己实际跑一下嘛!

                                  
点赞  2007-12-28 15:44

ST有STR9上的DSP库函数

UM0304 STR91x DSP library (DSPLIB) 使用手册

UM0304 STR91x DSP library (DSPLIB) 库函数包

下表是FFT函数的实测运行时间供各位参考:
点赞  2007-12-28 16:12

香水给的数据重要啊

                                 香水给的数据重要啊,和TMS320F2812对比一下就好了
点赞  2007-12-28 16:29

这个数据的详细情况,请看ST网站上的手册

                                 手册的链接在16楼。
点赞  2007-12-28 16:32

建议老大将这个手册中的单位改一下!

microsecond 的英文解释就是 one millionth of a second 微秒

很容易让人误解成ms,不如直接改成 us,这样看着直观!
点赞  2007-12-29 10:45

哈哈,那个手册是我们美国的工程师写的

                                 估计美国人不会误解的吧。。。。。。
点赞  2007-12-29 13:36
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复