A. 同一個項目分別用stm32和51單片機會有什麼不同
李工的經驗,有如下幾點不同,希望你供你參考。
1.51是8位單片機,而stm32是32位單片機。時鍾方面stm32運行頻率更高,性能更好。兩種單片機性能差別比較大。
2.片上資源不一樣。簡單講stm32單片機外設豐富,比如串口,I2c等。stm32單片機片上flash和RAM更大。以後升級功能,改進功能的空間大。如果考慮以後功能升級,建議考慮stm32.
3.成本上應該是51單片機要便宜一些。
4.stm32單片機開發資料和參考程序比較多,有庫函數,應用起來方便。51單片機更多直接操作寄存器,開發不方便。
我是北漂李工,一個北漂8年的程序員。
在項目開發過程中,我們經常會遇到需要單片機選型,所以我們常常會根據項目功能需求來選擇合適的單片機品牌和型號。常見的51內核單片機和STM32單片機也會是我們主要考慮的型號。
STM32與51單片機的參數差異 STM32與51單片機軟體開發難度差異STM32使用寄存器比51單片機要多很多,其配置比51復雜,而且中斷邏輯,時鍾配置使能控制等很多概念都是51單片機中所沒有的,再加上stm32很多功能如USB,FSMC。等等功能,其功能更加強大,雖然官方提供了開發固件庫和相關開發輔助工具,但很多時候,遇到bug調試難度也加大了很多。
stm32固件庫很多實用結構體和指針變數,很多在51單片機開發過程不太注重結構體與指針的使用,那麼在STM32開發過程中,就難以理解其固件庫的運用邏輯。
STM32與51單片機的性價比差異STM32比51處理速度快,外設功能豐富強大,所以價格普遍比51單片機偏貴,在項目選型過程中,需要根據項目功能需求,選擇合適的單片機,如果是51單片機能用,那麼考慮項目成本,肯定是不能選擇STM32,如果51單片機不能用,即使再便宜,也用不了。
總之, 作為單片機開發工程師,需要能夠進行一定的器件選型能力,這個也是必備的專業技能。
搞多了開發,你會發現其實用什麼真的不重要,只要你會用就行。單片機好比一個精密機床,你要想加工一件作品,你用任何品牌的機床都可以,關鍵點是這個機床你會不會用,了解通透程度如何。不同品牌機床操作方法肯定大同小異,不會差別很多,你會用一種,另外一種不用看手冊,也能猜出個七八分。機床這樣,編程也是這樣,給你個51,你應該能控制全世界。
首先如果同一個項目可以用51和STM32同時開發,就不建議使用STM32了,51成本更低。
STM32和51單片機不同點有很多:
1.開發方式不同
51單片機一般是直接操作寄存器,STM32主要操作庫函數編程
2.系統資源不同
一般而言STM32資源要比51單片機更多
3.開發環境可能不同
51和STM32一般來講都可以在Keil下開發,但STM32有更多中選擇,可以在Linux下面開發,windows Esplise下開發,甚至直接用VSCode + 插件方式開發。
4.操作系統區別
一般而言,51單片機不支持操作系統,STM32支持各種主流操作系統,STM32開發起來更容易,可以很方便的利用系統實現各種場景下的應用,51單片機由於沒有操作系統,開發起來有一定阻礙,甚至有時候必須要做出部分功能的犧牲才能達到整體功能的和諧運行。
5.後期維護方式可能不同
STM32資源足夠多,可以寫一個bootloader程序來完成之後的系統升級工作,不需要拆機就可以完成固件的升級,而51單片機則不可以。
STM32系列單片機分為CORTEX M0,M1,M4內核,個人覺得STM32F0系列的從性價比,功能上可以完全替代51單片機,而且性能更好。當然也可以使用51,價格更便宜一些,,但是要做功能復雜一些的產品,51系列的單片機是不能滿足的,比如驅動RGB 屏,至少要用STM32F429,支持LTDC介面,而且需要外擴內存,支持FMC介面,比如要做數字音頻,要支持I2S ,比如要做USB傳輸,要支持USB ,要移植操作系統,文件系統等等,要看CPU 的資源等等,總之,要根據所做的項目看CPU的資源是否滿足要求是非常重要的,這要再設計前期靠考慮周到,否則,項目做到一半發現資源不夠,需要重來是很郁悶的事情。
做產品要考慮成本,幾毛錢就能搞定的,沒必要幾塊甚至幾十塊。一般來講,價格越貴的,資源越多,使用起來越簡單,隨心所欲。簡而言之,價格越低,資源越少的單片機,完成項目的難度越大,需要優化代碼和演算法。
在stm32之前是8051的天下,silabs的c8051f外設相當的強大。硬體不錯,可惜代碼不夠多。atmel的代碼比較多,可惜晶元不夠強大。
stm32一出,橫掃天下,要硬體有硬體,要軟體有軟體,價格便宜量又足,連低端產品都用他。
電動自行車控制器都用它,無刷電機都用它。
stm32是史上最廣泛使用的單片機。
只要資源夠用,都可以,20年前我用8051,現在用stm32。stm32方便些,可以在線調試。我現在開發東西復雜一點的,用stm32 1系列和4系列。簡單一點的用stm8s一塊多錢的樣子。
我覺得你的問題對比對象不太對,一般能用51的項目用stm8或者avr即可。一般來說stm32比51強太多了,無論是性能和價格都沒有可比性。
所以在我看來開發上沒有什麼太大不同,無非就是開發環境不一樣,如果代碼規范的話很容易進行互相移植(最近晶元漲價嚴重,我們公司正在換國產),而所謂的外設(uart iic spi等等)其實沒有太大區別。
但是在生產上差別就出來了,主要在於交貨能力,一般而言同為一級代理采購物料,st的交貨能力要比stc的強(當然最近行情st也不行了,交期干到了9月份)。所以如果你的產品是主力長期貨,建議選擇交貨能力強的。
我就記得51單片機放不了幾個變數就超出了。復雜點的程序都很難寫。
B. 各類單片機的性能比較
按處理速度來看的話,ARM>>AVR>51 ARM遠大於AVR,AVR大於51
同時ARM也有不同分類比如我們常見的ARM7,ARM9甚至ARM11他們在同一架構和指令集下肯定數大的運算能力強,處理速度快。他們的速度是百兆甚至G為單位的。當然ARM也有不同分類或分工,有致力於運算處理的,比如A8,A10,還有致力於控制方面運算的比如M3,M0等當然這個就屬於低端些的了,主要就是搶占傳統51,AVR,PIC等
還有個MSP430主打就是低功耗。運行速度可能低些,但省電,全速運行也都不超過1,2MA這是其他MCU不能比擬的。
另外上面提到PIC順道說下,這是MCU中的個怪胎。。字長不是我們常見的8位而是7位。指令集也不同於我們傳統的指令,但他高抗干擾性能使他在汽車電子應用比較廣泛。
AVR和51有差別但懸殊就不是那麼大了,AVR的速度和內配比如ADC。PWM等要優於51。當然有些特殊的51如AT89C51SND1C這款內部自帶有MP3解碼器。而AVR一般不行。還需外擴VS1003這類的硬體解碼器。或是80C51有的運行頻率也在百兆甚至內部還帶有USB,LAN等網路配置。
C. DSP和單片機的CPU的對比
單片機、ARM、DSP都可以稱之為CPU
目前,單片機已廣泛稱作微控制器(MCU),單片機是一塊類似PC的晶元,只是沒PC強大,但它可以嵌入到其它設備中從而對其進行操控。
DSP是一種獨特的微處理器,是以數字信號來處理大量信息的器件。它不僅具有可編程性,而且其實時運行速度可達每秒數以千萬條復雜指令程序,遠遠超過通用微處理器,是數字化電子世界中日益重要的電腦晶元。
單片機的工作ARM和DSP都能作,單片機對於數字計算方面的指令少得多,DSP為了進行快速的數字計算,提高常用的信號處理演算法的效率,加入了很多指令,比如單周期乘加指令、逆序加減指令,塊重復指令等等,甚至將很多常用的由幾個操作組成的一個序列專門設計一個指令可以一周期完成,極大的提高了信號處理的速度。
D. AVR單片機和PIC單片機誰的性能更好
在晶元內部功能模塊配置相同的情況下,AVR較PIC價格便宜。AVR執行速度快,一般都是單周期指令。PIC一般是4個時鍾周期一條指令。AVR解密價格低,PIC解密較高。如果你學過51單片機和C語言,那麼學習PIC和AVR的難度都差不多。當然你要是學習匯編的話,那麼推薦你學PIC,畢竟PIC的指令比較少,PIC16F87X系列只有35條指令,PIC18F4620也只有75條。AVR的ATMEGAxx大約有130條指令
E. 單片機與fpga的性能區別
fpga和單片機的區別
1、結構上的區別
單片機是一種微處理器,類似於電腦CPU的,它一般採用的是哈佛匯流排結構,或者馮諾依曼結構,對單片機的編程很大程度上要考慮到它的結構和各個寄存器的作用,單片機用途比較廣,一般用在控制流水線上,還有日 常你看得到的東西上!
FPGA 它的結構是查找表結構,其程序不用去太考慮晶元的結構,要注意的是時序上問題,它的結構比較復雜,功能也很強大,一般應用在通信領域等比較高端的場合,目前在國內FPGA還算是一個新興的行業,當然它的價格也要比單片機貴得多!
單片機是一個微控制器,通過載入模塊軟體來實現某種功能,單片機是成型的晶元;FPGA是用來設計晶元的晶元。
2、速度上的區別
FPGA由於是硬體電路,運行速度直接取決於晶振速度,系統穩定,特別適合高速介面電路。單片機由於是單線程,哪怕是常用的M3系列流水線也是單線程執行,程序語句需要等待單片機周期才能執行。