有助于嵌入式系統順利開發的硬件獨立性設計方案
我們從下圖2可以看出,“獲取溫度”這個矩形塊又擴展為依賴于硬件且與熱敏電阻設計相關的不同功能塊,其中包括熱敏電阻的硬件特性及其接口電路等。
本文引用地址:http://www.104case.com/article/86122.htm溫度在熱敏電阻中以電阻表示;在信號調節電路中,電阻則表示為電壓,通過 ADC 轉換,電壓則轉換為 0 至 4095 之間的數值;在軟件中,該數值則轉換為機器可存儲和顯示的溫度值(比方說定點值溫度,間隔為0.1℃)。
我們將溫度放入數據存儲系統中,讓數據值更新同步于控制算法,這樣溫度就能與控制算法一樣保持最新,從而確保將軟硬件更好地隔離開來。
隨后,我們在設計方案中發現,使用熱敏電阻的話微控制器將不能滿足溫度熱點的要求,一直在熱敏電阻與微控制器引腳之間運行模擬線路的話,就會造成太多噪聲并導致信號損耗。
因此,我們決定在溫度區采用集成電路 LM75 I2C 作為溫度傳感器,將溫度進行本地轉化,并向I2C 總線提供數字值作為從設備。
現在,為了獲得溫度值,如下圖 3所示,我們必須在微控制器中啟用 I2C 主通信硬件,讀取 LM75 中的一組寄存器,并將溫度的原生表達法(最低有效位為 0.125℃)轉化為此前選定的溫度表達法(定點值溫度,間隔為 0.1℃)。
由于我們實現了控制軟件隔離,即便采用新的溫度讀取方法,控制應用軟件也不會因為硬件改變而受到影響。
有關LM75的特性可以集中在上圖3所示的藍色矩形框中,我們可在不影響控制軟件的前提下對其加以檢查和驗證。
舉例來說,一些設備會在 I2C 主機每次讀取溫度值/寄存器時啟動新的轉換,如果讀取速度過快或者過于頻繁,那么LM75 就難以完成轉換。控制算法則不用擔心這些問題。
微控制器的抽取
我們在上面的實例中有意識地改變了微控制器外部的硬件,說明外部硬件轉變不會影響控制軟件。同樣,即便微控制器內部硬件發生變化,也不會造成影響。
如果我們如圖 2 所示先設計熱敏電阻,隨后再改動我們的微控制器,那么配置和讀取 ADC 的命令就會變化,對輸入進行多路復用和采樣的寄存器序列也會變化,進而計數到溫度的轉換也會發生改變。
不過,由于這些變動僅限于矩形之中(表示函數和/或宏定義以及調用),因此我們只需將原來矩形框中的內容用新微控制器所需的新指令替換即可。這樣,即便硬件發生了變化,軟件仍然絲毫不受影響。
然而我并沒有談到改用不同廠商的微控制器時可用什么嵌入式設計工具來進行相關調整的問題。事實上,許多廠商都提供了硬件初始化的設置向導,選擇同一廠商推出的新產品相對而言簡化了硬件更換過程。
就簡化硬件獨立性設計方案而言,微控制器廠商在自身的軟件開發工具中采用硬件提取技術,從而進一步簡化了這一工作。用戶可從目錄項中根據應用需求選擇微控制器的外設功能,并可根據設計方案需求的變化進行添加與刪減。
利用 PWM1 或 ADC 等通用實例名,用戶可改變硬件的具體功能細節,并讓工具來管理第一層提取或封裝器。舉例來說,在圖 2 中,如果我們需要增量型(積分型)ADC,而不是采用 SAR(逐次逼近)ADC的話,那么工具就能自動改變中間淺藍色的矩形。
我們還能在更高級層面上進行提取。舉例來說,利用面向 PSoC 混合信號陣列產品的 PSoC Designer 與 PSoC Express 可視化嵌入式設計工具,軟件默認采用硬件提取方法,并自動生成所有層(請見上圖2與圖3中的藍色部分)。
如欲修改熱敏電阻,用戶可在 PSoC Express 的目錄中選擇“熱敏電阻”,并定義“計算所需速度”的控制算法,開發工具就會給出哪些 PSoC 器件可以為該應用提供必需的資源。
選擇某個器件時,工具會以定點格式在一定的數據結構中生成必要的固件來讀取、轉換并存儲熱敏電阻的溫度,并提供給“計算所需速度”算法。
如果熱敏電阻的規范發生變化,那么用戶可選擇其他的 PSoC 器件,從而調整存儲容量、引腳數量、成本等。只顯示具有應用必需資源的器件,而且能在不影響控制算法的情況下重新生成硬件提取層。
或許在未來的什么時候,所有項目開發工作都可以制定出合理的計劃,市場營銷工作可以提前部署,明確客戶到底需要什么產品,而且計劃不會發生變化,具有預期特性的應用軟件正好與選定的微控制器的存儲空間相符。
不過在這一天到來之前,我們就應通過封裝器和硬件層將所有硬件與控制軟件相隔離,這樣就能在很大程度上簡化嵌入式系統的設計工作。
放眼窗外,深呼吸,仰望長空,雄鷹展翅,隨時準備攻擊捕獲獵物。時不我待,我們必須集中精力,全力以赴滿足緊迫的市場需求,堅決打贏最后關頭調整硬件選擇這一仗,滿足最苛刻的客戶需求。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)電度表相關文章:電度表原理
評論