1. 程式人生 > >stm32筆記--2硬體--GPIO管腳的幾種工作模式

stm32筆記--2硬體--GPIO管腳的幾種工作模式

高阻態

高阻態是電路的一種輸出狀態,既不是高電平也不是低電平,如果高阻態再輸入下一級電路的話,和沒接一樣。
電路分析時可以把高阻態看成開路,即輸出(輸入)電阻非常大,極限可以認為是懸空。但是理論上高阻態不是懸空,而是對地或者對電源的電阻非常大的狀態,實際應用上與引腳懸空是一樣的。
這裡寫圖片描述
上圖所示為GPIO管腳在高阻態輸入模式下的等效結構模式圖。Pin表示GPIO管腳,這是一個管腳的情況,其他管腳的結構也是同樣的輸入模式的結構比較簡單,就是一個帶有施密特觸發輸入(Schmitt-triggered input)的三態緩衝器(U1),並具有很高的阻抗。施密特觸發輸入的作用是能將緩慢變換的或者畸變的輸入脈衝訊號整形成比較理想的矩形脈衝訊號。執行GPIO管腳讀操作時,在讀脈衝(Read Pulse)的作用下會把管腳(Pin)的當前電平狀態讀到內部總線上(Internal Bus)。
不執行讀操作時,它可以變成高阻態的狀態,使得外部管腳和內部匯流排之間是隔離的。
為什麼會有這種高阻抗的管腳設計呢?因為很多管腳是連在同一根線上,為了不干擾其他管腳,當一個管腳在傳輸資料的時候,其他管腳配置成高阻抗,就不會干擾正在傳輸的管腳了,這樣可以很多管腳同時共用一根匯流排,分時複用。
為了減少資訊傳輸線的數目,大多數計算機中的資訊傳輸採用匯流排模式,即凡要傳輸的同類資訊都在同一組傳輸線,而且資訊是分時傳送的,在計算機中一般有三組匯流排,即資料匯流排,地址匯流排和控制匯流排。為防止資訊相互干擾,要求凡是掛到總線上的暫存器或者儲存器,它的輸入輸出不僅能呈現0、1兩個資訊狀態,還能產生一種高阻態的狀態,即它在這種狀態下與匯流排隔離,對匯流排狀態不起作用,此時匯流排可以由其他器件佔用。三態緩衝器即可實現上述功能,它除了具有輸入輸出功端之外,還有一個控制端,就像一個開關一樣,可以控制使其變成高阻態狀態。

推輓輸出

推輓輸出可以提高輸出功率,能更好地驅動外部裝置。
推輓輸出的原理:功率放大電路中大量採用推完放大器電路,這種電路中用兩隻三極體的分別放大輸入訊號的正半周和負半周,即一直三極體放大訊號的正半周,用另一隻三極體放大訊號的負半周,兩隻三極體輸出的半周訊號在放大器敷在後合併得到一個完整週期的輸出訊號。
推輓放大器電路中,一隻三極體工作在導通、放大時,另一隻三極體處於截止狀態,當輸入訊號變化到另一個半週期之後,原先導通、放大的狀態轉變為截止狀態,而原先截止的三極體進入導通、放大狀態,兩隻三極體在不斷地交替導通放大和截止,所以稱為推完放大器。
這裡寫圖片描述

上圖所示為GPIO管腳在推輓輸出模式下的等效結構示意圖。U1是輸出鎖存器,執行GPIO管腳寫操作的時候,在寫脈衝(WritePulse)的作用下,資料被鎖存到Q和/Q。T1和T2構成CMOS反相器,T1或T2導通的時候都表現出較低的阻抗,但是T1和T2不會同時導通或同時關閉,最後形成的是推輓輸出。在推輓輸出模式下,GPIO還具有回讀功能,獨到的是管腳的輸出鎖存狀態,而不是外部管腳Pin的狀態。
推輓電路是兩個引數相同的三極體或MOSFET,以推輓方式存在於電路中,各負責正負半周的波形放大任務,電路工作時,兩隻對稱的功率開關管每次只有一個導通,所以導通損耗小、效率高。輸出既可以向負載灌電流,也可以從負載抽取電流。所以推輓式輸出既提高電路的負載能力,又提高開關速度。
推完放大器的輸出級又兩個“臂”(兩組放大原件),一個“臂”的電流增加時,另一個“臂”的電流則減小,二者的狀態輪流轉換。對負載而言,一個“臂”在推,另一個“臂”在拉,共同完成電流輸出任務。

開漏輸出

