1. 程式人生 > >DSP與STM32大PK

DSP與STM32大PK

發展 相對 cdm 資料 性能 福利 個數 系列 多少

1.FPGA:是可編程邏輯陣列,常用於處理高速數字信號,不過隨著科技的發展,現在很多FPGA CPLD可以集成mcu內核,甚至具備了ARM DSP的功能
2.ARM,是一類內核的稱謂,就像51一樣,具體到芯片的話,會有很多不同的廠家不同等級,諸如三星、易法、飛利浦、摩托羅拉等等,其中STM32是易法半導體的一款面向工控低功耗內核為Cortex M3內核的ARM芯片
3.DSP顧名思義就是數字信號處理,廠家主要是德州儀器(TI)主要用於數字型號處理等對運算速度有特殊要求的場合,諸如音頻視頻算法,軍工等領域,但同時dsp有2000 5000 6000等系列也可滿足不場合需要

1.FPGA一般不會用來做復雜的系統,只用來做些簡單的系統如狀態機實現的自動售貨機...展開>等,多少還是用來做信號的高速變換和處理,畢竟它只是可編程邏輯陣列。
2.ARM和DSP就各有千秋了;
ARM的系列從V3 V5 V7 V9 XSCALE,從thumb指令到arm指令(thumb arm也可同時實現),可以說遍布機會所有的領域,只要你接的價格可以接受(其實許多arm並不是很貴的),單片機所有的功能基本他都能實現,我就不用舉例子,特別是現在與各種RTOS結合更是開發方便功能強大。
DSP相對arm價格要貴些,這也是可能個體廠家使用較少的一個原因吧,2000系列主要用於工控特別是2812這個用的人比較多,5000 6000主要用於手持設備、PDA、通信等領域;
DSP還有一個特色就是對一些特殊算法的支持如快速福利葉變換等,所以對運算速度有特殊要求的場合一般會選擇DSP;
DSP因其性能和功能比較好,還廣泛用於軍工領域!

關於DSP和普通51 AVR還有STM32的區別
DSP是為運算而生的芯片,他最強大的地方就在與它的數**算性能,那是由它的指令集支持的。那些拿DSP和STM32比較的,省省吧,如果你兩者都熟悉你就知道根本沒啥好比的, 如果我需要很多高級的接口,比如以太網和USB,那麽我自然選STM32,如果我需要實現一些算法,那肯定會選DSP。如果你對運算速度不敏感,反正72M的速度已經比原先單片機快很多了,那當然是看你熟悉哪個,哪個價格比較好,支持比較好。
從51 AVR到DSP最大的障礙
  1、應該是編譯環境吧,TI的DSP都用的是CCS,CCS界面和原先IAR區別不是一般的大,比如程序導入,比如觀察變量,比如燒寫FLASH。恩,是的。用過了IAR那種傻瓜化的操作了之後,真是怎麽弄怎麽別扭,CCS真是太不友好了。但是沒辦法,IAR他們是專門做編譯軟件的,TI主要是做DSP的,TI也意識到這個問題了,所以現在推出的CCSV4好像在這方面有很大的加強。不過網上還是CCS3.3的資料最多,大家也熟悉,如果剛接觸還是先用CCS3.3為好。
