主流32位單片機(jī)攻略連載:為什么要學(xué)STM32?
1)產(chǎn)品需求文檔:描述產(chǎn)品的特性
2)功能需求文檔:描述產(chǎn)品必須具備的功能
3)工程說明文檔:描述系統(tǒng)實(shí)現(xiàn)的方法和滿足需求的手段
4)硬件說明文檔:對有關(guān)硬件進(jìn)行描述
5)軟件或固件說明文檔:描述特定處理器下設(shè)計(jì)微程序以及固件的方法
6)測試說明文檔:描述必須測試的項(xiàng)目和驗(yàn)證系統(tǒng)正常運(yùn)行的方法
1.需求定義
需求定義用來描述產(chǎn)品的基本功能,對于公司來說,需求一般由該公司的市場銷售部門或該公司的主要客戶來制定;而對小公司或愛好者,技術(shù)人員可以自己負(fù)責(zé)定義需求,并撰寫成文檔;對于STM32神舟系列開發(fā)板來說,主要就是提供各種接口,為大家開發(fā)產(chǎn)品時(shí)提供借鑒!
通常需求定義是圍繞以下幾個因素而來:
1)系統(tǒng)的用途(定義需要系統(tǒng)實(shí)現(xiàn)的各種功能)
2)實(shí)際輸入輸出是何種方式實(shí)現(xiàn)的(為元器件的選型做參考)
3)系統(tǒng)是否需要操作界面(涉及軟件層操作系統(tǒng)的選型)
其實(shí)對小型的嵌入式產(chǎn)品來說,定義需求是非常關(guān)鍵的,因?yàn)樾枨笄宄?,就可以避免后續(xù)開發(fā)過程中出現(xiàn)的諸如隨機(jī)存儲器(RAM)容量不足或所選的CPU速度不能滿足處理的需要等一系列問題。
----------------------------------------------------------------------------------------------------------
下面舉個簡單的實(shí)際例子,供大家來參考:
系統(tǒng)描述:用于從化溫泉的水泵換水系統(tǒng)(用STM32神舟III號開發(fā)板模擬實(shí)現(xiàn))
電源輸入:使用來自于變壓器的9V~12V直流電
水泵功率:375W
1)使用單相交流電機(jī),由機(jī)械電氣進(jìn)行控制
2)如果溫泉池處于低水位,則輸入開關(guān)閉合信號,以禁止水泵繼續(xù)運(yùn)行
3)用戶可以自由設(shè)置水泵運(yùn)行或關(guān)閉的時(shí)間長度
4)除了自動設(shè)置控制外,還需要提供一種人工裝置來允許維護(hù)人員靈活控制水泵進(jìn)行維修
5)水泵開啟/關(guān)閉/人工干預(yù)的時(shí)間可以30分鐘為單位,在30分鐘到23小時(shí)的范圍內(nèi)進(jìn)行調(diào)節(jié)
6)顯示設(shè)備可以指示水泵的開關(guān)狀態(tài),剩余時(shí)間,以及水泵是否處于人工干預(yù)模式
7)具備監(jiān)視低水位的功能,并顯示在屏幕上
如果需要商用,那么除了上面給出的功能要求外,其設(shè)計(jì)文檔中還要包括電磁干擾(EMI)和電磁兼容性(EMC)認(rèn)證、安全認(rèn)證以及使用環(huán)境(包括環(huán)境溫度、濕度、鹽霧腐蝕等)等方面的需求。
實(shí)際上,以上的需求確定之后,接下來就是要考慮選擇一款合適的CPU來滿足和實(shí)現(xiàn)系統(tǒng)的功能,那么我們就要將上述7點(diǎn)用戶能夠理解的需求轉(zhuǎn)化成我們專業(yè)領(lǐng)域的需求,轉(zhuǎn)化如下,大家可以參考一下:
a.處理或更新輸入輸出信號的速率究竟需要多快?
解釋:目前嵌入式處理器的主頻一般都在幾十兆到幾百兆不等,單片機(jī)的主頻一般是幾十兆,STM32神舟系列開發(fā)板的CPU都是72MHZ,有的 ARM9,ARM11處理器可以到幾百兆;我們主要看這個產(chǎn)品是否需要對大量數(shù)據(jù)進(jìn)行處理,或是否需要對緩沖區(qū)進(jìn)行頻繁操作,是否有類似的占用CPU資料的工作要做,這就決定我們要選擇一款合適的處理器來讓該產(chǎn)品得到最佳的性能。
b.是否可使用單片集成電路(專用IC)或FPGA來完成數(shù)據(jù)處理?
解釋:如果可以的話,就不一定要選擇處理器來做,用這些專業(yè)芯片就能替代
c.系統(tǒng)是否有大量的用戶輸入輸出操作(如對開關(guān)和顯示設(shè)備進(jìn)行頻繁操作)?
解釋:如果有的話,要在處理器選型的時(shí)候考慮這些因素,選擇一款能夠滿足以上要求的CPU.
d.系統(tǒng)與其他外部設(shè)備之間需要使用何種接口?
解釋:這也是需要評估處理器的一個關(guān)鍵問題,選擇具備這些接口功能的處理器會方便于我們的電路設(shè)計(jì)以及軟件編程
e.設(shè)計(jì)完成后是否有可能需要進(jìn)行改動,或在設(shè)計(jì)過程中系統(tǒng)需求是否可能出現(xiàn)變化?我們的設(shè)計(jì)是否能適應(yīng)系統(tǒng)需求的變化?
解釋:要避免選擇的處理器剛好滿足當(dāng)前要求,這樣當(dāng)以后事務(wù)要求逐漸提高,處理器性能如果還有一定空間的話,那么就可以重用目前的產(chǎn)品;第二個就是要選擇不會即將停產(chǎn)的芯片,很多處理器用得很廣乏,可以借鑒的資料也很多,但是很可能這款芯片已經(jīng)在市場上流行很長時(shí)間了,芯片廠商已經(jīng)推出更新?lián)Q代的替代品了,如果你選擇了這款芯片,很可能1,2年后就買不到這款處理器芯片了,導(dǎo)致不得不重新選擇新的處理器,重新設(shè)計(jì)產(chǎn)品,這樣的既耗費(fèi)時(shí)間,金錢,更消耗人力,延誤市場的戰(zhàn)機(jī)。
2.處理器的選擇
2.1.需要使用的I/O管腳數(shù)量
多數(shù)處理器都是使用內(nèi)存和外部管腳來控制輸入輸出設(shè)備的,通常處理器都會有內(nèi)置ROM和RAM的,如果內(nèi)置的內(nèi)存就已經(jīng)滿足需要,那么處理器就可以節(jié)省產(chǎn)生引用外部存儲器信號的引腳,這樣處理器可為輸入輸出提供較多的設(shè)備管腳(某些處理器支持外部RAM或ROM的使用,但對外部存儲器進(jìn)行訪問時(shí),處理器一般需要占用8條到10條I/O管腳)。
還有,有些處理器帶有專用的內(nèi)部定時(shí)時(shí)鐘,這類時(shí)鐘也需要使用一個端口管腳來實(shí)現(xiàn)某些定時(shí)功能;某些處理器中還具有漏極輸出和高電流輸出能力,可以方便的直接驅(qū)動繼電器或電磁鐵線圈,而不再需要額外驅(qū)動硬件的支持。
當(dāng)對處理器I/O管腳進(jìn)行計(jì)數(shù)時(shí),我們一定要把使用處理器內(nèi)部功能(如串行接口和定時(shí)器等)時(shí)限制使用的某些管腳考慮在內(nèi)。
2.2.需要使用的接口數(shù)量
嵌入式處理器的主要功能是與應(yīng)用環(huán)境中的硬件進(jìn)行交互操作,這不僅需要外部硬件對接口具有實(shí)時(shí)處理能力,而且還要求處理器必須以足夠快的速度對接口數(shù)據(jù)進(jìn)行有效處理。
舉例來說,STM32神舟系列開發(fā)板的CPU是ST公司出品的一款工業(yè)級微處理器,它基于CORTEX M3的核心,處理主頻可達(dá)72MHZ,同時(shí)處理器內(nèi)部配置了USB、SPI、IIC等接口,像STM32神舟IV號的107處理器還支持Ethernet 等輸出接口,其目的是更方便的利用這些接口開發(fā)出嵌入式產(chǎn)品。
需要注意的是,由于許多處理器具有的局限性沒有在處理器技術(shù)資料中給予足夠的說明,因此一定要仔細(xì)閱讀處理器的指標(biāo)說明。例如,在閱讀資料的過程中發(fā)現(xiàn),該資料可能會說明其串行接口可以在最高波特率下工作,但仔細(xì)研究該處理器的指標(biāo)數(shù)據(jù)時(shí),可能會發(fā)現(xiàn)并非該串口接口的所有操作模式都可以在最大波特率下運(yùn)行。
深入了解并明確接口要求的方法:可以自己動手編寫一些程序來對接口進(jìn)行實(shí)際測試,以確認(rèn)某種處理器是否可以滿足應(yīng)用的要求;因?yàn)椋_認(rèn)某個處理器是否可以滿足接口要求并非是一件簡單的任務(wù)。
2.3.需要使用的內(nèi)存容量
決定內(nèi)存容量的大小是嵌入式產(chǎn)品設(shè)計(jì)過程中的一個基本步驟,如果對所需內(nèi)存容量估計(jì)過高,那么我們就有可能會選擇成本較高的解決方案;反之,如果低估了所需內(nèi)存容量,就有可能因系統(tǒng)需要重新設(shè)計(jì)而導(dǎo)致項(xiàng)目不能按時(shí)完工。
a.RAM和ROM的區(qū)別:存儲器分為隨機(jī)存儲器(RAM)和只讀存儲器(ROM)兩種。其中ROM通常用來固化存儲一些生產(chǎn)廠家寫入的程序或數(shù)據(jù),用于啟動電腦和控制電腦的工作方式。而RAM則用來存取各種動態(tài)的輸入輸出數(shù)據(jù)、中間計(jì)算結(jié)果以及與外部存儲器交換的數(shù)據(jù)和暫存數(shù)據(jù)。設(shè)備斷電后,RAM中存儲的數(shù)據(jù)就會丟失。
b.隨即存儲器(RAM)的選擇:RAM容量的預(yù)測是比較直觀的,我們只需把所有變量數(shù)目與所有內(nèi)部緩沖區(qū)的容量以及先入先出(FIFO)隊(duì)列長度和堆棧長度直接相加,就能得到所需RAM容量的總數(shù)。
如果所需內(nèi)存容量超出這類處理器的尋址范圍,那么只能通過增加外部RAM來滿足需求;然而,增加外部RAM的同時(shí)將會占用一定數(shù)量的I/O管腳來對擴(kuò)展內(nèi)存進(jìn)行尋址,這種擴(kuò)展往往會影響到處理器來實(shí)現(xiàn)應(yīng)用的初衷。
評論