Hi!请登陆

STC16是开发者的噩梦?

2021-2-4 32 2/4

STC16F单片机是STC新推出的一款16位单片机,功能强大,有40K内存、128K Flash,内置USB/PWM/ADC/SPI/IIC/CAN/LIN等外设,可以简单理解为STC8H的高性能版本。

目前,STC16F40K128-LQFP64已经开始送样。STC16的特点是:16位8051,准32位机,多累加器结构,CAN/Lin,16位加减乘除指令,再高配32位乘除单元,单精度浮点运器,计算能力直指M4,力压M3,横推M0。

根据部分宏晶供应商介绍,实际上STC16是个32位的8051,为了编译器,被阉割成16位机,内部32位访问,用户看到的是16位。STC16支持传统8051拥有的所有位,后续版本加强了扩充的位。

供应商表示,STC16是STC8051的自然延伸,管脚兼容,拥有相同时钟频率,是碾压M0的存在。M0是阉割的16位机,还没除,位操作不方便。STC16有指令集16位乘除,再加 32位乘除单元和单精度浮点运算器,ARM的话直接上STC32M4。

不过,近期,一位21ic坛友提出了灵魂拷问,引发了网友的讨论。

用户tzgok表示,在看了几天STC16F的资料,感觉如下这2个主要问题不解决,国内的技术员很难全面使用它。

1、开发环境问题:如果后续得不到KEIL全面的编译和调试支持,开发和使用会很麻烦,至于第三方提供的“图形化编程”,这玩意只适合学生玩玩,套用老姚的话就是,“不要和趋势作对,你要跟着行情走”,目前KEIL就是趋势,而且KEIL这20多年累积的经验,不是任何一个新出的小软件可以替代的,更何况全球无数的技术员在使用它。2、芯片性能问题:STC16F本身定位为16位MCU,但最高工作频率只有33MHZ,这太鸡肋了,如果不能运行到100MHZ以上,那么16位MCU就毫无优势,因为16位的目标应该是:价格和功耗接近8位机,功能和速度接近32位机。现在连STC8H都跑到48MHZ了,更别说100MHZ的C8051F120,而STC16F居然只有33MHZ,这个太遗憾,说难听点,这个运行速度就是——鸡肋。

用户autopccopy认为,STC16 就是增强INTEL C251内核,当然使用 KEIL 四驾马车之一 的C251 完善支持。速度称以后会72M-140M!一步一步来。既有高速度也有开发的便利性,STC16承上启下。打通8-16-32的产品线。

但tzgok认为,目前STC16还有四个痛点:1、目前无法在线仿真。

2、目前的有效FLASH是60K可用,另外60K无法使用。

3、要到后期版本才推出更高频率的版本。

4、目前的EEPROM/IAP也不能用;以后会增加DMA功能。

“STC的51就是搅局儿的,虽然我用了10年STC,但最后还是放弃了,因为曾经给予很多希望,但最后发现这家伙就是个混世魔王,从头到尾不能仿真,我就不了解为啥还有些人在使用,现在我转向了深圳赛元的,能仿真,手册例程非常正规,用得很爽”,用户taobaofarmer无奈说出心声。

他还说:“我在用国产赛元8051,性能很高,文档例程写的很好,有自己的仿真器,仿真很完善,整个产业链都挺完善的,不像STC,官网乱得跟一窝蚂蚁似的,永远不能仿真,市场就是这样,总是用先进的价格低廉的东西淘汰老旧落后的东西,STC估计也蹦跶不了多久了,但因为还是有一批学习能力差的不能升级的用户,等到这批用户再次被淘汰,STC倒闭也将开始倒计时。”

用户coody表示,这几天测试了STC16F的样片,使用KEIL C251的编译器,主要是测试其扩展的硬件整数运算单元、硬件单精度浮点单元,单精度浮点运算速度比不带硬件浮点的M0、M3快得多。整数运算速度速度也很快。

测试了DFT、FFT、Goertzel滤波算法软解DTMF,采样市电交流电压电流计算电压电流有效值、有功功率、功率因数。

其中FFT运算最耗时间,跑30MHz,ADC使用32K采样,256点FFT(8ms),频点分频率125Hz,int整数运算,蝶形计算时间为4.24ms,128频点幅度计算为0.7ms,计算过程中,ADC会持续32K采样。这个速度非常满意,FFT分析是实时连续的。

数字滤波也比较耗时间,我常用8阶IIR数字滤波器,32位有符号整数运算耗时20us,这个非常好,满足40KHz以内的采样速度要求。单精度运算耗时53us,已经满足低速的要求(采样16KHz以下)。

“我觉得 STC 最大的绊脚石,是没有完善的库函数。51芯片寄存器少,做大一点的项目已经有些复杂了,更不用说 STC16、ARM 和 RISC-V 了。如果官方一直不给库函数,那将是开发者的噩梦,将会限制芯片的推广”,用户guysxpf这样说。

你怎么看待STC16以及STC本身?欢迎留言交流。

相关推荐