kundi 发表于 2021-2-9 16:54:24

STC16与STM32F1的浮点运算速度比较的实验

实验目的
证明在相同频率下,STC16在使用FPMU时,运算速度比STM32F1快。
实验软件
开发环境:KEIL uvsion 5 ARM/C251
ISP下载:FLASH loader Demo (STM32),STC ISP V6.88 (STC16)
计时:Saleae Logic V1.1.15 (USB 8通道逻辑分析仪的上位机)
实验材料
STC16F40K128 LQFP64 的自制最小系统板*1
STM32F103C8T6 最小系统板(蓝色)*1
CH340G USB转TTL串口模块*1
8通道24MHZ的USB逻辑分析仪(用的是常见的CY7C68013A)*1
杜邦线若干
实验原理
测量时长的关键,是设置MCU的某个GPIO作为进行浮点运算的指示,上电时为高电平,开始浮点运算拉低为低电平,运算完成后设为高电平。
实验内容这里统一设置二者的频率为24MHZ
1.STM32
这里使用正点原子的模板
主函数:(GPIO拉低和恢复高电平用寄存器操作,这里是GPIOB。5)

设置时钟频率(24MHZ)

使用Flash loader demo 上传程序到最小系统后,把板子上boot0恢复0,接上逻辑分析仪,点击START并按下复位键,观察低电平持续时间


可以观察到,做这些浮点运算,STM32F1用时约0.371ms,即371us
2.STC16 代码使用STC官方网站下载的实验程序,前面STM32进行浮点运算的内容也是下图程序的(公平起见)。
注意要加STC_DFP.LIB才能启用内部的FPMU,注意main主函数第一句必须是WTST=0,执行速度才正常
这里用P0.1来指示浮点运算的运行。

下载时,频率要设置为24.000MHZ

测量浮点运算时长,图中显示低电平持续时间为55us。

实验结论
在相同频率下,STC16使用FPMU做相同的浮点运算,速度比无FPMU的M3内核的STM32F1明显要快很多。

jssd 发表于 2021-2-9 16:59:46

电流呢?

amigenius 发表于 2021-2-9 17:00:22

我觉得这个实验好像是:一个用刀的要和不准用刀还要自断一臂的,比谁切西瓜速度更快。

cne53102 发表于 2021-2-9 17:02:23

不错啊,痛点基本只剩KEIL和datasheet了

momo_li 发表于 2021-2-9 17:06:49

只能说明fpu能大大增加浮点运算速度,并不能暗示stc比stm多强。
这样削足适履的比较方法本身就没啥意思。

kundi 发表于 2021-2-9 17:21:00

本帖最后由 kundi 于 2021-2-9 17:25 编辑

在不使用FPMU的情况下,STC16用时0.4518ms,即451.8us,与STM32F1相比只慢了约81us,相差不大。至少比M0强
STC16用FPMU时,是STM32F1的371/55约等于6.7倍。
手上只有STM32F103C8T6的开发板,春节放假买不到其他M0,M4芯片

在KEIL中,把前面的FPMU用的LIB文件去除即可不使用FPMU

cne53102 发表于 2021-2-9 17:42:07

做成这样已经够可以了
话说这型号怎么只有某宝上第三方店铺有?

mtdzok 发表于 2021-2-9 18:11:24

踏踏实实做事比说东道西强。

No.5 发表于 2021-2-9 18:21:39

F1一言不合把频率开到72MHz,你怎么办呢?

takashiki 发表于 2021-2-9 19:05:27

这样比较有个卵用。

1、限制IC潜力
AVR翻转个IO只要两个时钟,而且还能输出5V,驱动能力还强;STM32也按同频率对比各方面落后。于是得出结论AVR的IO吊打STM32是不。

2、故意设置不公平的项目对比以突出自身
在Keil C51中,double和float是一样的,都是4个字节。在Keil ARM中,float是4字节,double是8字节。这里就不公平。你要么都按float进行计算,那么ARM的float库函数是sinf、cosf、tanf、sqrtf、atanf之类后缀带f的,不带f的都是双精度,你认为这样比较公平不。

