打印

35MHZ的STC32G跑不过45MHZ的STC8H吗?有图

[复制链接]
3825|35
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tzgok|  楼主 | 2022-3-25 18:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
沙发
tzgok|  楼主 | 2022-3-25 18:35 | 只看该作者
@**NT018

使用特权

评论回复
板凳
autopccopy| | 2022-3-25 18:51 | 只看该作者
不应该。有否些wtst=0; 上程序。 新手需要注意的。

使用特权

评论回复
地板
autopccopy| | 2022-3-25 18:52 | 只看该作者
难道是惊天重大bug?

使用特权

评论回复
5
sfc886| | 2022-3-25 18:53 | 只看该作者
STC32G初始化时需要把WTST设置为0,否则执行指令会产生7个等待时间,从而导致速度变慢。STC官网的32G实验箱演示程序里面主函数第一条指令基本上都是WTST=0;我在网上看到也有人做了同样的测试,有兴趣了解一下。
https://zhuanlan.zhihu.com/p/480871422

使用特权

评论回复
6
tzgok|  楼主 | 2022-3-25 18:54 | 只看该作者
本帖最后由 tzgok 于 2022-3-25 18:58 编辑
autopccopy 发表于 2022-3-25 18:51
不应该。有否些wtst=0; 上程序。 新手需要注意的。

都是STC提供的例子,直接套用,单纯为了测试下速度

v6.png (19.38 KB )

v6.png

使用特权

评论回复
7
tzgok|  楼主 | 2022-3-25 18:55 | 只看该作者
本帖最后由 tzgok 于 2022-3-25 18:58 编辑
sfc886 发表于 2022-3-25 18:53
STC32G初始化时需要把WTST设置为0,否则执行指令会产生7个等待时间,从而导致速度变慢。STC官网的32G实验箱 ...

都是STC的代码

v6.png (19.38 KB )

v6.png

使用特权

评论回复
8
英雄本色2022| | 2022-3-25 19:52 | 只看该作者
8位操作STC32G和STC8指令效率一样,35MHz肯定跑不过45MHz

使用特权

评论回复
9
imdx| | 2022-3-25 20:23 | 只看该作者
STC32G的性能提升主要得益于内存架构的优化。

使用特权

评论回复
10
elife| | 2022-3-25 21:56 | 只看该作者
看看汇编后代码区别,感觉应该提高在32位运算速度上,基本的延时看不出来,可以测试一下。

使用特权

评论回复
11
lvyunhua| | 2022-3-25 21:59 | 只看该作者
路过学习了

使用特权

评论回复
12
567| | 2022-3-26 00:22 | 只看该作者
选择恰当的存储器模式也很重要,不同模式性能差别很大。

使用特权

评论回复
13
coody| | 2022-3-26 00:33 | 只看该作者
本帖最后由 coody 于 2022-3-31 11:08 编辑

同频下,仅仅运行简单的for循环或whie循环的软件延时,指令差不多,所以速度没有太大差别。
但是一旦执行数**算,差别就很大了。

#define MAIN_Fosc   30000000L   //定义主时钟

u32        dat[]={123456UL, 34567, 3456789012UL, 543210UL,0};
u32 a,c,d;

/**********************************************/
void main(void)
{
    u16  i;

    WTST = 0;  //STC32G要执行这句, STC8H不要。

    P1M1 = 0;
    P1M0 = 0;

    while (1)
   {
      for(i=0; i<10000; i++)
      {
      //   NOP(10);     //STC32G 5ms, STC8H 5.7ms
      //   a = dat[0];
      //   c = dat[1];
      //   d = a * c;   //STC32G 无MDU32  8ms, 有MDU32 6.65ms, STC8H 34.5ms

           a = dat[2];
           c = dat[3];
           d = a / c;   //STC32G 无MDU32 78ms, 有MDU32 12.0ms, STC8H 181ms
      }
      P10 = ~P10;     //指示时间
      }
}

STC32G的计算速度,是8位机无法企及的。

使用特权

