再说单片机

打印 被阅读次数

作者:张巧龙
链接:https://www.zhihu.com/question/309859928/answer/1289819616
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

单片机现在可谓是铺天盖地,种类繁多,各个厂商们也在速度、内存、功能上各有特点,本文对51、MSP430、TMS、STM32、PIC、AVR、STC单片机之间的性能特点进行简单比较。

一、51单片机

应用最广泛的8位单片机当然也是初学者们最容易上手学习的单片机,最早由Intel推出,由于其典型的结构和完善的总线专用寄存器的集中管理,众多的逻辑位操作功能及面向控制的丰富的指令系统,堪称为一代“经典”,为以后的其它单片机的发展奠定了基础。

51单片机之所以成为经典,成为易上手的单片机主要有以下特点:

特性:


1、从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,处理对象不是字或字节而是位。不但能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。
2、同时在片内RAM区间还特别开辟了一个双重功能的地址区间,使用极为灵活,这一功能无疑给使用者提供了极大的方便。
3、乘法和除法指令,这给编程也带来了便利。很多的八位单片机都不具备乘法功能,作乘法时还得编上一段子程序调用,十分不便。

缺点
(虽然是经典但是缺点还是很明显的)
1、AD、EEPROM等功能需要靠扩展,增加了硬件和软件负担
2、虽然I/O脚使用简单,但高电平时无输出能力,这也是51系列单片机的最大软肋
3、运行速度过慢,特别是双数据指针,如能改进能给编程带来很大的便利
4、51单片机保护能力很差,很容易烧坏芯片

应用范围:目前在教学场合和对性能要求不高的场合大量被采用。

使用最多的器件:8051、80C51

二、MSP430单片机

MSP430系列单片机是德州仪器1996年开始推向市场的一种16位超低功耗的混合信号处理器,给人们留下的最大的亮点是低功耗而且速度快,汇编语言用起来很灵活,寻址方式很多,指令很少,容易上手。主要是由于其针对实际应用需求,把许多模拟电路、数字电路和微处理器集成在一个芯片上,以提供“单片”解决方案。其迅速发展和应用范围的不断扩大,主要取决于以下的特点:

特性
1、强大的处理能力,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7 种源操作数寻址、4种目的操作数寻址)、简洁的27条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令;有较高的处理速度,在8MHz晶体驱动下指令周期为125ns。这些特点保证了可编制出高效率的源程序。
2、在运算速度方面,能在8MHz晶体的驱动下,实现125ns的指令周期。16位的数据宽度、125ns的指令周期以及多功能的硬件乘法器(能实现乘加)相配合,能实现数字信号处理的某些算法(如FFT等)。
3、超低功耗方面,MSP430单片机之所以有超低的功耗,是因为其在降低芯片的电源电压及灵活而可控的运行时钟方面都有其独到之处。电源电压采用的是1.8-3.6V电压。因而可使其在 1MHz 的时钟条件下运行时,芯片的电流会在200-400uA左右,时钟关断模式的最低功耗只有 0.1uA。

缺点
1、个人感觉不容易上手,不适合初学者入门,资料也比较少,只能跑官网去找。
2、占的指令空间较大,因为是16位单片机,程序以字为单位,有的指令竟然占6个字节。虽然程序表面上简洁,但与PIC单片机比较空间占用很大。

应用范围:在低功耗及超低功耗的工业场合应用的比较多。

使用最多的器件:MSP430F系列、MSP430G2系列、MSP430L09系列

TMS单片机

这里也提一下TMS系列单片机,虽不算主流。由TI推出的8位CMOS单片机,具有多种存储模式、多种外围接口模式,适用于复杂的实时控制场合。虽然没STM32那么优秀,也没MSP430那么张扬,但是TMS370C系列单片机提供了通过整合先进的外围功能模块及各种芯片的内存配置,具有高性价比 的实时系统控制。同时采用高性能硅栅CMOS EPROM和EEPROM技术实现。低工作功耗CMOS技术,宽工作温度范围,噪声抑制,再加上高性能和丰富的片上外设功能,使TMS370C系列单片机 在汽车电子,工业电机控制,电脑,通信和消费类具有一定的应用。

三、STM32单片机