综上,我估计24MHz的STC16在使用FPMU时会被72MHz的M3开软浮点击败,可能也就能和64MHz的M0战个平手。要是ARM用long long类型的定点数比较则会吊打STC16。

not_at_all 发表于 2021-2-9 20:08:11

同频率运行可以理解
STC16使用FPMU,STM32F1无FPMU? 你不是逗我玩吧!   
改天做个实验,同频率下STC单片机性能吊打电脑CPU,老姚会非常开心.......

kundi 发表于 2021-2-9 20:29:45

本帖最后由 kundi 于 2021-2-9 20:31 编辑

根据10楼意见,改进实验:
STM3F12部分改为以下代码:
          cfl3 = cfl1*cfl2;
    cfl3 = cfl1/cfl2-cfl3;
    cfl3 = cfl1*cfl2+cfl3;
    cfl3 = cfl1/cfl2*sinf(cfl3);
    cfl3 = cfl1/cfl2*cosf(cfl3);
    cfl3 = cfl1/cfl2*tanf(cfl3);
    cfl3 = cfl1/cfl2*sqrtf(cfl3);
    cfl3 = cfl1/cfl2*atanf(cfl3);
实验结果:
24MHZ:0.120ms=120us
72MHZ:65.68US


可见,更正后STM32F1仍然不敌STC16实验FPMU在24MHZ的效果(55us)。
有人说,一个有FPMU,一个没有,这明显不公平。
其实,STC16,使用FPMU也只是在KEIL中动动手指,加入一个LIB文件就可以了,易如反掌,借力发挥。STM32不是可以借力DMA加快一些应用的速度吗?
也有人说,GPIO速度不是一个周期就不是最厉害的,其实STM32也好,STC16也罢,都没见过GPIO速度很接近工作频率,一昧最求GPIO速度太接近时钟频率,意义不大。
STC16系列目前送样的,速度限制最高33M,以后计划速度提升到72甚至144M.在此实现之前,也不好说。

rootxie 发表于 2021-2-9 20:47:59

STC16果然碾压STM32,厉害厉害

kundi 发表于 2021-2-9 21:06:56

rootxie 发表于 2021-2-9 20:47
STC16果然碾压STM32,厉害厉害

严格来说,是直指M4,力压M3,横推M0的MCU。
STM32按内核分有多类,如果以后仍然再有大多数人喷STC,不如让ARM宣布M0/M0+内核全面淘汰{:titter:} ,M3只收每个芯片生产的版税。

takashiki 发表于 2021-2-9 21:09:42

STM32:
24MHZ:0.120ms=120us
72MHZ:65.68US
很显然72MHz时被2个等待时钟耽误了,居然连24MHz的2倍效率都没有,一般来说这是很不对劲的。那么如果放到RAM中运行呢 ... 24MHz的STC16还能笑得出来不。按这个时间计算,并按照M3 1.25DMIPS/MHz、M0 0.9DMIPS/MHz计算,STC16的FPMU仅仅比相当于它3倍频率全速运行的M0的软件浮点稍强一点,约为2.2倍主频全速运行的M3软件浮点水平。 FPMU的性能之弱刷新了我对硬件浮点的认知,即使他能达到51的70倍。

aammoo 发表于 2021-2-9 21:11:15

stc64什么时候出?

kundi 发表于 2021-2-9 21:21:24

takashiki 发表于 2021-2-9 21:09
STM32:
24MHZ:0.120ms=120us
72MHZ:65.68US


DIMPS是衡量整数运算效率的,不是衡量浮点运算的。
一般1757个DHRYSTONE等于1DMIPS.
一般可用DMIPS/MHZ来准确衡量CPU性能
所以,此处使用主要是强调相同频率下的运算效果。万一哪天STC16升级了,主频上去了,外设更完善了呢
而浮点运算,则需要用另外一种方式衡量。
在不少实际应用中,能避免浮点运算就尽量避免,因为浮点运算一般是很消耗时间的。