评论回复
14
tzgok|  楼主 | 2022-3-26 09:02 | 只看该作者
elife 发表于 2022-3-25 21:56
看看汇编后代码区别,感觉应该提高在32位运算速度上,基本的延时看不出来,可以测试一下。 ...

确实是这样,同样的LCD刷屏测试,,35MHZ的STC32G也比45MHZ的STC8H慢,大约慢28%,和频率差距一致。也就是说,大量用到SHORT,LONG,FLOAT等的应用,STC32G才有运行优势,,,

    while(1)
    {
        LED=~LED;  
        TFT_ShowString(1,1,(unsigned char*)"1234567812345678");
        TFT_ShowString(2,1,(unsigned char*)"1234567812345678");
        TFT_ShowString(3,1,(unsigned char*)"1234567812345678");
        TFT_ShowString(4,1,(unsigned char*)"1234567812345678");
        TFT_ShowString(5,1,(unsigned char*)"1234567812345678");
        TFT_ShowString(6,1,(unsigned char*)"1234567812345678");
        TFT_ShowString(7,1,(unsigned char*)"1234567812345678");
        TFT_ShowString(8,1,(unsigned char*)"1234567812345678");
        
    }

使用特权

评论回复
15
STCMCUNT018| | 2022-3-26 09:38 | 只看该作者
用 STC32G12K128 的 DMA 支持的 TFT彩屏接口,  专业的事让专业的人/专门的外设去做

使用特权

评论回复
16
stb988| | 2022-3-26 09:43 | 只看该作者
第一次开发32位单片机,肯定有这里或那里的问题,

使用特权

评论回复
17
tzgok|  楼主 | 2022-3-26 10:32 | 只看该作者
STCMCUNT018 发表于 2022-3-26 09:38
用 STC32G12K128 的 DMA 支持的 TFT彩屏接口,  专业的事让专业的人/专门的外设去做
...

抓紧出70MHZ的STC32G才是正路。。

使用特权

评论回复
18
ttjlc| | 2022-3-26 10:41 | 只看该作者
STC什么时候自己研发芯片了再说,这么多年了老是满足于做山寨,这样的公司没有未来。

使用特权

评论回复
19
coody| | 2022-3-26 10:42 | 只看该作者
本帖最后由 coody 于 2022-3-26 12:53 编辑

昨晚太晚程序没仔细看反汇编,有点问题,下面是今天严格看过反汇编的:
同频下,仅仅运行简单的for循环或whie循环的软件延时,指令差不多,所以速度没有太大差别。
但是一旦执行数**算,差别就很大了。

#define MAIN_Fosc   30000000L   //定义主时钟

u32        dat[]={123456UL, 34567, 3456789012UL, 543210UL,0};
u32 a,c,d;

/**********************************************/
void main(void)
{
    u16  i;

    WTST = 0;  //STC32G要执行这句, STC8H不要。

    P1M1 = 0;
    P1M0 = 0;

    while (1)
   {
      for(i=0; i<10000; i++)
      {
      //   NOP(10);     //STC32G 5ms, STC8H 5.7ms
      //   a = dat[0];
      //   c = dat[1];
      //   d = a * c;   //STC32G 6.65ms, STC8H 34.5ms

           a = dat[2];
           c = dat[3];
           d = a / c;   //STC32G 12.0ms, STC8H 181ms
      }
      P10 = ~P10;     //指示时间
      }
}

STC32G的计算速度,是8位机无法企及的。特别是乘法,32*32时间很短只有3个时钟周期,其余的的时间都是在搬移数据了。


使用特权

评论回复
20
tzgok|  楼主 | 2022-3-26 11:12 | 只看该作者
coody 发表于 2022-3-26 10:42
同频下,仅仅运行简单的for循环或whie循环的软件延时,指令差不多,所以速度没有太大差别。
但是一旦执行数 ...

我的打算是:把STC8H的代码移植到STC32G上,实现速度提升。。。目前看来是不可能,因为我的应用主要是时序控制为主,算法为辅。。。如果大量用到INT和LONG的乘除运算,那么STC32G肯定达到不错的速度。

使用特权

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

本版积分规则

63

主题

231

帖子

2

粉丝