stm32學習筆記之GPIO功能框圖分析

  GPIO 是通用輸入輸出端口的簡稱,簡單來講就是STM32 可控制的引腳,STM32 芯片的GPIO 引腳與外部設備鏈接起來,從而實現與外部通信、控制以及數據採集的功能。STM32 芯片的GPIO被分紅不少組,每組有16 個引腳,如型號爲STM32F103VET6 型號的芯片有GPIOA、GPIOB、GPIOC 至GPIOE 共5 組GPIO,芯片一共100 個引腳,其中GPIO就佔了一大部分,全部的GPIO引腳都有基本的輸入輸出功能。html

  最基本的輸出功能是由STM32 控制引腳輸出高、低電平,實現開關控制,如把GPIO引腳接入到LED 燈,那就能夠控制LED 燈的亮滅,引腳接入到繼電器或三極管,那就能夠經過繼電器或三極管控制外部大功率電路的通斷。最基本的輸入功能是檢測外部輸入電平,如把GPIO 引腳鏈接到按鍵,經過電平高低區分按鍵是否被按下。編程

  GPIO 框圖剖析學習

  

 

  經過GPIO 硬件結構框圖,就能夠從總體上深刻了解GPIO 外設及它的各類應用模式。該圖從最右端看起,最右端就是表明STM32 芯片引出的GPIO 引腳,其他部件都位於芯片內部。ui

  基本結構分析職業規劃

  下面咱們按圖中的編號對GPIO端口的結構部件進行說明。3d

  1. 保護二極管及上、下拉電阻視頻

  引腳的兩個保護二級管能夠防止引腳外部太高或太低的電壓輸入,當引腳電壓高於VDD 時,上方的二極管導通,當引腳電壓低於VSS 時,下方的二極管導通,防止不正常電壓引入芯片致使芯片燒燬。儘管有這樣的保護,並不意味着STM32 的引腳能直接外接大功率驅動器件,如直接驅動電機,強制驅動要麼電機不轉,要麼致使芯片燒壞,必需要加大功率及隔離電路驅動。htm

  2. P-MOS 管和N-MOS 管blog

  GPIO 引腳線路通過兩個保護二極管後,向上流向「輸入模式」結構,向下流向「輸出模式」結構。先看輸出模式部分,線路通過一個由P-MOS 和N-MOS 管組成的單元電路。這個結構使GPIO具備了「推輓輸出」和「開漏輸出」兩種模式。get

  所謂的推輓輸出模式,是根據這兩個MOS 管的工做方式來命名的。在該結構中輸入高電平時,通過反向後,上方的P-MOS 導通,下方的N-MOS 關閉,對外輸出高電平;而在該結構中輸入低電平時,通過反向後,N-MOS 管導通,P-MOS 關閉,對外輸出低電平。當引腳高低電平切換時,兩個管子輪流導通,P 管負責灌電流,N 管負責拉電流,使其負載能力和開關速度都比普通的方式有很大的提升。推輓輸出的低電平爲0 伏,高電平爲3.3伏,它是推輓輸出模式時的等效電路。

  

 

  而在開漏輸出模式時,上方的P-MOS 管徹底不工做。若是咱們控制輸出爲0,低電平,則P-MOS 管關閉,N-MOS 管導通,使輸出接地,若控制輸出爲1 (它沒法直接輸出高電平)時,則P-MOS 管和N-MOS 管都關閉,因此引腳既不輸出高電平,也不輸出低電平,爲高阻態。爲正常使用時必須外部接上拉電阻。它具備「線與」特性,也就是說,如有不少個開漏模式引腳鏈接到一塊兒時,只有當全部引腳都輸出高阻態,才由上拉電阻提供高電平,此高電平的電壓爲外部上拉電阻所接的電源的電壓。若其中一個引腳爲低電平,那線路就至關於短路接地,使得整條線路都爲低電平,0 伏。

  推輓輸出模式通常應用在輸出電平爲0 和3.3 伏並且須要高速切換開關狀態的場合。在STM32 的應用中,除了必須用開漏模式的場合,咱們都習慣使用推輓輸出模式。

  開漏輸出通常應用在I2C、SMBUS 通信等須要「線與」功能的總線電路中。除此以外,還用在電平不匹配的場合,如須要輸出5 伏的高電平,就能夠在外部接一個上拉電阻,上拉電源爲5 伏,而且把GPIO 設置爲開漏模式,當輸出高阻態時,由上拉電阻和電源向外輸出5 伏的電平。

  

 

  

 

  3. 輸出數據寄存器

  前面提到的雙MOS 管結構電路的輸入信號, 是由GPIO「 輸出數據寄存器GPIOx_ODR」提供的,所以咱們經過修改輸出數據寄存器的值就能夠修改GPIO 引腳的輸出電平。而「置位/復位寄存器GPIOx_BSRR」能夠經過修改輸出數據寄存器的值從而影響電路的輸出。

  4. 複用功能輸出

  「複用功能輸出」中的「複用」是指STM32 的其它片上外設對GPIO 引腳進行控制,此時GPIO 引腳用做該外設功能的一部分,算是第二用途。從其它外設引出來的「複用功能輸出信號」與GPIO自己的數據據寄存器都鏈接到雙MOS 管結構的輸入中,經過圖中的梯形結構做爲開關切換選擇。

  例如咱們使用USART 串口通信時,須要用到某個GPIO引腳做爲通信發送引腳,這個時候就能夠把該GPIO引腳配置成USART 串口複用功能,由串口外設控制該引腳,發送數據。

  1 // GPIOB 16 個IO 所有輸出 0XFF

  2 GPIOB->ODR = 0XFF;

  5. 輸入數據寄存器

  看GPIO 結構框圖的上半部分,GPIO 引腳通過內部的上、下拉電阻,能夠配置成上/下拉輸入,而後再鏈接到施密特觸發器,信號通過觸發器後,模擬信號轉化爲0、1 的數字信號,而後存儲在「輸入數據寄存器GPIOx_IDR」中,經過讀取該寄存器就能夠了解GPIO引腳的電平狀態。

  1 // 讀取GPIOB 端口的16 位數據值2uint16_ttemp;3 temp = GPIOB->IDR;

  6. 複用功能輸入

  與「複用功能輸出」模式相似,在「複用功能輸入模式」時,GPIO引腳的信號傳輸到

  STM32 其它片上外設,由該外設讀取引腳狀態。

  一樣,如咱們使用USART 串口通信時,須要用到某個GPIO引腳做爲通信接收引腳,這個時候就能夠把該GPIO 引腳配置成USART 串口複用功能,使USART 能夠經過該通信引腳的接收遠端數據。

  7. 模擬輸入輸出

  當GPIO 引腳用於ADC 採集電壓的輸入通道時,用做「模擬輸入」功能,此時信號是不通過施密特觸發器的,由於通過施密特觸發器後信號只有0、1 兩種狀態,因此ADC 外設要採集到原始的模擬信號,信號源輸入必須在施密特觸發器以前。相似地,當GPIO 引腳用於DAC 做爲模擬電壓輸出通道時,此時做爲「模擬輸出」功能,DAC 的模擬信號輸出就不通過雙MOS 管結構,模擬信號直接輸出到引腳。

  GPIO 工做模式

  總結一下,由GPIO的結構決定了GPIO能夠配置成如下模式:

  

 

  (在固件庫中,GPIO總共有8 種細分的工做模式,大體歸類爲如下三類)

  1. 輸入模式(模擬/浮空/上拉/下拉)

  在輸入模式時,施密特觸發器打開,輸出被禁止,可經過輸入數據寄存器GPIOx_IDR讀取I/O 狀態。其中輸入模式,可設置爲上拉、下拉、浮空和模擬輸入四種。上拉和下拉輸入很好理解,默認的電平由上拉或者下拉決定。浮空輸入的電平是不肯定的,徹底由外部的輸入決定,通常接按鍵的時候用的是這個模式。模擬輸入則用於ADC 採集。

  2. 輸出模式(推輓/開漏)

  在輸出模式中,推輓模式時雙MOS 管以輪流方式工做,輸出數據寄存器GPIOx_ODR可控制I/O 輸出高低電平。開漏模式時,只有N-MOS 管工做,輸出數據寄存器可控制I/O輸出高阻態或低電平。輸出速度可配置,有2MHz\10MHz\50MHz 的選項。此處的輸出速度即I/O 支持的高低電平狀態最高切換頻率,支持的頻率越高,功耗越大,若是功耗要求不嚴格,把速度設置成最大便可。

  在輸出模式時施密特觸發器是打開的,即輸入可用,經過輸入數據寄存器GPIOx_IDR可讀取I/O 的實際狀態。

  3. 複用功能(推輓/開漏)

  複用功能模式中,輸出使能,輸出速度可配置,可工做在開漏及推輓模式,可是輸出信號源於其它外設,輸出數據寄存器GPIOx_ODR 無效;輸入可用,經過輸入數據寄存器可獲取I/O 實際狀態,但通常直接用外設的寄存器來獲取該數據信號。

  經過對GPIO 寄存器寫入不一樣的參數,就能夠改變GPIO 的工做模式,再強調一下,要了解具體寄存器時必定要查閱《STM32F10X-中文參考手冊》中對應外設的寄存器說明。在GPIO 外設中,控制端口高低控制寄存器CRH和CRL 能夠配置每一個GPIO的工做模式和工做的速度,每4 個位控制一個IO,CRH 控制端口的高八位,CRL 控制端口的低8 位,具體的看CRH 和CRL 的寄存器描述。

  

一些stm32相關的視頻資料

如何作好精準職業規劃
http://www.makeru.com.cn/live/4006_1429.html?s=45051
釋放潛能:學習效率提高、編程能力提高
http://www.makeru.com.cn/live/3507_1276.html?s=45051

(stm32 USART串口應用)
http://www.makeru.com.cn/live/1392_1164.html?s=45051
PWM脈寬調製技術
http://www.makeru.com.cn/live/4034_2146.html?s=45051

(stm32直流電機驅動)
http://www.makeru.com.cn/live/1392_1218.html?s=45051

相關文章
相關標籤/搜索