開漏輸出就是不輸出電壓, 低電平時接地,高電平時不接地。如果外接上拉電阻,則在輸出高電平時電壓會拉到上拉電阻的電源電壓,如果開漏輸出的管腳被上拉了,那麼這個管腳將一直預設是輸出高電平的。
一般來說,開漏是用來連線不同電平的器件,匹配電平用的,因為開漏引腳不連線外部的上拉電阻時,只能輸出低電平,如果需要同時具備輸出高電平的功能,則需要接上拉電阻。這就是很好的一個優點,因為通過改變上拉電源的電壓,便可以改變傳輸電平,比如上拉電阻就可以提供TTL/CMOS電平輸出等。
這裡寫圖片描述

上圖所示為GPIO管腳在開樓輸出模式下的等效結構示意圖。開漏輸出和推輓輸出相比結構基本相同,但是開漏輸出只有下拉電晶體T1而沒有上拉電晶體。同樣,T1實際上也是多組可程式設計選擇的電晶體。開漏輸出的實際作用就是一個開關,輸出“1”時斷開,輸出“0”時連線到GND(有一定內阻)。回讀功能:讀到的仍然是輸出鎖存器的狀態,而不是外部管腳Pin的狀態。因此開漏輸出模式是不能用來輸入的。
開漏輸出的優點是IC內部僅需要很小的驅動電流就可以了,因為它主要是利用外部電路的驅動能力,這樣可以減少IC內部的驅動,並且外部需要什麼樣的電壓,就上拉到相應的電壓,需要多大的電流,也可以通過改變上拉電阻來調節電流,所以開漏輸出是一種非常靈活的一種輸出。

鉗位二極體(用於保護GPIO引腳)

GPIO內部具有鉗位保護二極體,如下圖所示。其作用是防止 外部管腳Pin輸入的電壓過高或過低。VDD正常供電是3.3V,如果從Pin輸入的訊號(假設任何輸入訊號都有一定的內阻)電壓超過VDD(假設為3.6V)+D1的導通壓降(假設為0.6V)=3.9V,此時二極體D1導通,這樣就會把多餘的電流引到VDD,而真正輸入到內部的訊號電壓不會超過3.9V。同理,乳溝才能夠Pin輸入的訊號電壓比GND還低,則由於二極體D2的作用,會把是技術如內部的訊號電壓鉗制在-0.6V左右。
這裡寫圖片描述
假設VDD=3.3V,GPIO設定在開漏模式下,外接10千歐上拉電阻連線到5V電源,在輸出“1”時我們測量發現:GPIO管腳上的電壓並不會達到5V,而是4V(3.3+0.6=3.9V)上下但是對於實際的數字邏輯通常3.5V以上就算是高電平了.
如果想進一步提高輸出電壓,一種簡單的做法是先在GPIO管腳上串聯一隻二極體,然後再接上上拉電阻。參見下圖,框內是晶片內部電路。向管腳寫“1”時,T1關閉,在Pin處得到的電壓是3.3+VD1+VD3=4.5V,電壓提升效果明顯;向管腳寫“0”時,T1導通,在Pin處得到的電壓是VD3=0.6V,為低電平。

這裡寫圖片描述

相關推薦

stm32筆記--2硬體--GPIO工作模式

高阻態 高阻態是電路的一種輸出狀態,既不是高電平也不是低電平,如果高阻態再輸入下一級電路的話,和沒接一樣。 電路分析時可以把高阻態看成開路,即輸出(輸入)電阻非常大,極限可以認為是懸空。但是理論上高阻態不是懸空,而是對地或者對電源的電阻非常大的狀態,實際應用

STM32學習 3:GPIO配置與第一個STM32實驗:LED燈閃爍

STM32學習 3:GPIO管腳配置與第一個STM32實驗:LED燈閃爍 1,GPIO管腳簡介與配置 1.1GPIO框圖 1.2GPIO不同模式 1.3 GPIO暫存器 1.4 GPIO庫函式配置 2,LED燈閃爍實

老男孩教育每日一題-第83天-binlog是什麽?記錄的什麽?有工作模式及企業應用場景

mysql binlog 每日一題 參考答案含義binlog:是用於記錄所有更新了數據的操作語句,語句以事件的形式保存,它描述數據的更改過程作用:用於實時備份數據,數據庫的主從復制log_bin 打開記錄binlog功能binlog的查看mysqlbinlog /home/mysql/binlog

32位ARM處理器的工作模式工作狀態

ARM處理器工作模式一共有 7 種 : USR  模式     正常使用者模式,程式正常執行模式 FIQ模式(Fast Interrupt Request)      處理快速中斷,支援高速資料傳送或通道處理 IRQ

RabbitMQ的工作模式

maven: <dependencies> <!-- RabbitMQ的客戶端 --> <dependency> <groupId>com.rabb

arm的工作模式

