問題3:為什么是STM32呢?為什么不是ARM9,ARM11呢?
答:這里有個誤區(qū),很多同學如果就僅僅希望入門嵌入式,那就盡量不要選擇ARM9和ARM11,為什么呢?因為誘惑太多了,因為你一旦選擇ARM9或 ARM11,那么這個平臺就僅僅linux和wince等操作系統(tǒng)內(nèi)核,驅(qū)動,應(yīng)用,各種協(xié)議,硬件原理圖,等都有夠?qū)W一年半載了,沒這點時間,你無法完全掌握,所以并不適合入門,周期太長,難度相對來說較大。
入門最好選擇主頻低一點的處理器,一切都是先掌握好原理,弄明白,弄透徹了,一切就都好辦!所以單片機中,STM32是目前最最主流的芯片,加上目前 STM32的資料非常的多,所以,最好還是推薦STM32的開發(fā)板做為入門級的板子,學會之后,即可自己獨立開發(fā)出各種產(chǎn)品,STM32官方提供的開源代碼庫也是非常好用,將底層的各種匯編,管腳定義都封裝成了各個功能函數(shù),開發(fā)起來非常方便,快捷!
20年的嵌入式經(jīng)驗分享學習——來自STM32神舟系列開發(fā)板設(shè)計師的總結(jié)
首先,如果你有幸看到這篇文章,千萬不要試圖在2個小時內(nèi)閱讀完,就算你2個小時閱讀完,我相信你也不會理解里面講解的精華之處,我相信,你應(yīng)該將此文章,慢慢品嘗,這絕對是一篇需要品嘗2~3天,再結(jié)合自己過往的經(jīng)驗,加上自己的思考,我相信會對你不僅僅是技術(shù)能力,甚至包括整體的思維方式都會有一個非常大的提高。
結(jié)合這篇文章,再結(jié)合STM32神舟系列開發(fā)板一些學習,可能會更加加深對嵌入式概念的理解。
我寫這篇文章的目的,是用本人20年的嵌入式經(jīng)驗呈現(xiàn)給大家一副完整的產(chǎn)品,項目開發(fā)藍圖,用本人多年經(jīng)的歷總結(jié)了一些教訓無私的分享給各位,希望各位今后能站在本人的肩膀之上,少走彎路,多為公司,為個人多做貢獻,那我的愿望就達到了,也同時希望能看到大家反饋和回復,留個腳印,留下你的見解和智慧,為后人乘涼打點基礎(chǔ),先在這謝謝各位了。
那么由此開始我們充滿知識的旅程吧,最重要的一點,就是在一個產(chǎn)品或項目的開發(fā)過程中,如果沒有明確的目標,那么成功將無從談起,做任何事的第一步必須明確目標。
與日常生活中的大多數(shù)事務(wù)一樣,設(shè)計一個嵌入式產(chǎn)品的過程也必須從確定目標開始,對生產(chǎn)的產(chǎn)品進行明確定義。對產(chǎn)品進行定義主要是對產(chǎn)品是什么和能有什么功能進行描述,其次是在我們的整個開發(fā)過程中,應(yīng)該要撰寫一些開發(fā)文檔,大概的框架的如下:
1)產(chǎn)品需求文檔:描述產(chǎn)品的特性
2)功能需求文檔:描述產(chǎn)品必須具備的功能
3)工程說明文檔:描述系統(tǒng)實現(xiàn)的方法和滿足需求的手段
4)硬件說明文檔:對有關(guān)硬件進行描述
5)軟件或固件說明文檔:描述特定處理器下設(shè)計微程序以及固件的方法
6)測試說明文檔:描述必須測試的項目和驗證系統(tǒng)正常運行的方法
1.需求定義
需求定義用來描述產(chǎn)品的基本功能,對于公司來說,需求一般由該公司的市場銷售部門或該公司的主要客戶來制定;而對小公司或愛好者,技術(shù)人員可以自己負責定義需求,并撰寫成文檔;對于STM32神舟系列開發(fā)板來說,主要就是提供各種接口,為大家開發(fā)產(chǎn)品時提供借鑒!
通常需求定義是圍繞以下幾個因素而來:
1)系統(tǒng)的用途(定義需要系統(tǒng)實現(xiàn)的各種功能)
2)實際輸入輸出是何種方式實現(xiàn)的(為元器件的選型做參考)
3)系統(tǒng)是否需要操作界面(涉及軟件層操作系統(tǒng)的選型)
其實對小型的嵌入式產(chǎn)品來說,定義需求是非常關(guān)鍵的,因為需求清楚了,就可以避免后續(xù)開發(fā)過程中出現(xiàn)的諸如隨機存儲器(RAM)容量不足或所選的CPU速度不能滿足處理的需要等一系列問題。
----------------------------------------------------------------------------------------------------------
下面舉個簡單的實際例子,供大家來參考:
系統(tǒng)描述:用于從化溫泉的水泵換水系統(tǒng)(用STM32神舟III號開發(fā)板模擬實現(xiàn))
電源輸入:使用來自于變壓器的9V~12V直流電
水泵功率:375W
2)如果溫泉池處于低水位,則輸入開關(guān)閉合信號,以禁止水泵繼續(xù)運行
3)用戶可以自由設(shè)置水泵運行或關(guān)閉的時間長度
4)除了自動設(shè)置控制外,還需要提供一種人工裝置來允許維護人員靈活控制水泵進行維修
5)水泵開啟/關(guān)閉/人工干預的時間可以30分鐘為單位,在30分鐘到23小時的范圍內(nèi)進行調(diào)節(jié)
6)顯示設(shè)備可以指示水泵的開關(guān)狀態(tài),剩余時間,以及水泵是否處于人工干預模式
7)具備監(jiān)視低水位的功能,并顯示在屏幕上
如果需要商用,那么除了上面給出的功能要求外,其設(shè)計文檔中還要包括電磁干擾(EMI)和電磁兼容性(EMC)認證、安全認證以及使用環(huán)境(包括環(huán)境溫度、濕度、鹽霧腐蝕等)等方面的需求。
實際上,以上的需求確定之后,接下來就是要考慮選擇一款合適的CPU來滿足和實現(xiàn)系統(tǒng)的功能,那么我們就要將上述7點用戶能夠理解的需求轉(zhuǎn)化成我們專業(yè)領(lǐng)域的需求,轉(zhuǎn)化如下,大家可以參考一下:
a.處理或更新輸入輸出信號的速率究竟需要多快?
解釋:目前嵌入式處理器的主頻一般都在幾十兆到幾百兆不等,單片機的主頻一般是幾十兆,STM32神舟系列開發(fā)板的CPU都是72MHZ,有的 ARM9,ARM11處理器可以到幾百兆;我們主要看這個產(chǎn)品是否需要對大量數(shù)據(jù)進行處理,或是否需要對緩沖區(qū)進行頻繁操作,是否有類似的占用CPU資料的工作要做,這就決定我們要選擇一款合適的處理器來讓該產(chǎn)品得到最佳的性能。
b.是否可使用單片集成電路(專用IC)或FPGA來完成數(shù)據(jù)處理?
解釋:如果可以的話,就不一定要選擇處理器來做,用這些專業(yè)芯片就能替代
c.系統(tǒng)是否有大量的用戶輸入輸出操作(如對開關(guān)和顯示設(shè)備進行頻繁操作)?
解釋:如果有的話,要在處理器選型的時候考慮這些因素,選擇一款能夠滿足以上要求的CPU.
d.系統(tǒng)與其他外部設(shè)備之間需要使用何種接口?
解釋:這也是需要評估處理器的一個關(guān)鍵問題,選擇具備這些接口功能的處理器會方便于我們的電路設(shè)計以及軟件編程
e.設(shè)計完成后是否有可能需要進行改動,或在設(shè)計過程中系統(tǒng)需求是否可能出現(xiàn)變化?我們的設(shè)計是否能適應(yīng)系統(tǒng)需求的變化?
解釋:要避免選擇的處理器剛好滿足當前要求,這樣當以后事務(wù)要求逐漸提高,處理器性能如果還有一定空間的話,那么就可以重用目前的產(chǎn)品;第二個就是要選擇不會即將停產(chǎn)的芯片,很多處理器用得很廣乏,可以借鑒的資料也很多,但是很可能這款芯片已經(jīng)在市場上流行很長時間了,芯片廠商已經(jīng)推出更新?lián)Q代的替代品了,如果你選擇了這款芯片,很可能1,2年后就買不到這款處理器芯片了,導致不得不重新選擇新的處理器,重新設(shè)計產(chǎn)品,這樣的既耗費時間,金錢,更消耗人力,延誤市場的戰(zhàn)機。
評論