takashiki 发表于 2021-2-9 21:39:03

kundi 发表于 2021-2-9 21:21
DIMPS是衡量整数运算效率的,不是衡量浮点运算的。
一般1757个DHRYSTONE等于1DMIPS.
一般可用DMIPS/MHZ来 ...

没错,我就是简单的按照你的M3的时间计算下M0需要的时间,软件浮点最终都是大量的整数运算。
我是觉得这个FPMU设计和ARM的硬件FPU还是有相当差距的,据说M4的硬件FPU能比iqmath更快,但STC16的FPMU按这个测试值是跑不过同频的M0的iqmath的,当然iqmath是定点数局限很多。我还以为所有的硬件FPU实现运行时间相差不大呢,但看来还是错了。

kundi 发表于 2021-2-9 21:49:09

takashiki 发表于 2021-2-9 21:39
没错,我就是简单的按照你的M3的时间计算下M0需要的时间,软件浮点最终都是大量的整数运算。
我是觉得这 ...

刚刚查了一下,衡量浮点运算是Whetsone.
后来,还有一种更加全面,客观的衡量CPU性能的方式,叫Coremark,任何8位到64位的CPU都可以用,但是要注册其官方网站,才可以获得测试原代码。

qwe2231695 发表于 2021-2-9 22:55:28

刷新了认知,我一直以为stc东西只有M0一半速度, 没想到已经达到72Mhz的M3的50%速度(而且只是24Mhz).

redworlf007 发表于 2021-2-9 23:11:34

Stc又在挣扎了呀

modbus 发表于 2021-2-10 00:37:44

takashiki 发表于 2021-2-9 21:09
STM32:
24MHZ:0.120ms=120us
72MHZ:65.68US


STM32F1在RAM中的运算速度还没有在闪存中的快

modbus 发表于 2021-2-10 00:42:58

takashiki 发表于 2021-2-9 21:39
没错,我就是简单的按照你的M3的时间计算下M0需要的时间,软件浮点最终都是大量的整数运算。
我是觉得这 ...

M4的FPU才真正算是FPU,有自己的指令集和寄存器,STC16的FPU只能算是一个外设,不是一个档次的东西。这东西主要还在价格,如果价格很有优势,速度又不错,也算多一种选择

LM5017 发表于 2021-2-10 01:53:43

有can 和 互补波PWM吗?

takashiki 发表于 2021-2-10 05:52:55

modbus 发表于 2021-2-10 00:37
STM32F1在RAM中的运算速度还没有在闪存中的快

24MHz时Flash中快,但72MHz时呢?就各有千秋了,有时相差很大,顺序执行小的循环Flash快,大量跳转各种LDR、STR RAM中快。LZ测试这时候Flash的等待周期严重影响到软件浮点运算了,效率都不到2倍。但RAM中依然是线性的,它没有等待,主要矛盾已经变成了次要矛盾,农民翻身把歌唱了。以同频无等待时RAM中速度是Flash运行的90%计算,72M时RAM中跑是24M Flash中运行的2.7倍,Flash中跑不到2倍,显然可以认为RAM中更快。

fengyunyu 发表于 2021-2-10 07:19:09

专业大神

rei1984 发表于 2021-2-10 07:48:28

最近在用stc。中文化还是很爽的。就是sample code 的写法。   比如寄存器直接 =0xXX
这样的写法。让我掉进了坑里。说多了都是泪。隔壁新唐的sample code 还是要技高一筹啊

boceyibiao 发表于 2021-2-10 08:24:53

讨论这个有用吗,一个好产品,是看是不是满足需求,我是觉得stc可以,价格合适,性能,功耗都ok,抗让扰也好,编程工具环境方便,很适合做一些产品,唯一缺陷是目前仿真效果差些,但是适应的一些产品,很多并不需要多强的仿真能力,总之一句话,够用,就ok

