華大電子MCU-CIU32F011x3通用輸入輸出
11. 通用輸入輸出(gpio)
11.1. 模塊介紹
每組 gpio 端口有四個 32 位配置寄存器(gpiox_mode,gpiox_otype, gpiox_ospeed and gpiox_pupd),兩個 32 位數據寄存器(gpiox_idat and gpiox_odat),一個 32 位置位/復位寄存器(gpiox_bsr)和一個 32 位翻轉寄存器(gpiox_tgl)。另外,所有 gpio 有兩個復用功能選擇寄存器(gpiox_afrh and gpiox_afrl)。
注:gpiox 中的 x 表示 gpio 組數。
11.2. 功能特點
• 輸出狀態:推挽或開漏(上下拉)
• 輸出寄存器狀態值(gpiox_odat) 或者復用功能輸出
• 輸入狀態:浮空、上下拉、模擬
• 輸入數據到數據寄存器(gpiox_idat) 或復用功能輸入
• 獨立置位/復位/翻轉 io 狀態(gpiox_ bsr、gpiox_tgl)
• 模擬功能
• 復用功能(開漏或推挽、上拉或下拉)
11.3. 功能說明
gpio 的每一個端口可以通過軟件獨立配置成下面狀態
• 輸入浮空
• 輸入上拉
• 輸入下拉
• 模擬功能
• 開漏輸出(上拉或下拉)
• 推挽輸出
• 復用功能(開漏或推挽、上拉或下拉)
11.3.1. 通用 io(gpio)
復位期間和剛復位后,復用功能未開啟,io 端口被配置成浮空輸入模式。
當作為輸出配置時,寫到輸出數據寄存器上的值(gpiox_ odat)輸出到相應的 io 引腳??梢砸酝仆旎蜷_漏模式使用輸出驅動器。
輸入數據寄存器(gpiox_ idat)在每個 apb 時鐘周期捕捉 io 引腳上的數據。所有 gpio 引腳有一個內部弱上拉,當配置為輸入時,它們可以被激活也可以被斷開。
11.3.2. 單獨的位操作
當對 gpiox_ odat 的個別位編程時,軟件不需要禁止中斷:在單次 apb 寫操作里,可以只更改一個或多個位。只需要通過對“置位/復位寄存器”(gpiox_bsr)或“取反寄存器”(gpiox_tgl)中想要更改的位寫“1”來實現。沒被選擇的位將不被更改。
11.3.3. 復用功能(af)
芯片 io 引腳通過多路選擇器連接到片內外設,每個 io 上同一時刻只能選通一個復用功能。每個 io引腳有一個 2 輸入的多路選擇器連接到復用功能(af0~af1),通過配置 gpiox_afrh/l 選擇功能。如果把端口配置成復用輸出功能,則引腳和輸出寄存器斷開,并和片上外設的輸出信號連接。如果軟件把一個 gpio 腳配置成復用輸出功能,但是外設沒有被激活,它的輸出將不確定。
11.3.4. 輸入配置
當 io 端口配置為輸入時
• 輸出緩存器被禁止
• 施密特觸發輸入被激活
• 根據輸入配置(上拉、下拉或浮空)的不同,弱上拉和下拉電阻被連接
• 出現在 io 腳上的數據在每個 apb 時鐘被采樣到輸入數據寄存器
• 對輸入數據寄存器的讀訪問可得到 io 狀態
11.3.5. 輸出配置
當 io 端口被配置為輸出時
• 輸出緩沖器被激活
開漏模式:輸出寄存器上的“0”激活 n-mos,而輸出寄存器上的“1”將端口置于高阻態(p-mos 從不被激活)推挽模式:輸出寄存器上的“0”激活 n-mos,而輸出寄存器上的“1”將激活 p-mos。
• 施密特觸發輸入被激活
• 弱上拉和下拉電阻被禁止
• 出現在 io 腳上的數據在每個 apb 時鐘被采樣到輸入數據寄存器
• 在開漏模式時,對輸入數據寄存器的讀訪問可得到 io 狀態
• 在推挽模式時,對輸出數據寄存器的讀訪問得到一次寫的值
11.3.6. 模擬輸入配置
當 io 端口被配置為模擬輸入配置時
• 輸出緩存器被禁止
• 禁止施密特觸發輸入,實現了每個模擬 io 引腳上的零消耗。施密特觸發輸出值被強制為“0”
• 弱上拉和下拉電阻被禁止
• 讀取輸入數據寄存器時數值為“0”
11.3.7. 復用功能配置
對 io 端口進行編程作為復用功能時
• 在開漏或推挽式配置中,輸出緩沖器被打開
• 內置外設的信號驅動輸出緩沖器 (復用功能輸出)
• 施密特觸發輸入被激活
• 弱上拉和下拉電阻被禁止
• 在每個 apb 時鐘周期,出現在 io 腳上的數據被采樣到輸入數據寄存器
• 開漏模式時,讀輸入數據寄存器時可得到 io 口狀態
• 在推挽模式時,讀輸出數據寄存器時可得到一次寫的值
沈陽芯碩科技有限公司是華大電子專業代理商,有技術問題可咨詢芯虎論壇