【原】【電路“芯”說】單片機(jī)IO擴(kuò)展
世界上最尷尬的事情是什么?這個我真不知道。但是做電子系統(tǒng)時最尷尬的事莫過于想要增加一個新的功能卻發(fā)現(xiàn)單片機(jī)的引腳不夠。在我們?nèi)粘5碾娐吩O(shè)計時,除了最基本的產(chǎn)品需求要滿足之外,還需要考慮的就是整個電路設(shè)計的成本,在很多公司中,成熟產(chǎn)品的cost down(成本降低)也基本上是個日常日程。產(chǎn)品成本的cost down比起供應(yīng)鏈端哥們的努力,設(shè)計源頭的cost down顯然更加直接簡單。一個好的電子工程師并不是能設(shè)計出多么復(fù)雜穩(wěn)定的電路,而是可以利用最簡單最便宜的方案來滿足復(fù)雜的產(chǎn)品設(shè)計要求。在我們做單片機(jī)選型的時候,往往會發(fā)現(xiàn)這樣一個規(guī)律,同一個core的單片機(jī)選型時,單片機(jī)的引腳越多,其單價就越貴。以STM32為例,LQFP32封裝的價格是最便宜的,往上依次是LQFP48封裝,LQFP64封裝,LQFP100封裝,LQFP144封裝。在我們選型時,往往單片機(jī)的內(nèi)部資源LQFP48封裝的引腳就能滿足我們的需求,正當(dāng)我們決定選用這個芯片時,發(fā)現(xiàn)正好少了幾個用作IO口的引腳,因此不得不選用更高一級別的LQFP64封裝,正由于這個原因,電路的成本增加了好幾塊RMB。其實解決單片機(jī)IO口不夠用的情況,除了選用引腳更多的芯片之外,還有一個簡單而便宜的方法,那就是IO口擴(kuò)展。單片機(jī)的IO口擴(kuò)展一般有以下三種方案。串轉(zhuǎn)并芯片來擴(kuò)展單片機(jī)的IO可能是成本最低的IO擴(kuò)展解決方案,而且對于單片機(jī)來說可以犧牲最少的端口來獲得最多的端口擴(kuò)展收益。串轉(zhuǎn)并方案所利用的芯片就是我們?nèi)粘K^的“移位寄存器”芯片。由于移位寄存器是一種單向器件,因此需要利用只能做串行數(shù)據(jù)轉(zhuǎn)并行數(shù)據(jù)的移位輸出寄存器芯片和只能做并行數(shù)據(jù)轉(zhuǎn)串行數(shù)據(jù)的移位輸入寄存器芯片來完成這個單片機(jī)IO口的雙向傳輸方案。首先來討論單片機(jī)輸出口的擴(kuò)展方案。單片機(jī)輸出口擴(kuò)展需要利用串行數(shù)據(jù)轉(zhuǎn)并行數(shù)據(jù)的移位寄存器芯片,最常用的芯片是74HC595。74HC595是一個8位串行輸入、平行輸出的位移緩存器:平行輸出為三態(tài)輸出。我們從它的邏輯框圖中可以看到,這個74HC595芯片內(nèi)部分成三個部分:圖中紅色框選出的是移位寄存器單元,這個單元的功能為SER引腳上的數(shù)據(jù)會在每個SCK上升沿到來時被移位進(jìn)入移位寄存器。圖中藍(lán)色部分框選出的是數(shù)據(jù)暫存器單元,其實這里就是8個并聯(lián)的D觸發(fā)器,這8個D觸發(fā)器的輸出分別和其對應(yīng)的前級移位寄存器輸出端相連,在每個RCK上升沿到來時就將數(shù)據(jù)鎖存住。圖中黃色框選出的是輸出門控電路,這是8個三態(tài)門組成的電路,當(dāng)G非為低電平時,三態(tài)門被開啟,輸出有效,反之芯片輸出為高阻狀態(tài)。最后一個Q’H引腳,是將串行數(shù)據(jù)輸出的,比如當(dāng)SCK第8個脈沖到來時,8個移位寄存器正好可以存儲一個字節(jié)的數(shù)據(jù),但是當(dāng)?shù)?個脈沖到來時,最先來的那個SER上的數(shù)據(jù)會被最晚到來的第9個脈沖頂出來,頂出來的那一位數(shù)據(jù)就會出現(xiàn)在Q’H引腳上面,這個引腳的主要目的是用來做74HC595芯片擴(kuò)展的。接著來討論單片機(jī)輸入口的擴(kuò)展方案。單片機(jī)輸入口擴(kuò)展需要利用并行數(shù)據(jù)轉(zhuǎn)串行數(shù)據(jù)的移位寄存器芯片,最常用的芯片是74HC165。74HC165是8位并行讀取或串行輸入移位寄存器,可在末級得到互補(bǔ)的串行輸出(Q7和!Q7),當(dāng)異步并行讀取引腳(!PL)輸入為低時,從D0到D7口輸入的并行數(shù)據(jù)將被讀取進(jìn)寄存器內(nèi)。而當(dāng)異步并行讀取引腳為高時,數(shù)據(jù)將在每個時鐘脈沖的上升沿從 引腳串行進(jìn)入寄存器并將現(xiàn)有數(shù)據(jù)右移一位( 以此類推)。利用這種特性,只要把Q7輸出綁定到下一級的輸入,即可實現(xiàn)移位寄存器位數(shù)的擴(kuò)展。74HC165的時鐘輸入是一個“門控與”結(jié)構(gòu),CP(時鐘脈沖)和CE(時鐘允許)共同產(chǎn)生有效時鐘輸入。只有在CE(時鐘允許)為低時,CP(時鐘脈沖)才有效。應(yīng)當(dāng)注意的是,在PL上升沿到來前,CP或者CE必須置高,以防止數(shù)據(jù)在PL的狀態(tài)尚未穩(wěn)定時發(fā)生移位。以上就是關(guān)于移位寄存器用來擴(kuò)展單片機(jī)IO口的,但是移位寄存器擴(kuò)展出來的單片機(jī)IO口只能用作一些低速設(shè)備的驅(qū)動擴(kuò)展,如按鍵,LED等,無法去驅(qū)動一些高速的設(shè)備,因為串行數(shù)據(jù)轉(zhuǎn)并行數(shù)據(jù)都是通過循環(huán)一位一位地移出來的,因此速度都是有限的。專用的IO擴(kuò)展芯片很多,這里以NXP的PCF8574為例。PCF8574是一種硅CMOS電路。它通過雙線雙向總線(I2C)為大多數(shù)微控制器系列提供通用遠(yuǎn)程I/O擴(kuò)展。該器件由8位準(zhǔn)雙向端口和I2C總線接口組成。PCF8574具有低電流消耗,包括鎖存輸出,具有高電流驅(qū)動能力,可直接驅(qū)動LED。它還具有中斷線(INT),可以連接到微控制器的中斷邏輯。通過在這條線上發(fā)送一個中斷信號,遠(yuǎn)程I/O可以通知微控制器其端口上是否有傳入數(shù)據(jù),而無需通過I2C總線進(jìn)行通信。這意味著PCF8574仍然是一個簡單的從設(shè)備。PCF8674具有以下特性:·鎖定輸出,具有高電流驅(qū)動能力,可直接驅(qū)動LED·通過3個硬件地址引腳尋址,最多可使用8個設(shè)備(PCF8574A最多可使用16個)·DIP16或節(jié)省空間的SO16或SSOP20封裝。說到專用的IO擴(kuò)展芯片,其大致功能和移位寄存器相似,細(xì)節(jié)上還是有很多不同,當(dāng)然專用的IO擴(kuò)展芯片功能更加強(qiáng)大,比如PCF8574的IO口能同時支持輸入輸出功能。這些細(xì)致的功能用起來雖然更加順手,方便,但是跟其昂貴的售價比起來,這些功能顯然性價比太低。以上就是兩種單片機(jī)IO口擴(kuò)展的方案,孰優(yōu)孰劣,一目了然。
|
轉(zhuǎn)藏
分享
獻(xiàn)花(0)
+1