modbus 发表于 2021-2-10 10:21:33

takashiki 发表于 2021-2-10 05:52
24MHz时Flash中快,但72MHz时呢?就各有千秋了,有时相差很大,顺序执行小的循环Flash快,大量跳转各种LD ...

这个还真不一定是这样,和程序代码有很大关系,只对STM32F10X来说,RAM不在ICode总线上,从RAM取指需要绕一圈,如果顺序执行的指令占比大,则即使在72M时还是闪存的速度快,况且用STM32F1系列的有几个是把代码放在RAM中执行的

dellric 发表于 2021-2-10 15:05:55

这样来评估一下:分数max=主频/(执行相同任务消耗时间*功耗*单片芯片价格)   <!-- 把芯片性能开满测试 -->

dengxiaofeng 发表于 2021-2-10 16:49:00

看了 上面的 对比,还专门去看了一下STC16 的手册,整体感觉,就是对标M0 的,你要非说某些性能 比 103强 也正常,不过 再高也别指望了,存储器 和RAM 和主频 注定 只能是M0 级别的作业内容。不知道价格能不能在3rmb 以内。

redworlf007 发表于 2021-2-10 17:49:23

dengxiaofeng 发表于 2021-2-10 16:49
看了 上面的 对比,还专门去看了一下STC16 的手册,整体感觉,就是对标M0 的,你要非说某些性能 比 103 ...

不要说,反正Stc就是流弊,哈哈。

kundi 发表于 2021-2-10 18:00:51

本帖最后由 kundi 于 2021-2-10 18:10 编辑

dengxiaofeng 发表于 2021-2-10 16:49
看了 上面的 对比,还专门去看了一下STC16 的手册,整体感觉,就是对标M0 的,你要非说某些性能 比 103 ...

STC说内核比M0快,距其他地方的小道消息说,不带浮点运算器的将来也会出(只比M0快的),包括LQFP48/32和TSSOP20的。这种价格预计1-3元的都有。个人认为特别是TSSOP20价格必须在一元左右起,才能体现性价比。
这个带了浮点运算器的,STC自己都说力压M3了,所以STC真正的ARM32机就从M4开始做。
STC只从M4开始做ARM32位机了,那也只用交M4的费用给ARM。

dengxiaofeng 发表于 2021-2-10 18:18:35

kundi 发表于 2021-2-10 18:00
STC说内核比M0快,距其他地方的小道消息说,不带浮点运算器的将来也会出(只比M0快的),包括LQFP48/32和 ...

处理器 不复杂 ,仿真、外设库,都无所谓,当年 AVRLPC1768全部寄存器操作都还好。一旦外设复杂起来,生态就比较重要了,仿真也很重要。其实 STC16 仿真也很重要了。

dengxiaofeng 发表于 2021-2-10 18:19:28

redworlf007 发表于 2021-2-10 17:49
不要说,反正Stc就是流弊,哈哈。

不吹牛不贬低,其实就那样吧哈哈

redworlf007 发表于 2021-2-10 18:21:30

dengxiaofeng 发表于 2021-2-10 18:19
不吹牛不贬低,其实就那样吧哈哈

反正是说不得,一说就是鄙视啥啥,不尊重前辈啥啥的。

dengxiaofeng 发表于 2021-2-10 18:34:15

LM5017 发表于 2021-2-10 01:53
有can 和 互补波PWM吗?

看了一眼 貌似还真有

heky_007 发表于 2021-2-11 13:32:03

at403a,240mhz开起来,简单粗暴,st恢复供应都要考虑下了。

我是一个大白菜 发表于 2021-2-11 15:29:31

最近也在熟悉at403a,就担心后面供货价格稳定不

heky_007 发表于 2021-2-11 23:07:32