由ST厂商推出的STM32系列单片机,行业的朋友都知道,这是一款性价比超高的系列单片机,应该没有之一,功能及其强大。其基于专为要求高性能、 低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核,同时具有一流的外设:1μs的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI等等,在功耗和集成度方面也有不俗的表现,当然和MSP430的功耗比起来是稍微逊色的一些,但这并不影响工程师们对它的热捧程度,由于其简单的结构和易用的工具再配合其强大的功能在行业中赫赫有名。其强大的功能主要表现在:

特性
1、内核:ARM32位Cortex-M3CPU,最高工作频率72MHz,1.25DMIPS/MHz,单周期乘法和硬件除法。
2、存储器:片上集成32-512KB的Flash存储器。6-64KB的SRAM存储器。
3、时钟、复位和电源管理:2.0-3.6V的电源供电和I/O接口的驱动电压。POR、PDR和可编程的电压探测器(PVD)。4-16MHz的晶振。内嵌出厂前调校的8MHz RC振荡电路。内部40 kHz的RC振荡电路。用于CPU时钟的PLL。带校准用于RTC的32kHz的晶振。
4、调试模式:串行调试(SWD)和JTAG接口。最多高达112个的快速I/O端口、最多多达11个定时器、最多多达13个通信接口。

使用最多的器件:STM32F103系列、STM32 L1系列、STM32W系列。

四、PIC单片机

PIC单片机系列是美国微芯公司(Microship)的产品,共分三个级别,即基本级、中级、高级,是当前市场份额增长最快的单片机之一,CPU采用RISC结构,分别有33、35、58条指令,属精简指令集,同时采用Harvard双总线结构,运行速度快,它能使程序存储器的访问和数据存储器的访问并行处理,这种指令流水线结构,在一个周期内完成两部分工作,一是执行指令,二是从程序存储器取出下一条指令,这样总的看来每条指令只需一个周期,这也是高效率运行的原因之一,此外PIC单片机之所以成为一时非常热的单片机不外乎以下特点:

特点
1、具有低工作电压、低功耗、驱动能力强等特点。PIC系列单片机的I/O口是双向的,其输出电路为CMOS互补推挽输出电路。I/O脚增加了用于设置输入或输出状态的方向寄存器,从而解决了51系列I/O脚为高电平时同为输入和输出的状态。
2、当置位1时为输入状态,且不管该脚呈高电平或低电平,对外均呈高阻状态;置位0时为输出状态,不管该脚为何种电平,均呈低阻状态,有相当的驱动能力,低电平吸入电流达25mA,高电平输出电流可达20mA。相对于51系列而言,这是一个很大的优点
3、它可以直接驱动数码管显示且外电路简单。它的A/D为10位,能满足精度要求。具有在线调试及编程(ISP)功能。

不足之处
其专用寄存器(SFR)并不像51系列那样都集中在一个固定的地址区间内(80-FFH),而是分散在四个地址区间内。只有5个专用寄存器PCL、STATUS、FSR、PCLATH、INTCON在4个存储体内同时出现,但是在编程过程中,少不了要与专用寄存器打交道,得反复地选择对应的存储体,也即对状态寄存器STATUS的第6位(RP1)和第5位(RP0)置位或清零。数据的传送和逻辑运算基本上都得通过工作寄存器W(相当于51系列的累加 器A)来进行,而51系列的还可以通过寄存器相互之间直接传送,因而PIC单片机的瓶颈现象比51系列还要严重,这在编程中的朋友应该深有体会。

使用最多的器件:PIC16F873、PIC16F877

五、AVR单片机

AVR单片机是Atmel公司推出的较为新颖的单片机,其显著的特点为高性能、高速度、低功耗。它取消机器周期,以时钟周期为指令周期,实行流水作 业。AVR单片机指令以字为单位,且大部分指令都为单周期指令。而单周期既可执行本指令功能,同时完成下一条指令的读取。通常时钟频率用4~8MHz,故最短指令执行时间为250~125ns。AVR单片机能成为最近仍是比较火热的单片机,主要的特点:

