GPIO
Gerneral-Purpose IO ports,即通用IO口。
在嵌入式系統中常常有數量衆多,但是卻比較簡單的外部裝置/電路。
對這些裝置/電路,有的需要CPU為之提供控制手段,有的則需要被CPU用做輸入信号。
許多這樣的裝置/電路隻要求一位,即隻要有開/關兩種狀态就夠了,比如控制某個LED燈亮與滅;或者通過擷取某個管腳的電平屬性來達到判斷外圍裝置的狀态。
對這些裝置/電路的控制,使用傳統的串行口或并行口都不合适,是以在微控制器晶片上一般都會提供一個“通用可程式設計IO接口”,即GPIO。
接口至少有兩個寄存器,即“通用IO控制寄存器”與“通用IO資料寄存器”。
資料寄存器的各位都直接引緻晶片外部,而對這種寄存器中每一位的作用,即每一位的信号流通方向,則可以通過控制寄存器中對應位獨立地加以設定,比如可以設定某個管腳的屬性為輸入、輸出或其它特殊功能。
注意
在實際的MCU中,GPIO是有多種形式的。比如,有的資料寄存器可以按照位尋址,有些卻不能按照位尋址,這在程式設計時就要加以區分。
為了使用友善,很多MCU的GPIO接口除去兩個标準寄存器必須具備外,還提供上拉寄存器,可以設定IO的輸出模式是高阻,還是帶上拉的電平輸出,或者不帶上拉的電平輸出。這使得在電路設計中,外圍電路就可以簡化不少。
為什麼要使用上拉電阻
一般作單鍵觸發使用時,如果IC本身沒有内接電阻,為了使單鍵維持在不被觸發的狀态或是觸發後回到原狀态,必須在IC外部另接一電阻。
數字電路有三種狀态:高電平、低電平、和高阻狀态,有些應用場合不希望出現高阻狀态,可以通過上拉電阻或下拉電阻的方式使處于穩定狀态,具體視設計要求而定!
一般說的是I/O端口,有的可以設定,有的不可以設定,有的是内置,有的是需要外接,I/O端口的輸出類似于一個三極管的C,當C接通過一個電阻和電源連接配接在一起的時候,該電阻成為上拉電阻,也就是說,該端口正常時為高電平;C通過一個電阻和地連接配接在一起的時候,該電阻稱為下拉電阻。
上拉電阻是用來解決總線驅動能力不足時提供電流的問題的。一般說法是上拉增大電流,下拉電阻是用來吸收電流。
本文轉自infohacker 51CTO部落格,原文連結:http://blog.51cto.com/liucw/1190584