GPIO就是通用IO,可以根據設計的需要,由其中的幾個引腳實現某種傳輸協議的通信,比如SPI或SDIO接口,或者I2C接口。
GPIO,英文全稱為General-Purpose IO ports,也就是通用IO口。嵌入式系統中常常有數量眾多,但是結構卻比較簡單的外部設備/電路,對這些設備/電路有的需要CPU為之提供控制手段,有的則需要被CPU用作輸入信號。而且,許多這樣的設備/電路只要求一位,即只要有開/關兩種狀態就夠了,比如燈亮與滅。對這些設備/電路的控制,使用傳統的串行口或並行口都不合適。所以在微控制器芯片上一般都會提供一個通用可編程IO接口,即GPIO。
在實際的MCU中,GPIO是有多種形式的。比如,有的數據寄存器可以按照位尋址,有些卻不能按照位尋址,這在編程時就要區分了。比如傳統的8051系列,就區分成可位尋址和不可位尋址兩種寄存器。另外,為了使用的方便,很多mcu把glue logic (注*) 等集成到芯片內部,增強了系統的穩定性能,比如GPIO接口除去兩個標准寄存器必須具備外,還提供上拉寄存器,可以設置IO的輸出模式是高阻,還是帶上拉的電平輸出,或者不帶上拉的電平輸出。這在電路設計中,外圍電路就可以簡化不少。
GPIO (通用輸入/輸出)或總線擴展器利用工業標准I2C、SMBus或SPI接口簡化了I/O口的擴展。當微控制器或芯片組沒有足夠的I/O端口,或當系統需要采用遠端串行通信或控制時,GPIO產品能夠提供額外的控制和監視功能。每個GPIO端口可通過軟件分別配置成輸入或輸出。
注* gule logic 的中文含意是“膠連邏輯”,它是連接復雜邏輯電路的簡單邏輯電路的統稱。例如,一個ASIC芯片可能包含許多諸如微處理器、存儲器功能塊或者通信功能塊之類的功能單元,這些功能單元之間通過較少的粘合邏輯連接起來。