個人資料
歸檔
正文

再說單片機

(2021-01-07 11:12:25) 下一個

作者:張巧龍
鏈接: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那個 令人惱火的 鎖死問題。

 

[ 打印 ]
閱讀 ()評論 (0)
評論
目前還沒有任何評論
登錄後才可評論.