歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 嵌入式Linux工控板的ISA總線GPIO擴展

嵌入式Linux工控板的ISA總線GPIO擴展

日期:2017/2/28 16:27:43   编辑:Linux教程

1、精簡ISA總線GPIO擴展原理

在工業領域,GPIO的應用非常廣泛,英利嵌入式Linux工控板上自帶有16路GPIO。然而在實際應用中,經常需要多於16路的GPIO作為控制或者數據信號使用,這時候可以通過英利精簡ISA總線進行GPIO擴展。采用最普遍的邏輯芯片74HCT138、74HCT245和74HCT273即可以擴展出滿足需求數量的GPIO。此外,由於上述芯片的成本極其低廉,單片采購價只有幾角錢,因此在滿足功能需求的同時,也有效地控制了產品成本。

采用精簡ISA總線進行GPIO擴展的方法是:使用74HCT138對片選控制信號CS1#、讀信號RD#、寫信號WE#以及地址線SA0-SA2進行地址譯碼,產生不同地址偏移量的片選信號,應用程序通過對不同地址的讀寫操作來控制相應的GPIO(GPIO通過74HCT245或者74HCT273連接到數據線SD0-SD7)。

2、DIN擴展示例

數字輸入DIN的擴展原理圖如下所示:

如圖所示,地址譯碼產生了8個讀片選信號,每一個信號通過控制一片74HCT245可以操作8路GPIO,這樣,一次譯碼之後可以擴展出64路DIN。本圖中只使用了RD0#和RD1#兩個片選信號,客戶如有需要可以使用RD2#-RD7#繼續進行擴展。

3、DOUT擴展示例

數字輸出DOUT的擴展原理圖如下所示:

如圖所示,地址譯碼產生了8個寫片選信號,每一個信號通過控制一片74HCT273可以操作8路GPIO,這樣,一次譯碼之後可以擴展出64路DOUT。本圖中只使用了WE0#和WE1#兩個片選信號,www.linuxidc.com客戶如有需要可以使用WE2#-WE7#繼續進行擴展。

綜上所述,通過一次地址譯碼能夠擴展出64路輸入、64路輸出一共128路GPIO,可以滿足絕大多數工業控制領域的需求。而這128路GPIO擴展所需的器件成本只有十幾元,相對於工控整機產品而言,幾乎可以忽略不計。

此外需強調的是,如果用戶擴展出的GPIO是用做不同的功能,那麼最好將不同的功能單元完全分開。

比如,需要進行如下擴展控制:
3路DIN
2x3矩陣鍵盤
5個LED
4路繼電器單元
7路DOUT

則分配思路如下:由於有5個功能單元,每一個功能單元所需的GPIO都不超過8個,因此使用2片74HCT245分別用於矩陣鍵盤、DIN;4片74HCT273分別用於矩陣鍵盤、LED、繼電器、DOUT,讀信號用RD0#和RD1#,寫信號用WE0#-WE3#。這樣,應用程序分別獨立控制各功能單元,可以加快開發進度,提高開發的成功率和後期維護效率;而多使用幾個芯片,並不會給開發成本增加任何負擔。

上述示例的具體分配方案如下:
1片74HCT245,使用片選信號RD0#,接矩陣鍵盤的輸入信號
1片74HCT245,使用片選信號RD1#,接3路DIN
1片74HCT273,使用片選信號WE0#,接矩陣鍵盤的輸出信號
1片74HCT273,使用片選信號WE1#,接LED
1片74HCT273,使用片選信號WE2#,接繼電器
1片74HCT273,使用片選信號WE3#,接7路DOUT

另需注意:

1、建議將地址偏移量為0的端口留作矩陣鍵盤使用,以便於系統自動加載驅動和應用程序的編寫。

2、由於英利提供的例程均采用CS1#作為片選信號,因此建議客戶也使用CS1#進行擴展,以方便前期測試。

Copyright © Linux教程網 All Rights Reserved