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