我为什么不用STC单片机
写在2019.10.27
这属于自己打自己脸,不过,我突然想试试 STC15W108.
理由可能有点操蛋,因为STM8S没有 DFN8这样 3×3的封装,而PIC的仿真器太贵。
我最后感兴趣的一个STC型号是 STC15F的8脚系列,那是在2010年,然而也正是这次感兴趣,让我最后完全丧失了对STC单片机的兴趣。
当然,倒不是出于别的忌讳,我单纯是觉得,不应该嚼舌头,即使对于一个品牌也应该尽量少。所以一直以来,我都是说——
我,是不用STC单片机的,对这款单片机我也不予置评。
不过,我最近忽然想说一说。
我为什么不用呢?
说起来,原因倒不是因为我觉得它的PDF奇葩冠绝全球datasheet。
我从来没见过一款芯片的手册可以用来打广告打地这么赤裸裸并且无耻的,真的,前无古人后无来者。
但其实对这种事情,我会吐槽,会嘲笑,却仍然不至于沦落到不用的地步。
真正让我下决心不用的有两件事。
第一件事:它的时序和执行周期混乱不统一,而且,混乱也就罢了,IO口的输出时序也乱七八糟。
大家都知道传统8051——代表机型:ATMEL的AT89S系列。
它的各种指令的执行周期都是严格按照标准51时序的,标准到和教科书上教的一模一样,尽管吧,51的指令周期有点长,并且是12个机器周期,一直被吐槽慢。
但慢归慢,标准化一就是好。
事实上,我对AT89S的印象之所以如此好,正由于当时,我用一个逻辑分析仪抓过IO口时序。
那是我用汇编指令写的IO口翻转程序。
我在逻辑分析仪里看到的波形是完完全全,百分之一百按照我的代码走的,简直堪称完美
——这个实验结果,让我对AT89S的信任无与伦比,同时也让我相信这个逻辑分析仪是靠得住的。
然而当我用STC的单片机去写的时候——当时我用的型号应该是 什么A06S之类的。
我知道STC的执行周期和AT不一样,我也知道它每一款都可能有所不同。
所以我专门针对A06S的datasheet编写同样的汇编程序,为了避免出错,我把IO的翻转频率控制到和刚刚测试AT的时候一样低。
然而,我看到的波形却是混乱不堪,完全对不上。
甚至,同一个执行,前后都不一样。
我当时的第一反应是,也许指令本身没问题,但是IO口的速度有问题,所以在逻辑分析仪下,看到的就乱套了。
这个小实验,让我对STC的电气性能一点信心都没有。
但让我真正完全放弃的,是2010年春节,我当时对8脚的STC15F很感兴趣,因为当时我看到PIC有6脚,有8脚的uC。
于是我开始找这款片子。
当时我在网上看到,这款片子分A B系列,所谓A B系列不过是出货时间有前后的两批货。
网上流传,A这批货有不少问题。STC真的经常出一些很脑残的问题,什么某个寄存器的设置对不上(比如很直观的,通常分频设置,01如果是2分频,02当然就是4分频,03是8分频,然而它的顺序乱了,也许06才是8分频,04却是2分频)
于是我满心等待B这个批次出来。
网上姚老板信誓旦旦说,等次年(2011年)3月就能供货了。
实际上,到那年的四五月份我都没看到。
到了后来我忘了是什么时候,才看到这批货。
所以我当时对STC彻底没了兴趣——因为它的供货很不靠谱。
姚老板本人的言行和PDF一个德行——事实上,听说这人就经常跟洗脑的邪教教主一样的鼓吹自己的产品。
但是,我也没想到,不管如何,这个片子凭着极高的性价比依然十分流行。
今天我在公司调一个供应商给我的摄像头,结果他们似乎要更新固件——也不全怪他们,他们以前给我们供过针对我们自有协议的产品。
但现在似乎这个协议出了些问题,所以他们决定,回归到他们的公版协议,这一块我也不介意。
然后我才发现他们用的芯片居然是STC。
尽管后来事情搞定了,但我心里还是有疙瘩——居然用STC!
转载自:https://zhuanlan.zhihu.com/p/61925947