iT邦幫忙

2021 iThome 鐵人賽

DAY 7
1

接續昨天說完暫存器的看法,再來講一下GPIO口的八種模式,兩大類分成輸出跟輸入細分有以下8種

1.開漏輸出 (Output open-drain)

2.推輓輸出 (Output push-pull)

3.複用開漏輸出(Alternate function open-drain)

4.複用推輓輸出(Alternate function push-pull)

5.類比輸入 (Input Analog)

6.浮空輸入 (Input floating)

7.下拉輸入 (Input pull-down)

8.上拉輸入 (Input pull-up)

剛學嵌入式的新手,這些觀念必須要搞清楚,最常接觸的就是推輓輸出跟開漏輸出。

1.開漏輸出(Output open-drain)

Open,輸出是開路的,所以使用的話就要加上拉電阻,主要的結構NMOS或NPN的BJT,STM的內部是用MOSFET,Drain為輸出,這輸出模式主要用來做電位的轉換,IO口的電位是由外部的上拉電組VCC來做決定的(5Vor3.3V),下面這張圖為開漏輸出的圖:
https://ithelp.ithome.com.tw/upload/images/20210920/20141979hVBGd1eHNY.png
可以看到這張Reference manual裡面的圖,我紅框起來的PMOS,使用開漏輸出的話只會用到下面的NMOS,注意這邊NMOS跟PMOS的Gate腳是分開的前面接了一個 Output control(輸出控制),開漏只會用下面的MOS,推輓的話兩個Gate腳會接在一起。
先提一下上拉電阻的問題,電阻值不是隨便決定的後面會在教學怎麼去算上拉電阻,這跟拉LOW拉HIGH的速度有關,這速度不管的話很多Snesor會抓取不到正確的數位數值,這在I2C有很重要的地位。

2.推輓輸出(Output push-pull)

如字面上的意思,推跟拉的輸出,MCU內的推挽輸出的結構是利用CMOS(互補式金屬氧化物半導體),輸出上端PMOS下端為NNOS,那怎麼做到推拉?
https://ithelp.ithome.com.tw/upload/images/20210920/20141979OHPMS0Hpq2.png
可以看到我紅框的部分,可以當作PMOS跟NMOS的Gate腳是接在一起的,他的預作原理當輸出控制給VDD時PMOS不導通NMOS是導通這樣輸出會接地拉電流,想反的輸出控制給GND時PMOS導通NMOS不導通,輸出會接VDD灌電流到輸出類似於推的動作。其實這工作就是CMOS的反向器,這樣可以做很快速的切換。

3和4複用功能

簡單來說,在STM有些IO口有對應的功能來開啟,我前幾天說的腳位定義那裏都有清楚的表示,例如UART、I2C、SPI、ADC,就根據你要開啟的硬體上的功能來複用。

5.類比輸入(Input Analog)

這沒甚麼好解釋的,MCU內部有ADC開啟類比輸入模式來讀取類比值轉換成數位值。

6.浮空輸入(Input floating)

通常用作按鍵的狀態檢測,可以看到我DAY2的電路圖,Reset的部分按鈕並聯個電容在上拉個電阻,沒按下的狀態是上拉3.3V,按下時是GND,這樣電路也可以應用在浮空輸入,至於最後的上拉跟下拉輸入意思也一樣,看你是要用內部的上下拉還是外部的,就自己決定瞜~

今天大致是這樣,明天我來分享如何用標準庫來開發吧,我還是先以STM32F103這顆常見的MCU來做解釋好了。


上一篇
[DAY 6] _stm32f103c8t6_暫存器查找方法
下一篇
[DAY 8] _用標準庫開發,以STM32F030為例
系列文
基於ARM-M0架構MCU之落摔檢測韌體開發35
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言