特点
1、AVR系列没有类似累加器A的结构,它主要是通过R16~R31寄存器来实现A的功能。在AVR中,没有像51系列的数据指针DPTR,而是由 X(由R26、R27组成)、Y(由R28、R29组成)、Z(由R30、R31组成)三个16位的寄存器来完成数据指针的功能(相当于有三组 DPTR),而且还能作后增量或先减量等的运行,而在51系列中,所有的逻辑运算都必须在A中进行;而AVR却可以在任两个寄存器之间进行,省去了在A中的来回折腾,这些都比51系列出色些。
2、AVR的专用寄存器集中在00~3F地址区间,无需像PIC那样得先进行选存储体的过程,使用起来比PIC方便。AVR的片内RAM的地址区间 为0~00DF(AT90S2313) 和0060~025F(AT90S8515、AT90S8535),它们占用的是数据空间的地址,这些片内RAM仅仅是用来存储数据的,通常不具备通用寄存器的功能。当程序复杂时,通用寄存器R0~R31就显得不够用;而51系列的通用寄存器多达128个(为AVR的4倍),编程时就不会有这种感觉。
3、AVR的I/O脚类似PIC,它也有用来控制输入或输出的方向寄存器,在输出状态下,高电平输出的电流在10mA左右,低电平吸入电流20mA。这点虽不如PIC,但比51系列还是要优秀。

缺点
1、是没有位操作,都是以字节形式来控制和判断相关寄存器位的。
2、C语言与51的C语言在写法上存在很大的差异,这让从开始学习51单片机的朋友很不习惯。
3、通用寄存器一共32个(R0~R31),前16个寄存器(R0~R15)都不能直接与立即数打交道,因而通用性有所下降。而在51系列中,它所有的通用寄存器(地址007FH)均可以直接与立即数打交道,显然要优于前者。

使用最多的器件:ATUC64L3U、ATxmega64A1U、AT90S8515

六、STC单片机

说到STC单片机有人会说到,STC也能算主流,我们基于它是国内还算是比较不错的单片机来说。STC单片机是宏晶生产的单时钟/机器周期的单片机,说白了STC单片机是51与AVR的结合体,有人说AVR是51的替代单片机,但是AVR单片机在位控制和C语言写法上存在很大的差 异。而STC单片机洽洽结合了51和AVR的优点,虽然功能不及AVR那么强大,但是在AVR能找到的功能,在STC上基本都有,同时STC单片机是51内核,这给以51单片机为基础的工程师们提供了极大的方便,省去了学习AVR的时间,同时也不失AVR的各种功能。

STC单片机是高速、低功耗、超强抗干扰的新一代8051单片机51单片机,指令代码完全兼容传统8051,但速度快8-12倍,内部集成 MAX810专用复位电路。4路PWM 8路高速10位A、D转换,针对电机电机的供应商控制,强干扰场合,成为继51单片机后一个全新系列单片机。

特性
1、下载烧录程序用串口方便好用,容易上手,拥有大量的学习资料及视频,最著名的要属于昌晖仪表网的那个视频了,好多对单片机有兴趣的朋友都是通过这个视频入门的,同时具有宽电压:5.5~3.8V,2.4~3.8V, 低功耗设计:空闲模式,掉电模式(可由外部中断唤醒)。
2.STC单片机具有在应用编程,调试起来比较方便;带有10位AD、内部EEPROM、可在1T/机器周期下工作,速度是传统51单片机的8~12倍,价格也较便宜。
3、4通道捕获/比较单元,STC12C2052AD系列为2通道,也可用来再实现4个定时器或4个外部中断,2个硬件16位定时器,兼容普通8051的定时器。4路PCA还可再实现4个定时器,具有硬件看门狗、高速SPI通信端口、全双工异步串行口,兼容普通8051的串口,同时还具有先进的指令集结构,兼容普通8051指令集。

缺点
STC单片机功能虽不及AVR、STM32强大,价格也不及51和ST32便宜,但是这些并并不重要,重要的是这属于国产单片机比较出色的单片机,但愿国产单片机能一路长虹。

使用最多的器件:STC12C2052AD

七、Freescale单片机

主要针对S08,S12这类单片机,当然Freescale单片机远非于此。Freescale系列单片机采用哈佛结构和流水线指令结构,在许多领域内都表现出低成本,高性能的的特点,它的体系结构为产品的开发节省了大量时间。此外Freescale提供了多种集成模块和总线接口,可以在不同的系统中更灵活的发挥作用!

