日本老熟妇一二三区-麻豆视频精品一区-人妻中文字幕xx-一区二区美女少妇-日本成人一级在线

  • 有助于嵌入式系統(tǒng)順利開發(fā)的硬件獨(dú)立性設(shè)計(jì)方案

       所有嵌入式系統(tǒng)最終都要連接到外部傳感器與執(zhí)行器或內(nèi)部功能模塊與外設(shè)等硬件以實(shí)現(xiàn)輸入輸出、數(shù)據(jù)存儲(chǔ)及通信功能。每種設(shè)計(jì)方案中的每個(gè)硬件都有其自己的特性,需要設(shè)計(jì)人員認(rèn)真對(duì)待。

      設(shè)計(jì)方案中使用的硬件如果發(fā)生任何變化,即便是僅僅添加或去除一個(gè)輸入或輸出端口,也會(huì)影響到嵌入式軟件,有時(shí)甚至?xí)斐煞浅?yán)重的影響。如果在設(shè)計(jì)過(guò)程后期才做出上述變動(dòng),那么就可能導(dǎo)致產(chǎn)品不能及時(shí)上市。解決這一問(wèn)題的辦法,就是在系統(tǒng)設(shè)計(jì)過(guò)程中確保完全的硬件獨(dú)立性。

      硬件獨(dú)立性設(shè)計(jì)(design-out the hardware)就是指將所有控制和算法軟件與硬件接口軟件相分離。我們應(yīng)有效地設(shè)計(jì)與硬件有關(guān)的邏輯封裝器和接口,這樣不管什么時(shí)候用邏輯部件來(lái)替換正在使用中的特定硬件,也不會(huì)影響控制和算法軟件。

      通過(guò)便于理解的邏輯接口(函數(shù)、宏、符號(hào))將硬件提取出來(lái),這不僅有助于提高設(shè)計(jì)的可移植性,而且還能使開發(fā)人員集中精力解決實(shí)際的應(yīng)用問(wèn)題,甚至在明確采用什么硬件之前就能開始設(shè)計(jì)工作。這聽起來(lái)似乎比較簡(jiǎn)單,您可能認(rèn)為現(xiàn)在您或您的工作團(tuán)隊(duì)正是這么做的。

      不過(guò),我們不妨來(lái)認(rèn)真研究一下當(dāng)前的設(shè)計(jì)項(xiàng)目(或者曾經(jīng)喜歡的項(xiàng)目),看看要是更換其中的微控制器,會(huì)出現(xiàn)什么情況。如果改用不同的微控制器,尤其是不同廠商的微控制器的話,要是會(huì)對(duì)項(xiàng)目造成嚴(yán)重影響,那么您在設(shè)計(jì)過(guò)程中就沒(méi)有實(shí)現(xiàn)硬件獨(dú)立性。

      為了成功實(shí)現(xiàn)硬件獨(dú)立性設(shè)計(jì),我們必須在設(shè)計(jì)過(guò)程中保持清醒的頭腦。我們不必等硬件完全設(shè)計(jì)好了再開始開發(fā)嵌入式軟件,也不必等到明確所有要求后最終確定硬件選擇,而是可以將設(shè)計(jì)方案中的硬件選擇與設(shè)計(jì)方案相分離,這樣在市場(chǎng)嶄露頭角的時(shí)候我們就可以開始設(shè)計(jì)工作,從而有助于贏得關(guān)鍵客戶。說(shuō)到底,有哪些設(shè)計(jì)項(xiàng)目中硬件是真的一成不變的呢?最后總是會(huì)出現(xiàn)硬件變動(dòng)的情況。

      用這種方法開始設(shè)計(jì)工作有助于提高整體靈活性,這既是由于硬件幾乎隨時(shí)“能夠”替換,同時(shí)也是由于我們不用擔(dān)心硬件的替換問(wèn)題了。此外,由于硬件特定的功能位于封裝器與接口中,因此這有助于簡(jiǎn)化調(diào)試工作,也增加了不同項(xiàng)目之間 IP 的重復(fù)利用率。

      “硬件獨(dú)立性設(shè)計(jì)” 是什么意思?

      最簡(jiǎn)單地說(shuō),嵌入式系統(tǒng)的硬件獨(dú)立性設(shè)計(jì)就是在邏輯上把嵌入式應(yīng)用軟件與所有硬件直接相連的軟件相分離。所謂“所有”硬件就是指物理設(shè)計(jì)或選定微控制器發(fā)生變化時(shí)可能發(fā)生的任何變化因素。

      顯然這包括選定微控制器中支持硬件的所有器件,如模數(shù)轉(zhuǎn)換器(ADC)和通信接口(UART、SPI、I2C、USB、CAN 等)。不過(guò)如果物理系統(tǒng)設(shè)計(jì)還包括傳感器與執(zhí)行器,那么它們的變動(dòng)也會(huì)影響軟件,因此必須確保其 為硬件獨(dú)立性設(shè)計(jì)。

      此外,不要忘了輸入/輸出端口與嵌入式存儲(chǔ)器等常見元件。如果它們發(fā)生變動(dòng),也會(huì)影響應(yīng)用(比方說(shuō)用于記錄數(shù)據(jù)日志或存儲(chǔ)配置選擇的非易失性存儲(chǔ)器,或提供內(nèi)部上拉或內(nèi)置驅(qū)動(dòng)電路的輸入端口)??傊?,所有硬件都要做到獨(dú)立系統(tǒng)設(shè)計(jì)。

      有的讀者可能會(huì)想,硬件獨(dú)立性設(shè)計(jì)方案到底有什么新穎之處?幾千年以前,睿智的所羅門國(guó)王曾經(jīng)說(shuō)過(guò):“太陽(yáng)下面沒(méi)有什么東西是新的。”嵌入式系統(tǒng)硬件獨(dú)立性設(shè)計(jì)背后的理念實(shí)際并不是什么新東西。自從現(xiàn)代嵌入式系統(tǒng)設(shè)計(jì)出現(xiàn)以來(lái)(我認(rèn)為大約是在 1980 年吧),工程師一直在圍繞硬件構(gòu)建封裝器與接口。

      本文要說(shuō)明的是,我們應(yīng)當(dāng)把這種方法發(fā)揮到邏輯極致,否則我們的項(xiàng)目就仍然會(huì)受限于硬件,就不能在需要時(shí)靈活地更改硬件。我希望您通過(guò)本文能夠充分認(rèn)識(shí)到硬件選擇對(duì)嵌入式設(shè)計(jì)的影響,并能夠了解到在今后設(shè)計(jì)中消除硬件變化影響的一些小竅門。

      從何做起?

      開始項(xiàng)目設(shè)計(jì)時(shí),您至少要有一些基本的想法或要求。我們應(yīng)著手設(shè)計(jì)一種獨(dú)立于硬件的系統(tǒng)。系統(tǒng)應(yīng)當(dāng)實(shí)現(xiàn)什么功能?最終目標(biāo)是什么?需要哪些驅(qū)動(dòng)、監(jiān)控功能?如果加入硬件的話,就要把整個(gè)信號(hào)鏈中的各個(gè)部分組成一個(gè)有機(jī)的整體。

      您會(huì)發(fā)現(xiàn),所有彼此相互連接的硬件實(shí)際上都是替換硬件情況下潛在的問(wèn)題來(lái)源。我們要用封裝器或接口將所有硬件隔離起來(lái)。就馬達(dá)控制設(shè)計(jì)而言,我們不妨來(lái)看看它的算法,看看要用哪些數(shù)據(jù)來(lái)確定驅(qū)動(dòng)指令。

      為了控制算法,不管采用什么硬件,不管是幾安培的負(fù)載電流,還是每分鐘多少轉(zhuǎn)的轉(zhuǎn)速,還是百分比驅(qū)動(dòng)命令,都必須確保邏輯性。

      通過(guò)硬件和算法相結(jié)合,負(fù)載電流轉(zhuǎn)換為電壓,ADC 對(duì)其采樣后轉(zhuǎn)換成數(shù)字計(jì)數(shù),再通過(guò)數(shù)學(xué)函數(shù)轉(zhuǎn)換為毫安;上面每個(gè)步驟都需要進(jìn)行“包裝”,避免底層硬件改變時(shí)影響軟件應(yīng)用。

      如果在設(shè)計(jì)過(guò)程中完全遵循上述步驟,那么最終我們就能實(shí)現(xiàn)兩個(gè)目的。首先,我們能明確硬件與最終系統(tǒng)的關(guān)系,并了解到類似但不同的新項(xiàng)目如何從現(xiàn)有的設(shè)計(jì)方案受益。其次,如果需要設(shè)計(jì)全新的項(xiàng)目,采用完全不同的應(yīng)用類型,那么仍能參考現(xiàn)有的項(xiàng)目,只需對(duì)其加以調(diào)整,就能滿足新項(xiàng)目的要求,只需根據(jù)新式應(yīng)用替換或刪除有關(guān)層即可。

      以前,微控制器的高級(jí)大型電路板支持套件需要專業(yè)工作組或電腦天才來(lái)做特殊處理,而他們又總是因?yàn)楣ぷ魈Χy以作出必要的調(diào)整,現(xiàn)在,我們可以支持邏輯解構(gòu),逐步滿足各相關(guān)功能需求,確保滿足整體需求。

      記得上大學(xué)時(shí),即便考試答題時(shí)沒(méi)有得出正確的答案,但如果演算過(guò)程邏輯清晰、條理分明、系統(tǒng)而有組織,并加以適當(dāng)注解,那么仍能在考試中獲得一定的分?jǐn)?shù)。這個(gè)道理與硬件獨(dú)立性設(shè)計(jì)方案的道理是一樣的。

      我們不需要做到特別嚴(yán)格的有組織性,只需將封裝器與接口在邏輯上進(jìn)行集中,就能方便地替代實(shí)際硬件。舉例來(lái)說(shuō),如果我們把所有與微控制器直接相關(guān)的封裝器與接口集中在一個(gè)地方,而不是將其分散在不同的文件中,那么就能在最后關(guān)頭輕松更換微控制器。

      通過(guò)實(shí)例說(shuō)明工作原理

      我們不妨通過(guò)一個(gè)應(yīng)用實(shí)例來(lái)說(shuō)明上述道理。在這個(gè)應(yīng)用中,我們根據(jù)溫度來(lái)控制風(fēng)扇轉(zhuǎn)速,一步步完成相關(guān)設(shè)計(jì)工作,確保硬件獨(dú)立性設(shè)計(jì)。在開始項(xiàng)目設(shè)計(jì)之前,我們已知:1) 我們需要獲得溫度讀數(shù)。 2) 我們需要根據(jù)溫度計(jì)算出所需的風(fēng)扇轉(zhuǎn)速。 3) 我們需要讀取當(dāng)前風(fēng)扇轉(zhuǎn)速。 4)我們需要根據(jù)當(dāng)前風(fēng)扇命令以及實(shí)際風(fēng)扇轉(zhuǎn)速與理想轉(zhuǎn)速之間的誤差計(jì)算出新的風(fēng)扇命令。5)我們需要向風(fēng)扇輸出新的命令。

      圖1給出了該系統(tǒng)的邏輯方框圖。矩形塊表示依賴于硬件,而橢圓形則表示獨(dú)立于硬件。根據(jù)該圖所示的邏輯關(guān)系,控制工程師可以利用 MatLab 等模擬套件開始系統(tǒng)開發(fā)工作,而設(shè)計(jì)結(jié)果則能直接輸入最終設(shè)計(jì)方案(尤其是用 C 語(yǔ)言等幾乎所有微控制器都支持的高級(jí)語(yǔ)言編寫的情況,更是如此)。

      隨著項(xiàng)目開發(fā)的進(jìn)展,我們決定采用熱敏電阻作為溫度傳感器(因?yàn)闊崦綦娮璩杀镜颓夷軡M足特殊屬性需要)。 我們從下圖2可以看出,“獲取溫度”這個(gè)矩形塊又?jǐn)U展為依賴于硬件且與熱敏電阻設(shè)計(jì)相關(guān)的不同功能塊,其中包括熱敏電阻的硬件特性及其接口電路等。

      溫度在熱敏電阻中以電阻表示;在信號(hào)調(diào)節(jié)電路中,電阻則表示為電壓,通過(guò) ADC 轉(zhuǎn)換,電壓則轉(zhuǎn)換為 0 至 4095 之間的數(shù)值;在軟件中,該數(shù)值則轉(zhuǎn)換為機(jī)器可存儲(chǔ)和顯示的溫度值(比方說(shuō)定點(diǎn)值溫度,間隔為0.1℃)。

      我們將溫度放入數(shù)據(jù)存儲(chǔ)系統(tǒng)中,讓數(shù)據(jù)值更新同步于控制算法,這樣溫度就能與控制算法一樣保持最新,從而確保將軟硬件更好地隔離開來(lái)。

      隨后,我們?cè)谠O(shè)計(jì)方案中發(fā)現(xiàn),使用熱敏電阻的話微控制器將不能滿足溫度熱點(diǎn)的要求,一直在熱敏電阻與微控制器引腳之間運(yùn)行模擬線路的話,就會(huì)造成太多噪聲并導(dǎo)致信號(hào)損耗。

      因此,我們決定在溫度區(qū)采用集成電路 LM75 I2C 作為溫度傳感器,將溫度進(jìn)行本地轉(zhuǎn)化,并向I2C 總線提供數(shù)字值作為從設(shè)備。

      現(xiàn)在,為了獲得溫度值,如下圖 3所示,我們必須在微控制器中啟用 I2C 主通信硬件,讀取 LM75 中的一組寄存器,并將溫度的原生表達(dá)法(最低有效位為 0.125℃)轉(zhuǎn)化為此前選定的溫度表達(dá)法(定點(diǎn)值溫度,間隔為 0.1℃)。

      由于我們實(shí)現(xiàn)了控制軟件隔離,即便采用新的溫度讀取方法,控制應(yīng)用軟件也不會(huì)因?yàn)橛布淖兌艿接绊憽?

      有關(guān)LM75的特性可以集中在上圖3所示的藍(lán)色矩形框中,我們可在不影響控制軟件的前提下對(duì)其加以檢查和驗(yàn)證。

      舉例來(lái)說(shuō),一些設(shè)備會(huì)在 I2C 主機(jī)每次讀取溫度值/寄存器時(shí)啟動(dòng)新的轉(zhuǎn)換,如果讀取速度過(guò)快或者過(guò)于頻繁,那么LM75 就難以完成轉(zhuǎn)換。控制算法則不用擔(dān)心這些問(wèn)題。

      微控制器的抽取

      我們?cè)谏厦娴膶?shí)例中有意識(shí)地改變了微控制器外部的硬件,說(shuō)明外部硬件轉(zhuǎn)變不會(huì)影響控制軟件。同樣,即便微控制器內(nèi)部硬件發(fā)生變化,也不會(huì)造成影響。

      如果我們?nèi)鐖D 2 所示先設(shè)計(jì)熱敏電阻,隨后再改動(dòng)我們的微控制器,那么配置和讀取 ADC 的命令就會(huì)變化,對(duì)輸入進(jìn)行多路復(fù)用和采樣的寄存器序列也會(huì)變化,進(jìn)而計(jì)數(shù)到溫度的轉(zhuǎn)換也會(huì)發(fā)生改變。

     
     
    網(wǎng)站首頁(yè)  |  關(guān)于我們  |  聯(lián)系我們  |  廣告服務(wù)  |  版權(quán)隱私  |  友情鏈接  |  站點(diǎn)導(dǎo)航