小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

GPIO內(nèi)部結(jié)構(gòu)及工作原理

 美目揚(yáng) 2018-01-14

1. STM32實(shí)物圖:

  

 2. STM32引腳分布圖:

  

  STM32F103ZET6:共144個(gè)引腳,7組IO口,每組16個(gè)IO口

  7*16=112個(gè)IO口(這7組IO口分別為GPIOA,GPIOB…GPIOG)

  例如:PGIOA包含PA0,PA1,PA2…PA15,每組16個(gè)IO口

 

二,IO口的基本結(jié)構(gòu)和工作方式

 1. STM32F1系列IO口的基本結(jié)構(gòu)()IO口內(nèi)部電路結(jié)構(gòu))

  

  右側(cè)I/O引腳部分為芯片暴露在外部的引腳

  每個(gè)引腳在數(shù)據(jù)手冊(cè)都有說(shuō)明是否支持(識(shí)別))5V電壓

 

三,PGIO的8種工作方式

 4種輸入模式

   輸入浮空

   輸入上拉

   輸入下拉

   模擬輸入

 4種輸出模式

   開(kāi)漏輸出

   開(kāi)漏復(fù)用功能

   推挽輸出

   推挽復(fù)用功能

 可配置3種最大翻轉(zhuǎn)速度

   2MHz

   10MHz

   50MHz

 

四,八種工作方式講解

?。?GPIO輸入工作模式1-輸入浮空模式

  

   1)外部通過(guò)IO口輸入電平,外部電平通過(guò)上下拉部分(浮空模式下都關(guān)閉,既無(wú)上拉也無(wú)下拉電阻)

   2)傳輸?shù)绞┟芴赜|發(fā)器(此時(shí)施密特觸發(fā)器為打開(kāi)狀態(tài))

   3)繼續(xù)傳輸?shù)捷斎霐?shù)據(jù)寄存器IDR

   4)CPU通過(guò)讀輸入數(shù)據(jù)寄存器IDR實(shí)現(xiàn)讀取外部輸入電平值

   在輸入浮空模式下可以讀取外部輸入電平

 

 2,GPIO輸入工作模式2-輸入上拉模式

  

   和輸入浮空模式相比較,不同之處在于內(nèi)部有一個(gè)上拉電阻連接到VDD(輸入上拉模式下,上拉電阻開(kāi)關(guān)接通,阻值約30-50K)

   外部輸入通過(guò)上拉電阻,施密特觸發(fā)器存入輸入數(shù)據(jù)寄存器IDR,被CPU讀取

 

 3,GPIO輸入工作模式3-輸入下拉模式

  

   和輸入浮空模式相比較,不同之處在于內(nèi)部有一個(gè)下拉電阻連接到VSS(輸入下拉模式下,下拉電阻開(kāi)關(guān)接通,阻值約30-50K)

   外部輸入通過(guò)下拉電阻,施密特觸發(fā)器存入輸入數(shù)據(jù)寄存器IDR,被CPU讀取

 

 4,GPIO輸入工作模式4-輸入模擬模式

  

   上拉和下拉部分均為關(guān)閉狀態(tài)(AD轉(zhuǎn)換-模擬量轉(zhuǎn)換為數(shù)字量)

   施密特觸發(fā)器為截止?fàn)顟B(tài)

   通過(guò)模擬輸入通道輸入到CPU

   IO口外部電壓為模擬量(電壓形式非電平形式),作為模擬輸入范圍一般為0~3.3V

 

  5,GPIO輸出工作模式1-開(kāi)漏輸出模式

  

   1,CPU寫(xiě)入位設(shè)置/清楚寄存器BSRR,映射到輸出數(shù)據(jù)寄存器ODR

   2,聯(lián)通到輸出控制電路(也就是ODR的電平)

   3,ODR電平通過(guò)輸出控制電路進(jìn)入N-MOS管

    -ODR輸出1:

    N-MOS截止,IO端口電平不會(huì)由ODR輸出決定,而由外部上拉/下拉決定

    在輸出狀態(tài)下,輸出的電平可以被讀取,數(shù)據(jù)存入輸入數(shù)據(jù)寄存器,由CPU讀取,實(shí)現(xiàn)CPU讀取輸出電平

    所以,當(dāng)N-MOS截止時(shí),如果讀取到輸出電平為1,不一定是我們輸出的1,有可能是外部上拉產(chǎn)生的1

   ?。璒DR輸出0:

    N-MOS開(kāi)啟,IO端口電平被N-MOS管拉倒VSS,使IO輸出低電平

    此時(shí)輸出的低電平同樣可以被CPU讀取到

 

  6,GPIO輸出工作模式2-開(kāi)漏復(fù)用輸出模式

  

   與開(kāi)漏輸出模式唯一的區(qū)別在于輸出控制電路之前電平的來(lái)源

    開(kāi)漏輸出模式的輸出電平是由CPU寫(xiě)入輸出數(shù)據(jù)寄存器控制的

    開(kāi)漏推挽輸出模式的輸出電平是由復(fù)用功能外設(shè)輸出決定的

   其他與開(kāi)漏輸出模式相似:

    控制電路輸出為1:N-MOS截止,IO口電平由外部上拉/下拉決定

    控制電路輸出為0:N-MOS開(kāi)啟,IO口輸出低電平

 

  7,GPIO輸出工作模式3-推挽輸出模式

  

   與開(kāi)漏輸出相比較:

    輸出控制寄存器部分相同

    輸出驅(qū)動(dòng)器部分加入了P-MOS管部分

   當(dāng)輸出控制電路輸出1時(shí):

    P-MOS管導(dǎo)通N-MOS管截止,被上拉到高電平,IO口輸出為高電平1

   當(dāng)輸出控制電路輸出0時(shí):

    P-MOS管截止N-MOS管導(dǎo)通,被下拉到低電平,IO口輸出為低電平0

   同時(shí)IO口輸出的電平可以通過(guò)輸入電路讀取

 

  8,GPIO輸出工作模式4-復(fù)用推挽輸出模式

  

  與推挽輸出模式唯一的區(qū)別在于輸出控制電路之前電平的來(lái)源

   開(kāi)漏輸出模式的輸出電平是由CPU寫(xiě)入輸出數(shù)據(jù)寄存器控制的

   開(kāi)漏推挽輸出模式的輸出電平是由復(fù)用功能外設(shè)輸出決定的

 

  9,推挽輸出和開(kāi)漏輸出的區(qū)別:

   推挽輸出:

    可以輸出強(qiáng)高/強(qiáng)低電平,可以連接數(shù)字器件

   開(kāi)漏輸出:

    只能輸出強(qiáng)低電平(高電平需要依靠外部上拉電子拉高),適合做電流型驅(qū)動(dòng),吸收電流能力較強(qiáng)(20ma之內(nèi))

 

