gpio(也稱為通用輸入/輸出)是控制器中最簡單也是最重要的配置。但即便如此,io也有各種各樣的型別和配置選項,有輸入,輸出,上拉,下拉,推挽等。雖然我們天天都和它打交道,但是你真的了解其中的配置嗎?
通常,gpio輸入主要通過以下三種方式之一進行配置:
● 高阻抗(hi-z,也稱為浮動floating)
● 上拉(pull-up,內部電阻連線到vcc)
● 下拉(pull-down,內部電阻連線到地)
當input port被處在高阻抗的模式下,若沒有外部訊號源進來的話,此時是無法確定port的狀態(不能確定現在處在高電位或低電位),除非有外部訊號來驅動電路。換句話說,input floating,這個input電位狀態完全是由外部訊號來決定,沒有訊號驅動的話,就會呈現高阻抗狀態。
如果我們需要這個port有乙個明確的預設狀態時,必須借助pull-up(pull-down)resistor來做調整,在pull-up resistor(pull-up外接高電壓,pull-down通常會接地)的作用之下,讓port的維持在明確的高電壓狀態(pull-down則是讓port維持在低電壓狀態)。
至於具體電阻的大小,一般在晶元手冊中都有詳細的描述。在實際配置中,除了要考慮port口內的上下拉電阻大小,還需要考慮mcu外圍電路所帶來的影響。
gpio的輸出模式,常見的有開漏輸出(open-drain)、推挽輸出(push-pull)與開集輸出(open-collector)。其中開漏輸出和開集輸出,這兩種輸出的原理和特性基本是類似的,區別在於乙個是使用mos管,其中的"漏"指的就是mos管的漏極;另乙個使用三極體,其中的"集"指的就是三極體的集電極。這兩者其實都是和推挽輸出相對應的輸出模式,由於使用mos管的情況較多,很多時候就用"開漏輸出"這個詞代替了開漏輸出和開集輸出。
●推挽輸出:一般是指兩個mosfet分別受兩互補訊號的控制,總是在乙個mos管導通時另乙個mos管截止。(推挽輸出的最大特點是可以真正的輸出高電平和低電平,且兩種電平下都有驅動能力)。
推挽輸出的簡化原理圖
push- 當連線到電晶體柵極的內部訊號(見上圖)設定為低邏輯電平(邏輯0)時,pmos電晶體被啟用,電流從vdd流到輸出引腳。nmos電晶體無效(開路)且不導通。
pull- 當連線到電晶體柵極的內部訊號被設定為高邏輯電平(邏輯1)時,nmos電晶體被啟用(閉合)並且電流開始從輸出引腳流到gnd。同時,pmos電晶體無效(開路)且不導通電流。看起來推挽輸出十分完美,對高低電平都有相當不錯的輸出能力。但推挽輸出的乙個缺點是,如果當兩個推挽輸出結構相連在一起,乙個輸出高電平,即上面的mos導通,下面的mos閉合時;同時另乙個輸出低電平,即上面的mos閉合,下面的mos導通時。電流會從第乙個引腳的vcc通過上端mos再經過第二個引腳的下端mos直接流向gnd。整個通路上電阻很小,會發生短路,進而可能造成埠的損害。這也是為什麼推挽輸出不能實現" 線與"的原因。
●開漏輸出:顧名思義,就是從mosfet的漏極輸出的電路,要得到高電平狀態需要加上拉電阻才行。適合做電流型的驅動,其吸收電流的能力比較強(開漏輸出最主要的特性就是高電平沒有驅動能力,需要借助外部上拉電阻才能真正輸出高電平)。
開漏輸出的這一特性乙個明顯的優勢就是可以很方便的調節輸出的電平,因為輸出電平完全由上拉電阻連線的電源電平決定。所以在需要進行電平轉換的地方,非常適合使用開漏輸出。
開漏輸出最常用於通訊介面,其中多個器件連線在同一線路上(例如i2c等)。當連線到線路的器件的所有輸出都處於hi-z狀態時,通過上拉將線路驅動到預設邏輯1電平。任何器件都可以使用其開漏輸出將線路拉至邏輯0,並且所有器件都可以看到此電平。
揭開微控制器gpio設定的神秘面紗(embeddedartistry)
understanding microcontroller pin input/output modes(stratify labs)
gpio輸入輸出各種模式(推挽、開漏、準雙向埠)詳解(techexchangeischeap)
開漏輸出和推挽輸出
1.推挽輸出與開漏輸出的區別 推挽輸出 可以輸出高,低電平,連線數字器件 開漏輸出 輸出端相當於三極體的集電極.要得到高電平狀態需要上拉電阻才行.適合於做電流型的驅動,其吸收電流的能力相對強 一般20ma以內 2.開漏電路特點 在電路設計時我們常常遇到開漏 open drain 和開集 open c...
推挽輸出和開漏輸出
輸出 0 時,n mos 導通,p mos 高阻,輸出0。輸出 1 時,n mos 高阻,p mos 導通,輸出1 不需要外部上拉電路 特點 1 可以輸出高低電平,用於連線數字器件,高電平由vdd 決定,低電平由vss決定 2 推挽結構指兩個三極體受兩路互補的訊號控制,總是在乙個導通的時候另外乙個截...
推挽輸出和開漏輸出
推挽輸出 push pull 推挽輸出,正如字面上的意思,有 推 也有 挽 推挽輸出電路運用兩個mos管構成,上面為p mos,下面為n mos,vcc為正電源,vss為負電源,輸入端連有乙個相反器 非門 用來驅動mos管 當輸入訊號為正半周時,高電平輸入取反後為低電平,加在p mos上導通,而加在...