我是一个大白菜 发表于 2021-2-11 15:29
最近也在熟悉at403a,就担心后面供货价格稳定不

找供应商先提前备货,省的后面手忙脚乱

tomzbj 发表于 2021-2-11 23:53:00

来来来, DMA刷个屏试试? 没有DMA? 呵呵
GD32F350标称108M, 能超到280M以上, 这也是国产货, 人家可没吹大牛, 要不要降到24M和你比?
要不你就跑点现成算法, 快速排序, CRC32之类呗, 或者直接coremark, dhrystone?

顺便觉得淘宝上搜个stc, 前八个结果里有五个是大学生电赛相关, 简直low到极点了.

qtechzdh 发表于 2021-2-12 07:17:34

自行车和拖拉机比赛,说,快来看,我速度比你拖拉机快。突突突。。

No.5 发表于 2021-2-12 10:30:25

aammoo 发表于 2021-2-9 21:11
stc64什么时候出?

我在等STC256

myxiaonia 发表于 2021-2-14 14:12:47

modbus 发表于 2021-2-10 10:21
这个还真不一定是这样,和程序代码有很大关系,只对STM32F10X来说,RAM不在ICode总线上,从RAM取指需要绕 ...

我前一段时间又学习了下,i,d,sys总线到底怎么回事,最后发现其实到底走哪个总线,瓶颈不在这里,单口ram无论如何还是得走这里,总线矩阵也没用

所以f4就有了双bank ram了

kundi 发表于 2021-2-14 23:47:45

本帖最后由 kundi 于 2021-2-14 23:50 编辑

补上整数运算的对比实验
部分的代码段
unsigned int uint1, uint2;
unsigned intxuint;
以上2行STC16改为:volatileunsigned long int near uint1, uint2;
volatile unsigned long int near xuint;
int sint1, sint2;
int xsint;
以上2行STC16改为:
volatile long int sint1, sint2;
volatile long int xsint;

GPIOB->BRR=GPIO_Pin_5;//STC16改为P01=0;
      sint1 = 0x31030F05;
      sint2 = 0x00401350;
      xsint = sint1 * sint2;
      uint1 =5;
      uint2 =50;
      xuint = uint1 * uint2;
      uint1 = 654689;
      uint2 = 528;
      xuint = uint1 / uint2;
      sint1 = 2134135177;
      sint2 = 20000;
      xsint = sint1 / sint2;
      sint1 = -2134135177;
      sint2 = -20000;
      xsint = sint1 / sint2;
sint1 = 2134135177;
      sint2 = -20000;
      xsint = sint1 / sint2;
      GPIOB->BSRR=GPIO_Pin_5;//STC16改为P01=1;








同样是24MHZ,STM32F103需要7.50us,而STC16却只需要7.25us,相差0.25us
可见,STC16力压M3并非吹嘘。
当前,我手上的STC16,可以稳定运行到32MHZ没有问题,此时运行以上程序只要5.00us
STM32F103,如果要比STC16块,只能是提高频率了,到了72MHZ极限也只缩短到4.125us,只比STC16在32MHZ的快了不到20%,并没有翻2倍,和之前有人说的M3内核总线的缺点有关。
看来,以上也是STC32的32位机只从ARM的M4内核开始的原因。M0 M3内核的STC不想做,STC16都比它强了。

zhuisuoji 发表于 2021-2-15 04:25:12

有进步总是好的~~~

mtdzok 发表于 2021-2-15 07:59:10

支持楼主的探索精神,把冷嘲热讽当动力,这才是技术人员该有的样子

MYQQ2018 发表于 2021-2-15 09:48:15

我个人觉得这个比较是有意义的,把那些冷嘲热讽的当耳旁风吧

rei1984 发表于 2021-2-15 10:37:22

中国需要lz这样的人。我也比较赞成ls的兄弟的想法。    如果测试有违公准的人。大可以提出更好的算法。而不是局限于文字上的说教。

lz给中国工程师长脸了