五,STM32-IO口相關(guān)寄存器

 每組GPIO包含系列7個(gè)寄存器(7組GPIO共包含7*7=49個(gè)寄存器)

 兩個(gè)32位配置寄存器

  GPIOx_CRL 低16位

  GPIOx_CRH 高16位

 兩個(gè)32位數(shù)據(jù)寄存器

  GPIOx_IDR 輸入數(shù)據(jù)寄存器

  GPIOx_ODR 輸出數(shù)據(jù)寄存器

 一個(gè)32位置位/復(fù)位寄存器

  GPIOx_BSRR

 一個(gè)16位復(fù)位寄存器

  GPIOx_BRR

 一個(gè)32位鎖定寄存器

  GPIOx_LCKR

 

六,STM32-IO口相關(guān)寄存器講解

 1,端口配置寄存器:

  STM32每組GPIO位16個(gè)IO口,每4位控制一個(gè)IO口,所以32位控制8個(gè)IO口

  分為低16位:GPIOx_CRL和高16位:GPIOx_CRH共32位控制一組GPIO的16個(gè)IO口

  

  如圖:以端口配置寄存器低16位為例,每四位控制一個(gè)IO口(高16位同理)

  MODEx的2位 : 配置IO口輸出/輸出模式(1種輸出+3種不同速度的輸出模式)

  CNFx的2位 : 配置IO口輸入/輸出狀態(tài)下(由MODEx控制)的輸入/輸出模式

 

以GPIOA_CRL為例,配置IO口PA0 -> MODE0=00(輸入模式) CNF0=10(上拉/下拉輸入模式) 
此種配置下到底是上拉還是下拉輸入模式還需由ODR寄存器決定

 

  

  關(guān)于上拉/下拉的控制我們將在下面-數(shù)據(jù)寄存器-中介紹ODR輸出寄存器時(shí)詳細(xì)說(shuō)明

 

 2,數(shù)據(jù)寄存器(以輸入數(shù)據(jù)寄存器GPIOx_IDR為例)

  每一組IO口都具有一個(gè)GPIOx_IDR的32位寄存器(實(shí)際只使用低16位,高16位保留),即16位控制16個(gè)IO口,每一位控制一個(gè)

  

  如圖:IDR寄存器共32位,0~15位代表一組IO口16個(gè)IO當(dāng)前值

  

  這里我們已經(jīng)了解了輸入/輸出數(shù)據(jù)寄存器,現(xiàn)在說(shuō)下上面提到的問(wèn)題:

  當(dāng)IO口配置為輸入模式且配置為上拉/下拉輸入模式(即MODEx=00 CNFx=10時(shí)),ODR決定到底是上拉還是下拉

   1)當(dāng)輸出模式時(shí),ODR為輸出數(shù)據(jù)寄存器

   2)當(dāng)輸入模式時(shí),ODR用作區(qū)分當(dāng)前位輸入模式到底是上拉輸入(ODRx=0)還是下拉輸入(ODRx=1)

 

 3,端口位設(shè)置/清除寄存器(GPIOx_BSRR)

  

  BSRR寄存器作用:

   BSRR寄存器為32位寄存器,低16位BSx為設(shè)置為(1設(shè)置0不變),高16位BRx為重置位(1:清除0:不變)

   當(dāng)然,最終的目的還是通過(guò)BSRR間接設(shè)置ODR寄存器,改變IO口電平

 

 4,端口位清除寄存器(GPIOx_BRR)

  

  GPIOx_BRR寄存器作用同GPIOx_BSRR寄存器高16位

  一般我們使用BSRR低16位和BRR的低16位(STM32F4系列取消了BSRR的高16位)

 

 5,鎖存寄存器:使用較少暫不分析

 

七,端口的復(fù)用和重映射

?。?端口的復(fù)用:

  大部分IO口可復(fù)用為外部功能引腳,參考芯片數(shù)據(jù)手冊(cè)(IO口復(fù)用和重映射)

  

  例如:STM32F103ZET6的PA9和PA10引腳可復(fù)用為串口發(fā)送和接收功能引腳,也可復(fù)用為定時(shí)器1的通道2和通道3

  端口復(fù)用的作用:最大限度的利用端口資源

 

 2,端口的重映射:

  

  串口1默認(rèn)引腳是PA9,PA10可以通過(guò)配置重映射映射到PB6,PB7

  端口重映射的作用:方便布線

 

 3,STM32所有的IO口都可作為中斷輸入(51單片機(jī)只有2個(gè)端口可以作為外部中斷輸入)

 

本文轉(zhuǎn)載自 CSDN博客 BraveWangDev

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多