在嵌入式設(shè)計中,即便進(jìn)行了周密的計劃,完全按照最嚴(yán)格的程序進(jìn)行工作,項目也可能會遭遇理查三世一樣的失敗:比方說,您所選用的處理器可能不具備足夠的引腳,導(dǎo)致目標(biāo)難以實現(xiàn)。在選擇芯片、驅(qū)動LED時,總難做到全面,人們總是事后才失望地發(fā)現(xiàn),本應(yīng)選擇引腳更多的另一款處理器。即便進(jìn)行了前期計劃,為設(shè)計上的問題預(yù)留了空間,但還是不能確保得到你想要的引腳(還要考慮到安全性),因為市場或公司的市場營銷策略總是要求盡可能降低成本。即便您全力以赴,總算得到批準(zhǔn)采用具有10個額外引腳的處理器,能夠按時完成設(shè)計工作,但這樣做只能造成公司下一步肯定采取降低成本的措施。
最明智的選擇就是選擇這樣一款處理器,不僅能夠順利完成工作任務(wù)(處理、外設(shè)組合),而且還能夠利用總線上的外部與擴(kuò)展器件(即端口擴(kuò)展器)以滿足更高的I/O要求。我們可以預(yù)留兩個適用于標(biāo)準(zhǔn)FC通信總線的引腳,這樣今后就能根據(jù)需要添加幾乎無限數(shù)量的額外引腳,對軟硬件不會造成什么影響,這充分反映了12C端口擴(kuò)展器的優(yōu)勢。
端口擴(kuò)展器簡介端口擴(kuò)展器某系列器件中的一員,通常為從器件,位于通信總線(通常為12C,這是由philips公司開發(fā)的雙線雙向串行通信總線,不過也可以是其他標(biāo)準(zhǔn)總線)上,用于發(fā)送串行命令,以便讀取或?qū)懭隝/O引腳。主處理器(需要更多引腳的處理器)是通信總線主控,一項通常不需要特定的硅技術(shù)功能即可完成的工作,盡管采用I2C外設(shè)塊可以大幅簡化該工作。有的端口擴(kuò)展器比較簡單,有的則比較復(fù)雜,提供了各種可選功能,不過他們的基本操作都是一樣的:
1.首先封裝引腳以調(diào)節(jié)從器件地址的高低,然后主器件對其進(jìn)行配置,并通過通信總線寫人命令,定義哪些引腳為輸出,哪些為輸入。
2.在操作過程中,主器件寫入命令根據(jù)需要改變輸出引腳或讀取輸入引腳的狀態(tài)。在許多情況下,我們可對輸入引腳的變化進(jìn)行配置,以便驅(qū)動中斷線來引起總線主控的注意。
端口擴(kuò)展器的引腳就像處理器(總線主控器)的衛(wèi)星引腳,擴(kuò)展了處理器的功能,諸如能與前置面板(開關(guān)和LED)互動;能啟用/禁用系統(tǒng)中的其他設(shè)備(比如以特定順序打開或關(guān)閉電源)等。在其他情況下,端口擴(kuò)展器還能提供更多安全特性,如持續(xù)監(jiān)控連接至機(jī)箱外的開關(guān)并在開關(guān)打開時發(fā)出警報(這對老虎機(jī)來說是一種很受歡迎的功能)等。您能在需要的時候增加引腳。更讓人滿意的是,我們可以開始設(shè)計時在電路板上預(yù)留器件以備I2C總線使用,要是不需要的話,我們就不用安裝該器件。
端口擴(kuò)展器特性與選項端口擴(kuò)展器的概念很簡單,但各個廠商所提供的選項與特性往往比基本的引腳要復(fù)雜得多。擴(kuò)展所需的I/O引腳數(shù)量是一個變量。既然I2C總線上的每個器件都有唯一的地址(七位,第八位表示讀取或?qū)懭?,假設(shè)單個器件地址越多,您就能在總線上放置更多器件,以備后用。不過這樣做的代價是,每個地址線都要占用一個潛在的I/O引腳。
I2C端口擴(kuò)展器廠商(賽普拉斯、美信、微芯和菲利浦)所提供的產(chǎn)品系列非常豐富,單個器件中的I/O引腳數(shù)從8個到60個不等。就地址線而言,大多數(shù)廠商的器件至少有一到兩條地址線,但有的廠商推出了可提供多達(dá)7個地址位的解決方案,使暫時不用的地址線用作I/O。I/O引腳的驅(qū)動模式選擇根據(jù)器件的不同而不同。高阻抗輸入提供的選擇包括在輸入上提供一個內(nèi)部4.7kQ的上拉或下拉電阻器。對于輸出,我們則可用強(qiáng)大的10mA源極/25mA源極或內(nèi)部上拉和下拉電阻器來配合所有器件的開漏/開路集電極選項命令。要認(rèn)真閱讀Ic產(chǎn)品說明書,了解器件提供的各種選項。特別是可能需要直接驅(qū)動LED時(這時需要較強(qiáng)的驅(qū)動電流),或需直接連接至開關(guān)接點時(這時需要上拉或下拉電阻器)更加馬虎不得。
脈寬調(diào)制器(PWM)是另一個便于驅(qū)動LED的器件。基礎(chǔ)型(成本最低的)端口擴(kuò)展器不具備PWM,不過幾乎所有廠商均推出了一兩款能夠提供PWM調(diào)制器的端口擴(kuò)展器,單個端口擴(kuò)展器最多能支持16個PWM調(diào)制器。PWM的優(yōu)勢在于,高頻PWM調(diào)制器能夠驅(qū)動LED,這時占空比可設(shè)置LED的光強(qiáng)度(占空比越高,LED的打開時間越長,亮度也越強(qiáng));低頻PWM(1/2Hz至4Hz)可以使LED閃爍。如果配置選項支持PWM且振蕩器的精確度足夠高的話,那么PWM還能為其他器件提供計時信號。
有的器件提供可進(jìn)行串行尋址的EEPROM。通常,該特性取代了在系統(tǒng)額外增加相關(guān)功能或器件的要求,從而有助于電路板識別或其他配置信息。存儲器的大小通常很難滿足數(shù)據(jù)記錄的要求,不過總算是免費提供的一項功能,盡管并不是什么了不起的重要功能,就好像是面包車第三排座位上增加了杯子固定座。不過,大多數(shù)人還是希望免費得到更多功能的。
需要考慮的另一重要因素就是器件如何配置。對大多數(shù)器件和廠商而言,端口擴(kuò)展器的配置(包括端口方向、輸出狀態(tài)、PWM)是多變的,每次斷電并再次加電后,必須對器件進(jìn)行重新設(shè)置,也就是說,總線主控制器必須再次發(fā)送配置數(shù)據(jù)。新型器件可在端口擴(kuò)展器的非易失存儲器中存儲該配置信息,并在加電時自動恢復(fù)。此外還提供一種輔助特性,即能將與當(dāng)前狀態(tài)不同但又不影響當(dāng)前狀態(tài)的加電配置狀態(tài)寫入器件中。這樣,我們就能定義一種“故障保護(hù)”狀態(tài)。如果斷電,那么器件就能進(jìn)入該狀態(tài),且在總線主控器/處理器更新器件之前,器件一直保持這種狀態(tài)。
端口擴(kuò)展器設(shè)計優(yōu)勢主要通過下列三種方法使用端口擴(kuò)展器,從而實現(xiàn)最大設(shè)計優(yōu)勢。
1.為早期原型支持和測試/調(diào)試支持在設(shè)計中增加FC端口擴(kuò)展器,并計劃在最終產(chǎn)品中取消該器件;
2.在沒有明確定義需求的情況下在設(shè)計中添加I2C端口擴(kuò)展器,并確保隨時能取消該器件;
3.盡可能用I2C端口擴(kuò)展器來減少處理器的引腳需求。
在項目早期階段,用于監(jiān)控系統(tǒng)中不同器件的應(yīng)用軟件是不夠用的,甚至根本沒有。提供外部總線連接的|2C端口擴(kuò)展器可替代處理器和軟件來驅(qū)動邏輯線或監(jiān)控邏輯線的狀態(tài)。電路板上有了這種簡便易用的器件以及與PC相連的低成本I2C主控器,我們就能在設(shè)計的初期階段進(jìn)行各種硬件調(diào)試和驗證工作。此外,電路板上的端口擴(kuò)展器還可用作硬件的測試驅(qū)動器,在采用與PC相連的I2C主控器通過端口擴(kuò)展器從外部感測故障狀態(tài)的同時,還能夠使系統(tǒng)運行于正常狀態(tài)下。在上述情況下,只要系統(tǒng)完全成型,端口擴(kuò)展器則完成了它的作用,我們就能從設(shè)計中撤銷該器件。我們開始就舉例討論了這樣一個問題:完成某一項目時才發(fā)現(xiàn)結(jié)果所選的處理器引腳不夠用。我們不應(yīng)該在問題出現(xiàn)之后再添加端口擴(kuò)展器并對電路板進(jìn)行重新布局,而應(yīng)事先做好規(guī)劃,從一開始就在電路板上預(yù)留一小塊空間以便放置具備I2C總線接口的端口擴(kuò)展器。端口擴(kuò)展器只占用1平方厘米的板級空間,除非是最小型的系統(tǒng),否則所有系統(tǒng)在設(shè)計開始時都會留出這么一塊空間。將器件連接至I2C如果最終產(chǎn)品中包括I2C總線器件,那么在接口處放置零歐姆電阻會非常有用——通過安裝不同電阻器組合,可以實現(xiàn)地址設(shè)置功能。此外,對以后可以跨接線連接(jumper-wired-in)的I/O引腳,要提供接口。如果項目根本不需要端口擴(kuò)展器,那么就將其以及電阻器的成本從材料清單中減去,不過此舉所實現(xiàn)的只不過是縮減了PCB上的一點點板級空間。有人買保險結(jié)果卻活到一百歲,但我們并不能說他傻。
最后,應(yīng)熟悉端口擴(kuò)展器(或類似連接至I2C的從器件)的功能,只要可能,就在系統(tǒng)中安裝端口擴(kuò)展器。我們不要傻乎乎地把系統(tǒng)變成各種小器件的大雜燴,而應(yīng)合理有序地將設(shè)計項目加以劃分,每部分包括一些小的器件,彼此不耦合或很少耦合。剛開始,我們可能還體會不到這樣做的真正優(yōu)勢,不過隨著設(shè)計項目的增多,我們能逐漸甄別并總結(jié)出成功設(shè)計的組件,將它們在新設(shè)計中加以整合利用。憑借眾多廠商提供的多種特定功能,我們能夠大幅減少設(shè)計中煩瑣的引腳處理問題,給功能強(qiáng)大的高成本主處理器減輕負(fù)擔(dān),提升系統(tǒng)核心價值。端口擴(kuò)展器不是嵌入式系統(tǒng)中的新器件,正如引腳數(shù)不夠也不是什么新問題一樣。與風(fēng)靡一時的各類器件一樣,端口擴(kuò)展器領(lǐng)域的創(chuàng)新每年層出不窮。端口擴(kuò)展器的多樣化特性(I/0引腳數(shù)量、PWM、串行EEPROM、尋址選擇、非易失性配置等)和通用性,使其成為我們設(shè)計中一項重要的工具。不同廠商之間的競爭提高了產(chǎn)品性能,同時也擴(kuò)展了產(chǎn)品功能,因此,對于采用端口擴(kuò)展器的設(shè)計人員來說,即便是需要很多引腳支持的新特性突然出現(xiàn),為確保設(shè)計成功也無需花大量的資金。