文章目錄
- GPIO 基本結構
- GPIO 工作模式
GPIO 基本結構
右邊的紅框是I/O引腳,這個I/O引腳就是我們可以看到的芯片實物的引腳,其他部分都是GPIO的內部結構。
-
保護二極管
- 上方二極管用于防過壓保護,當I/O引腳電壓高于 V_DD + 二極管導通壓降?時,電流從I/O引腳流向V_DD電源,將I/O引腳電壓鉗位在 ?V_DD + 0.7V。
- 下方二極管用于防負壓保護,當I/O引腳電壓低于 V_SS - 二極管導通壓降?時,電流從V_SS流向I/O引腳,將I/O引腳電壓鉗位在 ?V_SS - 0.7V。
-
上拉、下拉電阻
上拉和下拉電阻最根本的作用是確保I/O引腳在未被主動驅動(高阻態)時,有一個確定的邏輯電平,避免引腳“懸空”導致的信號不穩定或誤觸發。- 上拉電阻 Pull-up Resistor:當I/O引腳未被外部電路或內部驅動主動拉低時,上拉電阻將引腳電位“拉”向V_DD,使其穩定在高電平,也就是邏輯‘1’。
- 下拉電阻 Pull-down Resistor:當I/O引腳未被外部電路或內部驅動主動拉高時,下拉電阻將引腳電位“拉”向V_SS/GND,使其穩定在低電平,也就是邏輯‘0’?。
-
施密特觸發器
- 施密特觸發器有一個正閾值電壓V+ ?和一個負閾值電壓V-?,且 ?V+ > V-。只有當輸入電壓超過較高的V+時,輸出才從低電平跳變為高電平;同樣,只有當輸入電壓低于較低的V-時,輸出才從高電平跳變為低電平,當輸入電壓處于 ?V- 和 V+ 之間? 時,施密特觸發器的輸出保持之前的狀態不變。
- 看一張圖理解比較器的(A)和施密特觸發器(B)的差異:
施密特觸發器的? V+ 和 ?V- 之間的區域被稱為 ?滯回電壓,在 V- < U < V+ 這個區域內,輸出?保持?其之前的狀態不變!它不會像比較器一樣瞬間產生高低電平的變化,這樣就形成了一個 ?噪聲免疫區,只要噪聲的幅度小于這個滯回電壓,并且輸入信號本身的變化趨勢足夠強能越過V+或V-,短暫的噪聲干擾不會導致輸出發生翻轉,這就是施密特觸發器相比普通比較器的核心優勢。
-
P-MOS和N-MOS
驅動輸出電平(高電平 1 或低電平 0)并承受外部負載。- P-MOS:當其柵極接收到一個相對源極為低電平?的控制信號?時導通,此時它在 V_DD 和輸出引腳?之間建立了一個低阻通路,電流從 ?V_DD 流經?導通的P-MOS管,?流入輸出引腳,這會將輸出引腳的電平拉高至接近 V_DD 的電壓,向外部電路提供一個穩定的高電平1, 同時能夠為連接在輸出引腳到 V_SS/GND 的外部負載提供電流,確保外部能識別到高電平。
- N-MOS:當其柵極?接收到一個相對源極為高電平?的控制信號時導通,此時它在輸出引腳和 V_SS/GND 之間建立了一個低阻通路,電流從輸出引腳?流經?導通的 N-MOS 管,?流入 V_SS/GND,這會將輸出引腳的電平拉低至接近 V_SS/GND 的電壓,向外部電路提供一個穩定的低電平0,能夠為連接在 V_DD 到輸出引腳的外部負載提供電流通路,確保外部能識別到低電平。
GPIO 工作模式
-
輸入浮空模式
- 在該模式下,?上拉電阻 (Pull-up)?? 和 ?下拉電阻 (Pull-down)?? 的控制開關被斷開,輸出緩沖器被關閉,這意味著引腳本身幾乎沒有驅動能力,對外部電路的影響極小,引腳的電壓完全由外部連接的電路決定。
- 工作原理:外部信號通過引腳進入,經過保護二極管后,信號直接進入TTL施密特觸發器,施密特觸發器對輸入信號進行整形,將緩慢變化的信號或帶有噪聲的信號整形成干凈的高低電平信號,整形后的數字電平信號被鎖存到?輸入數據寄存器中。
-
輸入上拉模式
- 輸入上拉模式主要用于將懸空的 GPIO 引腳穩定地拉到一個確定的高電平狀態。
- ?工作原理:
- 無外部輸入時:開啟的上拉電阻會將引腳拉至高電平,經過施密特觸發器后,讀輸入數據寄存器該位將得到邏輯1。
- 有外部輸入時:
- 當外部電路將引腳下拉至低電平時:外部下拉力量克服了上拉電阻的上拉作用,將引腳拉到 VT- 以下,經過施密特觸發器后,讀輸入數據寄存器該位將得到邏輯0。
- 當外部電路將引腳驅動至高電平時:由于外部信號源阻抗通常遠小于上拉電阻,引腳電壓會被外部源拉至高電平,讀輸入數據寄存器該位將得到邏輯1。
- 如果外部信號源是高阻態輸出?,該信號源本身不會驅動引腳電平,此時,內部上拉電阻起作用,將引腳拉到高電平。
-
輸入下拉模式
- 當外部沒有連接任何信號源或者外部信號源處于高阻態(Hi-Z)時,通過內置電阻將引腳電壓下拉到一個明確的低電平。
- 工作原理:
- 外部信號為低電平時,“戰勝”了內部下拉電阻的微弱下拉能力,引腳被拉低到 VSS。
- ?外部信號為高電平時,外部的高電平強于?內部下拉電阻的拉低作用,引腳的實際電平被外部信號拉高到接近VDD。
-
模擬功能
- 當GPIO用于模擬功能時,必須完全斷開其數字電路部分,其中輸出緩沖器被禁止,施密特觸發器輸入停用(施密特觸發器的輸出被 強制處理為恒定值0),弱上拉和下拉電阻被關閉,對輸入數據寄存器的讀訪問值為0。
- 當用作模擬輸入時(如連接至ADC),?外部模擬信號通過I/O引腳進入芯片。
- 當用作模擬輸出時(如連接至DAC),?片上模擬外設(如DAC)?產生的模擬信號通過該路徑輸出到I/O引腳。
-
開漏輸出和推挽輸出
對 I/O 端口進行編程作為輸出時,輸出緩沖器被打開,可以被設置為如下兩種模式:- 開漏模式:輸出寄存器中的“0”可激活 N-MOS,引腳通過導通的N-MOS管拉低到VSS輸出低電平;而輸出寄存器中的“1”會使端 口保持高組態 (Hi-Z)(P-MOS 始終不激活)。
- 推挽輸出:輸出寄存器中的“0”可激活 N-MOS,引腳通過導通的N-MOS管拉低到VSS輸出低電平;而輸出寄存器中的“1”可激活 P-MOS,引腳通過導通的P-MOS管拉高到VDD輸出高電平。
- 施密特觸發器輸入被打開,可以讀取輸入數據寄存器(IDR)?來獲取引腳實際的電平狀態。
-
復用功能
- 復用功能模式 (AF Mode)?? 就是讓GPIO引腳不再作為普通的輸入/輸出口,而是將引腳的控制權“交”給某個內置的外設模塊,如USART,TIM, I2C,SPI等。
- 引腳輸出的信號不再由寫入GPIO的輸出數據寄存器(ODR)決定,而是由所選外設模塊內部產生的信號直接驅動。
- 引腳輸入的信號不再只被通過GPIO的輸入數據寄存器(IDR)讀取,而是會同時被連接到所選外設模塊的接收端。