STC16是开发者的噩梦?

STC16F单片机是STC新推出的一款16位单片机 , 功能强大 , 有40K内存、128KFlash,内置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 。

STC16是开发者的噩梦?
文章图片
不过 , 近期 , 一位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 , 这个太遗憾 , 说难听点 , 这个运行速度就是——鸡肋 。

STC16是开发者的噩梦?
文章图片
用户autopccopy认为 , STC16就是增强INTELC251内核 , 当然使用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倒闭也将开始倒计时 。 ”

STC16是开发者的噩梦?
文章图片
用户coody表示 , 这几天测试了STC16F的样片 , 使用KEILC251的编译器 , 主要是测试其扩展的硬件整数运算单元、硬件单精度浮点单元 , 单精度浮点运算速度比不带硬件浮点的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这样说 。