华芯 发表于 2021-2-15 10:38:05

看起来在计算方面的性能还很不错{:lol:}

carefree1986 发表于 2021-2-15 11:19:57

本帖最后由 carefree1986 于 2021-2-15 11:29 编辑

说实话跟不带协处理器的stm32f103比,绝对是欺负人,属于选择性失明,要是跟st的m0比更有优越感,有本事跟华大或者国产的一大堆 m0内核比,不光速度连价格也没有优势了,还有51的仿真器跟xlink比简直就是砖头

carefree1986 发表于 2021-2-15 11:31:29

amigenius 发表于 2021-2-9 17:00
我觉得这个实验好像是:一个用刀的要和不准用刀还要自断一臂的,比谁切西瓜速度更快。 ...

跟玩cs 只让机器人带刀一样一把小手枪单挑一群

jianfengxixi 发表于 2021-2-15 23:22:25

编译器有没有开优化也得声明一下。。。

kundi 发表于 2021-2-16 13:37:57

jianfengxixi 发表于 2021-2-15 23:22
编译器有没有开优化也得声明一下。。。

我都是默认选项的。

kundi 发表于 2021-2-16 13:51:36

本帖最后由 kundi 于 2021-2-16 13:59 编辑

接45#:
STM32F103 在72MHZ时用时4.125us,增加了48MHZ,也只比24MHZ(7.50us)提升了0.45倍。比例为0.45/48=0.009375
而STC16在32MHZ时,用时5.00us,只提高了8MHZ,就能够比24MHZ时的7.25us提升0.31倍比例为:0.31/8=0.03875
可见,后者增加工作频率提升的效率,明显比前者高,只要STC16后续版本提升到72MHZ,M3内核就被远远甩在后面。从这里也就可以看出,M3内核存在着鸡肋,ARM的M4内核也解决了这个问题。

mmswza 发表于 2021-2-18 13:19:14

想看看同主频比较 M4F。

XIVN1987 发表于 2021-2-18 13:42:33


我觉得这种比较除了打口水仗一点儿意义都没有,,
因为完全就是个黑箱,,除了结果什么也不知道,,结论自然难以服众

不如将STM32F103和STC16做相同运算的代码(如浮点加法)编译出汇编指令,,然后分别数一下各需要几条指令、需要消耗几个时钟周期,,这样的比较更容易量化

redroof 发表于 2021-2-18 16:51:32

XIVN1987 发表于 2021-2-18 13:42
我觉得这种比较除了打口水仗一点儿意义都没有,,
因为完全就是个黑箱,,除了结果什么也不知道,,结论自 ...

数指令没用。在flash分频比不同的情况下,同样的指令需要的时钟数是不同的,还有flash加速器之类的,没法数时钟。
最简单有效的方法恰好是楼主的这种,拿示波器直接看执行时间。

XIVN1987 发表于 2021-2-18 17:57:32

redroof 发表于 2021-2-18 16:51
数指令没用。在flash分频比不同的情况下,同样的指令需要的时钟数是不同的,还有flash加速器之类的,没法 ...


你是说Flash工作时钟一般不能超过30MHz,导致CPU从Flash取指需要插入等待周期这个问题吧

单片机厂商肯定也考虑到了这个问题,会采取各种技术减少CPU的等待时间,,比如STM32F103的Flash是64位的,并且带有一个2 x 64-bit的预取buffer,,这样虽然CPU跑72MHz时Flash读取需要插入2个等待周期,,但考虑到Flash一次能读64位、有些指令是16位的、有些指令是多周期的这些因素,,在程序顺序执行的时候CPU实际很少需要等待指令读取,,只有发生跳转时才需要较多周期的等待


我之所以说看指令,还有另一层意思:不同浮点库实现的精度是不同的,,通过降低精度的要求,可以提高浮点运算的速度

