打印

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

[复制链接]
6671|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
981102|  楼主 | 2007-12-11 21:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
要实现6路模拟量的测量和计算,每个周波(50Hz)采样300点(要测量50次的谐波),计算出1-50次的谐波,用到傅氏滤波算法,其他功能主要是2路串口通信,请问一下,想用STM32 103系列的芯片,它有硬件乘法器,72MHz,不知计算速度能满足以上要求吗?
沙发
王紫豪| | 2007-12-11 22:38 | 只看该作者

间歇性的可以

使用特权

评论回复
板凳
zuoyou| | 2007-12-13 15:11 | 只看该作者

re

完全可以

使用特权

评论回复
地板
981102|  楼主 | 2007-12-13 17:12 | 只看该作者

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

好像stm32的乘法器和除法器执行时间长,要连续采样和计算不行啊

使用特权

评论回复
5
香水城| | 2007-12-13 21:31 | 只看该作者

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条指令形式。

使用特权

评论回复
6
xyyking| | 2007-12-27 16:56 | 只看该作者

11

LZ  算128的点  要多少时间 

使用特权

评论回复
7
老狼| | 2007-12-27 17:34 | 只看该作者

建议采样取2的N次幂!

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

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

使用特权

评论回复
8
981102|  楼主 | 2007-12-28 11:02 | 只看该作者

电表计量用

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

使用特权

评论回复
9
老狼| | 2007-12-28 11:23 | 只看该作者

每20ms算1次FFT

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

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

使用特权

评论回复
10
老狼| | 2007-12-28 11:50 | 只看该作者

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

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

使用特权

评论回复
11
hotpower| | 2007-12-28 13:06 | 只看该作者

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

使用特权

评论回复
12
ilovecr| | 2007-12-28 13:26 | 只看该作者

老狼说的用双CPU可行啊!

原来设计流量仪表时就是这么用的,那时是用了两个51
一个主做主控制,另一个只进行流量的检测!

使用特权

评论回复
13
老狼| | 2007-12-28 14:12 | 只看该作者

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

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

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

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

使用特权

评论回复
14
981102|  楼主 | 2007-12-28 14:59 | 只看该作者

谢谢老狼

谢谢老狼,原来都是用2个cpu的,现在想用1个,str912 做128点FFT计算,时间有多长阿? 

使用特权

评论回复
15
老狼| | 2007-12-28 15:44 | 只看该作者

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

使用特权

评论回复
16
香水城| | 2007-12-28 16:12 | 只看该作者

ST有STR9上的DSP库函数

使用特权

评论回复
17
981102|  楼主 | 2007-12-28 16:29 | 只看该作者

香水给的数据重要啊

香水给的数据重要啊,和TMS320F2812对比一下就好了

使用特权

评论回复
18
香水城| | 2007-12-28 16:32 | 只看该作者

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

手册的链接在16楼。

使用特权

评论回复
19
老狼| | 2007-12-29 10:45 | 只看该作者

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

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

很容易让人误解成ms,不如直接改成 us,这样看着直观!

使用特权

评论回复
20
香水城| | 2007-12-29 13:36 | 只看该作者

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

估计美国人不会误解的吧。。。。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

17

帖子

1

粉丝