特点
1、全系列:从低端到高端,从8位到32位全系列应有尽有,其推出的8位/32位管脚兼容的QE128,可以从8位直接移植到32位,弥补单片机业界8/32位兼容架构中缺失的一环。
2、多种系统时钟模块:三种模块,七种工作模式。多种时钟源输入选项,不同的mcu具有不同的时钟产生机制,可以是RC振荡器,外部时钟或晶振,也可以是内部时钟,多数CPU同时具有上述三种模块!可以运行在FEI、FEE、FBI、FBILP、FBE、FBELP、STOP这七种工作模式。
3、多种通讯模块接口:Freescale单片机几乎在内部集成各种通信接口模块:包括串行通信接口模块SCI、多主I2C总线模块、串行外围接口模块 SPI、MSCAN08控制器模块、通用串行总线模块(USB/PS2)。
4、具有更多的可选模块:具有LCD驱动模块,带有温度传感器,具有超高频发送模块,含有同步处理器模块,含有同步处理器的MCU还具有屏幕显示模块OSD,还有少数的MCU具有响铃检测模块RING和双音多频/音调发生器DMG模块。
5、可靠性高,抗干扰性强,多种引脚数和封装选择。
6、低功耗、也许Freescale系列的单片机的功耗没有MSP430的低,但是他具有全静态的“等待”和“停止”两种模式,从总体上降低您的功耗!新近推出的几款超低功耗已经与MSP430的不相上下!

使用最多的器件:MC9S12G系列

如果真要在这些单片机中分个一二三等,那么如果你想跟随大众,无可厚非51单片机还是首选;如果你追求超高性价比,STM32将是你理想选择;如果你渴望超低功耗,MSP430肯定不会让你失望;如果你想支持国产,STC会让你兴奋。

来源:电子工程世界

很多年前,刚开始搞Arduino的时候,买了几个AVR的芯片。就有老司机提醒我,搞STM32。当时单片机还没入门,只觉得Arduino比较简单,STM32好像很复杂,遂没在意。

弄了这2年后,终于懂了点门道,发现硬件这行,价格很重要。8K的ATTiny芯片在淘宝上卖到5,6块。而同样大小的STM8最便宜只卖1块。更不用说STM32能到48M的频率,做Nes模拟器都可以了。

STM的库封装的比较全面,而AVR大部分情况下还得弄寄存器,没有Arduino我靠自己折腾完全没法入门。

买了一个STLink,几个STM8S103,STM32F103,感觉能代替那几个Tiny了

作者:沧海一声笑的DIY宇宙

1,AVR涨价.2,AVR/STM32缺货.3,STM8和AVR性能对比.
其实,识别下来,就是STM和AVR的对抗.
低端: 

AVR    PK  STM8.
高端:STM32  PK  AVR32
低端市场,我用过AVR,没用过STM8.AVR是很成功的一款芯片,功耗低,性能强.较之前的51,性能提升了好几个档次.如果一个初学者,学完了51,在学AVR,肯定就会对AVR爱不释手.我也是这么过来的,AVR对当时的我来说可谓是要啥有啥.所以从大二开始,一直用到毕业.PIC据说也不错,但是很遗憾,我们学校,没看到几个搞PIC的,因为这个东西价格太高了,对我们学生来说,基本上不考虑.当然,有钱人例外.其次,AVR的下载也是很方便的.和51的可以通用.这其中双龙电子对avr的支持,至少在国内来说,爱特梅尔是要感谢他们的.至于STM8,我没有详细了解,我估计他存在的目的,就是要把8位市场给占领了.他最大的对手,估计就是AVR和51了.目前AVR的局势,岌岌可危,如果真要涨价,很可能就快要退出历史舞台了.STM8目前最低端的是STM8S103F2  最少引脚数是20脚的,淘宝最低售价是3.5元,AVR同样配置(仅仅指SRAM和FLASH)的芯片,价格在3块左右.基本不分上下.其他功能方面也很相似.STM8最高端的,STM8S208MB,淘宝价格在15元左右,而同样配置的avr芯片只有MEGA128了,还少了2k的ram和CAN控制器,不过多了总线控制器.但是MEGA128的价格,在30块钱左右,毫无竞争力了,这就.这样的价格,STM32F103都能买到很好的芯片了.15块钱左右,基本只够买个MEGE32,而mega32和STM8S208MB相比,显然差距很明显.所以果真AVR要涨价,我建议,没学AVR的就可以跳过avr了,学过的,就赶紧选择新的MCU.不过STM8的下载,好像不如AVR那么方便,这方面,我没有了解过,STM8,打造最便宜的下载器,不知道要多少钱?还请用过的朋友回答一下.