比如树莓派出的RP2040手册中提到,它的ROM中内嵌了一个优化的快速单精度浮点库,,同样是Cortex-M0内核,它为什能就能执行快速浮点运算呢??


所以,如果你对速度要求较高、不介意一定的精度损失,,可以使用优化过的浮点库替换Keil中的标准浮点库

redroof 发表于 2021-2-18 18:27:54

XIVN1987 发表于 2021-2-18 17:57
你是说Flash工作时钟一般不能超过30MHz,导致CPU从Flash取指需要插入等待周期这个问题吧

单片机厂商肯 ...

我说的是,因为有这些机制,你简单的数指令数然后查手册看每条指令几个时钟,这样根本没法计算时间。
就算你能加上每个指令取指的等待周期,还是不够。
因为还有你没法数的,比如从flash里面取常量数据,你不运行程序都不可能知道哪个指针指向flash里面,指向flash里面了再考虑它在不在flash加速器的缓存。。。。
所以老老实实用示波器测吧

XIVN1987 发表于 2021-2-18 18:54:00

redroof 发表于 2021-2-18 18:27
我说的是,因为有这些机制,你简单的数指令数然后查手册看每条指令几个时钟,这样根本没法计算时间。
就 ...

我的意思是,虽然实际运行周期数会比理想理论值大,但相差不大,不影响比较

redworlf007 发表于 2021-2-18 19:45:18

redroof 发表于 2021-2-18 18:27
我说的是,因为有这些机制,你简单的数指令数然后查手册看每条指令几个时钟,这样根本没法计算时间。
就 ...

大神,抓到你了,有空看看站内消息,请教了个问题,谢谢。

su33691 发表于 2021-2-18 21:02:00

这种比较,没意义。
选择何种芯片,1是看项目需求,2是看码农的个人喜好。额,最关键还是能否买到货。

我最常用的mcu是STC8H,ARM的m0,m4核芯片。m3的xx103,用的最少。就不和你们抢货源了。

tuy0326 发表于 2021-2-18 21:37:09

其实吧,我只要是看数据手册的时候,突然一个大卖场云爆炸图片,里面一行小字:STCxxxx批量不超过2.xxxx,直接辣的眼泪流下来了

还有,看着看着,intel是祖父,我擦,开发个产品我还变孙子了

heky_007 发表于 2021-2-19 11:33:39

没有DMA功能,白送都用不上

kundi 发表于 2021-2-19 13:44:31

heky_007 发表于 2021-2-19 11:33
没有DMA功能,白送都用不上

目前送样的,DMA只在浮点运算器和硬件乘除法器用到,其他外设的DMA本次还没有。

PPS 发表于 2021-2-19 14:32:23

楼主能否测试一下coremark?不需要到官方下载源代码,stm32有测试工程,里面有源代码。

zsfddd 发表于 2021-3-11 18:57:07

赞楼主的认真精神!

小李非刀 发表于 2021-3-12 16:55:56

我也测试了STC16F的计算速度,项目经常要用到快速计算的时候:
1、对信号进行FFT信号,比如做一个音频的频谱显示,或者对市电进行谐波分析。
2、高阶数字滤波,比如我常用8阶的数字滤波。
3、飞控处理,计算很多。
4、对交流电采样计算电压、电流有效值,有功功率,无功功率,功率因数等等。

STC16F目前样片只能跑30MHz,同频下有符号32位整数运算接近M0 M3(注意M0没有除法指令,会巨慢,不做比较),浮点运算则远超M0 M3(因为没有硬件浮点库)。

比如ADC做32K采样,做256点FFT运算,再将结果送OLED128X64 SPI显示128x64频谱,STCF16是实时的(即每次计算周期是8ms,包括采样、计算、显示,有符号整数计算)。以前我只有用ARM才能实现,FFT的蝶形运算太耗时了。

shooly 发表于 2021-3-12 17:02:02

STC16F现在能买到样品吗?
页: [1]
查看完整版本: STC16与STM32F1的浮点运算速度比较的实验