如果你手頭有快開發板,那裏面應該有對這些操作的詳細說明。所以這個慢慢應該也可以熟悉。

  2、庫文件。TI的庫文件都是聯合+結構+位域的形式。對這些結構不是非常熟悉的話可能看著有點暈,這個只能慢慢去看C的書。最納悶的可能就是它的地址映射,如何把寄存器映射到相應的地址,那是它由編譯器來支持的主要通過#PROGRM來實現,可以去看看它的CMD文件

  3、CMD,CMD文件可能是入門最大的一個坎了,單片機或者ARM根本就沒這麽一說,這破東西到底啥用吶?CMD文件主要作用就是用來做內存分配,你的芯片裏面有FLASH有RAM有BOOT ROM,你編寫的程序有代碼,要燒到FLASH中,有全局變量要存到RAM的全局變量區域,有局部變量,要存到堆棧中。CDM文件其實就是把你代碼中的這些一塊一塊的東西和具體的硬件存儲對應起來。你可以隨你需要任意來配置,比如我有一個數據表格,普通的單片機你定義好了之後會有編譯器來幫你存放到一個地方,但是DSP裏面你可以通過配置CMD把它放在你認為合適的地方。再比如堆棧空間的大小,以前從來沒關心過堆棧大小,但是開辟的太大的話可能浪費內存空間。當然,每個芯片都有一個標準的CMD文件,初學者完全可以不用去修改它。

  4、文檔。TI的文檔包括數據手冊和外設指南,很多人說很亂,不像其它芯片,所有外設的資料都會放在一起,但是TI會每個外設弄一個。這就要說說TI的外設,它的外設都非常專業,是的專業。比如它的PWM外設,叫ePWM,也就是增強型的PWM,這個外設可以輕松輸出非常復雜的PWM波形,而且不用CPU參與。所以它的外設指南有100多頁,你會發現很多外設都是這樣,裏面有很多很多增強的功能,相對應的它的說明文檔也就非常長。要是全部都集合在一起那就會非常的大。而且它的每個外設都是有獨立版本的,比如ADC,已經從0版到3版,而ePWM還是1版,分開之後升級的維護會方便很多,很多外設在類似的芯片都是一樣的。

  用STM32的時候我從來沒看懂過它的庫,甚至都沒仔細看過它的手冊。但是最後也搞出來了,完了之後我對這塊芯片沒多少熟悉的感覺。但是用C2000系列的DSP的時候則要反反復復的去看外設指南,分析手冊上給出的結構,讓我對芯片非常熟悉,再加上它的編譯環境是完全可以配置的,我甚至都知道我某個變量會在哪個地方。   工業控制與自動化, 這個按21IC的網友說:“那是萬精油”面很廣。。。!

  芯片只是個軀殼。 重要的是專業知識和算法。TI的DSP 性能質量穩定可靠。 讓你用的放心。
  而STM32, 有許多未知的因素,比如BUG,可靠性等等, 如果樓主的產品價錢利潤高,當然使用TI的DSP或者MICROCHIP的DSPIC.咱們不用太擔心 芯片的質量問題,芯片的BUG/抗幹擾等等。。。
  TI的DSP有些地方做的比STM32專業好多。例如可靠性,TI的DSP的許多寄存器有寫保護功能,因此對某些從引腳等幹擾芯片內部寄存器/改寫內部寄存器等嚴重問題,會有很大幫助。但是STM32沒有這個功能。還有TI在DSP在電機控制控制方面做得很專業,PWM部件的功能,比如死區,輸入保護,PWM脈沖的特殊波形等方面都有獨到的地方。
而STM32 還是顯得比較嫩。 TI多年前都專門有虛擬浮點庫給定點的DSP使用。也是最找出浮點DSC的廠家。 28335比STM32F4早了3-4年推出市場。
  而且TI 還出了一個芯片內包括兩個核心:ARM7/CM3+DSP的控制器。還有多通道同時采樣轉換的ADC , TI在醫學/電力電子與新能源方面的應用等都可以看出 TI比ST公司專業很多。更知道咱們需要什麽。
  但對於咱們使用者來說,如果是中檔路線或民用的工業產品,或者對成本比較敏感的產品,當然要STM32之類的了。作為工程師,可以快速使用多種芯片,這個是必須的。
  用STM32的好處是, 芯片可以前後呼應, 有ARM7,ARM9, CORTEX-M/A等等。一系列的產品。從低到高,功能外設都很強大,可以承前啟後的。如果是作為學習,我建議樓主用STM32來入門。 ********************************************************************************************************************************************************************************************************************************************************************************************* 就電機控制而言,你怎麽就覺得STM32的功能更強大呢?我從datasheet來看,dsPIC和STM32F4xx其實半斤八兩,只是Microchip已經在這個行業混了很久了,各種應用手冊相對ST的來說要多些。不用DSP,你會很累的。 另外,註意的是,現在市面上很流行的STM32都是不帶DSP功能的STM32F1xx系列。而帶DSP和浮點運算的STM32F4系列才是面向電機控制的產品。但這個東西比較新,如果有什麽BUG或有什麽問題你現在在網上不一定有人幫你解決。除非你要的量比較大,可以讓ST的FAE來幫你搞定。 其實做電機控制,我優先推薦:1:TI的C2XXX系列;2:Microchip的dsPIC系列。 如果你做的項目中包含多種保護的話,外擴CPLD是一個推薦的方式。如果你只是想做三閉環PID控制,之前推薦的C2000 DSP基本是較好的選擇,這是硬件層面上的考慮。題外話,無刷控制難度在於控制算法的選擇,工業控制領域以PID見廣,如果是學校做項目的話不妨研究幾種較為前沿的控制算法。 STM32做電機控制?可能有點偏頗。小型集成無刷直流電機控制用DSP+FPGA也是有點誇張了。 推薦下簡單的做法,TI:TMS320F28335;如果你想要有更高大上的玩法:TI:TMS320F28377D,雙核浮點,做無刷控制無壓力。

DSP與STM32大PK