高端市场,ST最近几年,对STM32的推广,可谓是不遗余力.效果也是很显著的.我是阴错阳差,在08年开始学STM32,而且STM32的价格,现在也很便宜,当时,STM32F103RBT6也就30块钱,外设功能是很强悍了,128Kfalsh,20K  sram,USB,12位ADC,SPI,IIC,TIMER,USART,RTC等,基本上,你能想到的,它都有了.显然,次时的MEGA128已经毫无竞争力了.现在STM32低配置的芯片,STM32F101C4,16K  FLASH,4K  SRAM,价格在10块钱左右.F103较低配置的STM32F103C8,也卖到了13块钱一个,64K  FLASH,20K  SRAM,带USB和CAN.单从这2个数据,就能说明很多问题了.LM3S,应该是和STM32一同推上市场的,至少不会比STM32晚,据说当时敢尝CM3螃蟹的就流名和ST.周立功还选择了推流明,后面也不知道什么原因,一直没见流明起来,可能周立功和流明,都有错吧(脑子被驴踢了可能).却见STM32是打得红红火火.如今流明(被TI收购了)已经没办法和STM32竞争了.估计老周也很郁闷吧,当时怎么就没推STM32呢?呵呵.  继续说STM32,STM32现在推出的型号,从最低的10块钱的,到最高端的STM32F103ZET6,价格也不过40元不到.其中包括的型号,有50种之多.用户可以随便选择满足自己需求的产品.高端方面,STM32还推了F105/F107系列.强化了USB和网络的功能.这方面AVR32,从淘宝上看到的最低价格是30元左右,具体配置没去看了.AVR32同STM32最大的缺点就是下载程序不方便,人家得专门为你做个下载器,或者从你那里买,我们论坛上好像也有人搞了下载器出来,还真佩服这些哥们,挺厉害的.不过STM32呢?支持JTAG,支持串口下载.  这就把学习STM32的门槛一下降低了,加上KEIL对STM32的支持,比学习AVR的门槛还低了.这就很快的培养了大批使用者.其次,STM32的中文支持,做的也很到位,中文数据手册,CM3权威指南,也都有中文版本的,给用户提供了很大的便利.反观其他,LPC和爱特梅尔由于之前不敢吃螃蟹,到现在他们的CM3构架芯片,还没见到,LM3S虽然和ST一起吃了螃蟹,不过没搞好,算是玩完了.所以,现在就剩下ST独领风骚了.

总结STM32的成功经验:
1,芯片价格低(最低10块)
2,下载方便(串口下载,无需用户增加任何成本)
4  编译器支持(KEIL和IAR)
5,资源丰富(无论是FLASH,还是SRAM,还是外设,都做的很不错,当然还少了EEPROM,有点遗憾,但无伤大雅)
6,学习方便(有专门的库支持,有很多范例代码,有中文数据手册,有中文的权威指南)
7,后续升级有望(F101->F103->F105->F107->CM4...)

因为有以上7个原因,导致了STM32在最近2年迅速崛起,已近到了可以吃掉AVR  的地步了.AVR依我看来,只在价格低于10块钱的时候,才和STM32有竞争力,低端由于STM8的存在,对AVR也构成了一定威胁,但是由于STM8的支持,不如STM32好,比如下载不方便,编译器不好搞等因素.所以暂时还没能和AVR拼,但是一旦AVR要涨价,就是逼着我们用户去学STM8了,到时候,AVR就在这块市场也要输掉了.

ARM7和STM32我选择了STM32,说不出为什么,也许那一年我的LPC2134能下载成功,我现在用的就是LPC的ARM7.不过幸好那个时候我没有下载成功,才使我认识了STM32.
最后,一个价格低,入门低,功能强的芯片,是没道理不火起来的.

链接:https://www.jianshu.com/p/f2e6b1dcbaed

AVR由于没有除法指令,使得一个INT-》BCD需要近千个时钟,而STM8中不足百个(好像16/8bit指令16指令周),常用指令也在1指令周期完成,STM8的中断最少为9进9出,AVR 4进2出,相比STM8实时性要打折扣。

STM8性价比还是很高的,而且JTAG也不错。仿真调试下载都很方便。
不像AVR那个 令人恼火的 锁死问题。

 

登录后才可评论.