ARM的兩種工作狀態:ARM狀態:   32位的字對齊,執行ARM指令Thumb狀態:16位的半字對齊的Thumb指令注:CPU在兩種狀態中切換時並不影響CPU的工作模式和相應的暫存器中的內容,thumb狀態下只能訪問r0~r7,cpsr,lr,sp,和pc暫存器。ARM

由淺入深瞭解Thrift(三)——Thrift server端的工作模式分析

http://blog.csdn.net/houjixin/article/details/42779915 五、  Thrift伺服器端幾種工作模式分析與總結 Thrift為伺服器端提供了多種工作模式,本文中將涉及以下5中工作模式:TSimpleServer、T

Linux 核心裝置驅動之GPIO驅動之GPIO 新增

在配置CONFIG_OF_GPIO下作用: int of_gpiochip_add(struct gpio_chip *chip) {  int status; if ((!chip->of_node) && (chip->parent))

今天在弄openwrt gpio輸出

     結果是:              export       gpiochip0gpiochip32   unexport         gpio44gpiochip127gpiochip64      可以看到,該目錄下多了一個名為 gpio44的目錄。 進入這個目錄即可對GPIO44口進行操

arm gpio複用功能配置

gpio管腳除了輸入、輸出,還有其他複用功能(如作為nandflash、i2c、spi、lcd....),具體配置如下:1. gpio管腳功能配置p2732. 管腳輸入、輸出配置3. 管腳資料輸入、輸出4. 管腳中斷配置

[學習筆記]組合數取模的求法

一、引入 給定 n n n ,

STM32GPIO的8工作模式 轉載

有關推輓輸出、開漏輸出、複用開漏輸出、複用推輓輸出,以及上拉輸入、下拉輸入、浮空輸入、模擬輸入的區別 最近在看資料手冊的時候,發現在Cortex-M3裡,對於GPIO的配置種類有8種之多: (1)GPIO_Mode_AIN 模擬輸入  (2)GPIO_Mode_IN_FL

STM32 GPIO的8工作模式及相關配置暫存器

GPIO八種工作模式四種輸入: GPIO_Mode_IPU(上拉輸入) GPIO_Mode_IPD(下拉輸入) 原理: 經過上拉開關和下拉開關的連線,再經過觸發器轉化為0,1的數字訊號,儲存到資料暫存器中,然後我們就可以通過配置暫存器CRL,CRH控制這兩個開關。 用法: 若

安裝Python-3.5.2過程中常見的錯誤

1.Ignoring ensurepip failure: pip-8.1.1 requires SSL/TLS 錯誤詳細: Last 10 log lines: (cd /home/dabney/.pyenv/versions/3.5.2/share/man/man1;

關於STM32輸入模式以及外部中斷的配置

最近做畢業設計,需要用按鍵來觸發外部中斷。實驗的時候是正常的,但是換了個核心板以及用上自己做的PCB電路板後,出現了一些問題。問題如下: 要求:將連線按鍵的IO口配置為上拉輸入,按鍵一端接IO口,一端接地,即當按鍵按下後,該IO口會產生一個下降沿,觸發下降沿中斷。 問題:將

STM32GPIO的8工作模式

在STM32中選用IO模式    1、浮空輸入GPIO_IN_FLOATING ——浮空輸入,可以做KEY識別,RX1    2、帶上拉輸入GPIO_IPU——IO內部上拉電阻輸入    3、帶下拉輸入GPIO_IPD—— IO內部下拉電阻輸入    4、模擬輸入GPIO_AIN ——應用ADC模擬輸入,或者

Kubernetes-5-2:Harbor倉庫的高可用方案與搭建

高可用Harbor搭建  思路及介紹 Harbor官方有推出主從架構和雙主架構來實現Harbor的高可用及資料備份。   一、主從架構:  說白了,就是往一臺Harbor倉庫中push映象,然後再通過這臺Harbor分散下發至所有的從Harbor,類似下圖: 這個方法保證了資

Java開發web的開發模式

調度 開發模式 process 模板 spring 程序 校驗 透明 class Java開發web的幾種開發模式 Java Web開發方案有多種可供選擇,這裏列舉一些經典的開發模式進行橫向比較,為Java Web的開發模式選擇提供參考。除此之外還有好多方案(如Tape

java常見的設計模式

設計模式 單例 餓漢式 懶漢式 設計模式 1、概述 1)設計模式(Design pattern):是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結; 2)分類: 創建型模式(創建對象的): 單例模式、抽象工廠模式、建造者模式、工廠模式、原型模式。 行為型模式(對象

iOS 開發中的設計模式

設計模式 開發 模式 ios 設計 iOS 開發中的幾種設計模式