對GPIO埠進行復用,可以進行哪些工作模式的配置

2021-05-21 05:00:39 字數 4989 閱讀 6655

1樓:匿名使用者

輸入模式

›輸入浮空

›輸入上拉

›輸入下拉

›模擬輸入

輸出模式

›開漏輸出

›推輓式輸出

›推輓式複用功能

›開漏複用功能

怎樣檢視或設定gpio口的工作模式

2樓:深圳市新思維軟體有限責任公司

有關推輓輸出、開漏輸出、複用開漏輸出、複用推輓輸出以及上拉輸入、下拉輸入、浮空輸入、模擬輸入的區別最近在看資料手冊的時候,發現在cortex-m3裡,對於gpio的配

如何實現gpio口模式的配置

3樓:匿名使用者

一、 stm32的輸入輸出管腳有下面8種(4輸入 2輸出 2複用輸出)可能的配置:

1 浮空輸入_in_floating

2 帶上拉輸入_ipu

3 帶下拉輸入_ipd

4 模擬輸入_ain

5 開漏輸出_out_od

6 推輓輸出_out_pp

7 複用功能的推輓輸出_af_pp

8 複用功能的開漏輸出_af_od

1.1 i/o口的輸出模式下,有3種輸出速度可選(2mhz、10mhz和50mhz),這個速度是指i/o口驅動電路的響應速度而不是輸出訊號的速度,輸出訊號的速度與程式有關(晶片內部在i/o口 的輸出部分安排了多個響應速度不同的輸出驅動電路,使用者可以根據自己的需要選擇合適的驅動電路)。通過選擇速度來選擇不同的輸出驅動模組,達到最佳的噪聲控制和降低功耗的目的。

高頻的驅動電路,噪聲也高,當不需要高的輸出頻率時,請選用低頻驅動電路,這樣非常有利於提高系統的emi效能。當然如果要輸出較高頻率的訊號,但卻選用了較低頻率的驅動模組,很可能會得到失真的輸出訊號。

輸出速度又稱輸出驅動電路的響應速度,可理解為:輸出驅動電路的頻寬,即一個驅動電路可以不失真地通過訊號的最大頻率。

如果一個訊號的頻率超過了驅動電路的響應速度,就有可能訊號失真。如果訊號頻率為10mhz,而你配置了2mhz的頻寬,則10mhz的方波很可能就變成了正弦波。就好比是公路的設計時速,汽車速度低於設計時速時,可以平穩地執行,如果超過設計時速就會顛簸,甚至翻車。

關鍵是: gpio的引腳速度跟應用相匹配,速度配置越高,噪聲越大,功耗越大。

頻寬速度高的驅動器耗電大、噪聲也大,頻寬低的驅動器耗電小、噪聲也小。使用合適的驅動器可以降低功耗和噪聲。

gpio的引腳速度跟應用匹配(推薦10倍以上)。比如:

1.1.1 對於串列埠,假如最大波特率只需115.2k,那麼用2m的gpio的引腳速度就夠了,既省電也噪聲小。

1.1.2 對於i2c介面,假如使用400k波特率,若想把餘量留大些,那麼用2m的gpio的引腳速度或許不夠,這時可以選用10m的gpio引腳速度。

1.1.3 對於spi介面,假如使用18m或9m波特率,用10m的gpio的引腳速度顯然不夠了,需要選用50m的gpio的引腳速度。

1.2 gpio口設為輸入時,輸出驅動電路與埠是斷開,所以輸出速度配置無意義。

1.3 在復位期間和剛復位後,複用功能未開啟,i/o埠被配置成浮空輸入模式。

1.4 所有埠都有外部中斷能力。為了使用外部中斷線,埠必須配置成輸入模式。

1.5 gpio口的配置具有上鎖功能,當配置好gpio口後,可以通過程式鎖住配置組合,直到下次晶片復位才能解鎖。

二、gpio的翻轉速度指:輸入/輸出暫存器的0 ,1 值反映到外部引腳(apb2上)高低電平的速度.手冊上指出gpio最大翻轉速度可達18mhz。

通過簡單的程式測試,用示波器觀察到的翻轉時間是綜合的時間,包括取指令的時間、指令執行的時間、指令執行後訊號傳遞到暫存器的時間(這其中可能經過很多環節,比如ahb、apb、匯流排仲裁等),最後才是訊號從暫存器傳輸到引腳所經歷的時間。如有上拉電阻,其阻值越大,rc延時越大,即邏輯電平轉換的速度越慢,功耗越大。

三、在stm32中如何配置片內外設使用的io埠

首先,一個外設經過 1配置輸入的時鐘和 2初始化後即被啟用(開啟);3如果使用該外設的輸入輸出管腳,則需要配置相應的gpio埠(否則該外設對應的輸入輸出管腳可以做普通gpio管腳使用);4再對外設進行詳細配置。

對應到外設的輸入輸出功能有下述三種情況:

1 外設對應的管腳為輸出:需要根據外圍電路的配置選擇對應的管腳為複用功能的推輓輸出或複用功能的開漏輸出。

2 外設對應的管腳為輸入:則根據外圍電路的配置可以選擇浮空輸入、帶上拉輸入或帶下拉輸入。

3 adc對應的管腳:配置管腳為模擬輸入。

如果把埠配置成複用輸出功能,則引腳和輸出暫存器斷開,並和片上外設的輸出訊號連線。將管腳配置成複用輸出功能後,如果外設沒有被啟用,那麼它的輸出將不確定。

四、 通用io埠(gpio)初始化

4.1 gpio初始化

41.1 rcc_apb2periphclockcmd(rcc_apb2periph_gpioa | b | c, enable):使能apb2匯流排外設時鐘;

41.2 rcc_ apb2periphresetcmd (rcc_apb2periph_gpioa | b | c, disable):釋放gpio復位。

4.2 置各個pin埠(模擬輸入_ain、輸入浮空_in_floating、輸入上拉_ipu、輸入下拉_ipd、開漏輸出_out_od、推輓式輸出_out_pp、推輓式複用輸出_af_pp、開漏複用輸出_af_od)。

4.3gpio初始化完成。

五、 的gpio操作函式

uint8_t gpio_readinputdatabit(gpio_typedef* gpiox, uint16_t gpio_pin);//讀gpio某一位的輸入

uint16_t gpio_readinputdata(gpio_typedef* gpiox);//讀gpio的輸入

uint8_t gpio_readoutputdatabit(gpio_typedef* gpiox, uint16_t gpio_pin);//讀gpio某一位的輸出

uint16_t gpio_readoutputdata(gpio_typedef* gpiox);//讀gpio的輸出

void gpio_setbits(gpio_typedef* gpiox, uint16_t gpio_pin);//將gpio的某個位置位

void gpio_resetbits(gpio_typedef* gpiox, uint16_t gpio_pin);//將gpio的某個位復位

void gpio_writebit(gpio_typedef* gpiox, uint16_t gpio_pin, bitaction bitval);//寫gpio的某個位

void gpio_write(gpio_typedef* gpiox, uint16_t portval);//寫gpio

六、管腳的複用功能 重對映

1、複用功能:內建外設是與i/o口共用引出管腳(不同的功能對應同一管腳)

stm32 所有內建外設的外部引腳都是與標準gpio引腳複用的,如果有多個複用功能模組對應同一個引腳,只能使能其中之一,其它模組保持非使能狀態。

2、重對映功能:複用功能的引出腳可以通過重對映,從不同的i/o管腳引出,即複用功 能的引出腳位是可通過程式改變到其他的引腳上!

直接好處:pcb電路板的設計人員可以在需要的情況下,不必把某些訊號在板上繞一大圈完成聯接,方便了pcb的設計同時潛在地減少了訊號的交叉干擾。

如:usart1: 0: 沒有重映像(tx/pa9,rx/pa10); 1: 重映像(tx/pb6,rx/pb7)。

(參考afio_mapr暫存器介紹)[0,1為一暫存器的bit值]

【注】 下述複用功能的引出腳具有重對映功能:

- 晶體振盪器的引腳在不接晶體時,可以作為普通i/o口

- can模組; - jtag除錯介面;- 大部分定時器的引出介面; - 大部分usart引出介面

- i2c1的引出介面; - spi1的引出介面;

舉例:對於stm32f103vbt6,47引腳為pb10,它的複用功能是i2c2_scl和 usart3_tx,表示在上電之後它的預設功能為pb10,而i2c2的scl和usart3的tx為它的複用功能;另外在tim2的引腳重對映後,tim2_ch3也成為這個引腳的複用功能。

(1)要使用stm32f103vbt6的47、48腳的usart3功能,則需要配置47腳為複用推輓輸出或複用開漏輸出,配置48腳為某種輸入模式,同時使能usart3並保持i2c2的非使能狀態。

(2)使用stm32f103vbt6的47腳作為tim2_ch3,則需要對tim2進行重對映,然後再按複用功能的方式配置對應引腳。

為什麼stm32中spi的miso引腳設定成複用推輓輸出

4樓:大司命

讀取其他arm晶片(如nxp)一般很容易看出晶片的設定是否正確。不過對於stm32就容易讓人迷惑了。例如,我們在使用spi匯流排進行通訊時,可以這樣設定:

gpio_initstructure.gpio_pin = gpio_pin_4 | gpio_pin_5 |

gpio_pin_6 | gpio_pin_7;

gpio_initstructure.gpio_speed =

gpio_speed_50mhz;

gpio_initstructure.gpio_mode =

gpio_mode_af_pp;

// 複用的推輓輸出

答題是肯定的,對於stm32的這一類管腳來說(如usart_rx)即可以設定成為輸入模式,也可以設定成為複用的推輓輸出。其工作都是正常的,不過建議大家還是設定成為輸入埠的好,容易理解。

具體產生這一問題的原因是:從功能上來說,miso應該配置為輸入模式才對,但為什麼也可以配置為gpio_mode_af_pp?請看下面的gpio複用功能配置框圖。

當一個gpio埠配置為gpio_mode_af_pp是,這個埠的內部結構框圖如下:圖中可以看到,片上外設的複用功能輸出訊號會連線到輸出控制電路,然後在埠上產生輸出訊號。但是在晶片內部,miso是spi模組的輸入引腳,而不是輸出引腳,也就是說圖中的"複用功能輸出訊號"根本不存在,因此"輸出控制電路"不能對外產生輸出訊號。

如何進行資料恢復?用什麼方法最有效

如果您比較bai專業,可以用duwinhex等十六進位制磁碟編輯zhi器恢復資料。如dao果您是小白,建議使用失易得專資料恢復或者 屬recuva之類的軟體恢復,您需要恢復的檔案的語言有一定影響恢復效果。如果您需要恢復的檔案格式比較單一,可以尋找一些可以重組檔案碎片功能的恢復軟體,單從單一格式講,這...

怎樣對自己進行心理暗示怎樣對自己進行積極的心理暗示?

1 給自己一個微笑 你的微笑,首先是給自己的。當你綻開笑臉時,實際上已經在給自己一個暗示 我很快樂。微笑將驅走你的焦慮和煩悶,帶來輕鬆 愉快和自信。2 設計一個鼓勵自己的常用語。習慣用語也能塑造人的性格,這些經常使用的口頭語反反覆覆地暗示著自己,對人的心理產生著影響。一個豁達 樂觀的口頭語能讓自己在...

如何對招聘工作進行考核如何對招聘工作進行績效考核

這個只需要兩個程式一是招聘工作程式 1.各部門主管確定本部門的組織架構,向人事部提出崗位招聘需求,提供詳細的招聘計劃 職責定位及招聘相關資訊。2.人事部根據需求部門實際情況,結合公司人才儲備政策,確定招聘計劃。3.由人事部通過各種招聘渠道釋出招聘資訊。4.人事部進行搜尋和篩選工作,將符合基本條件的簡...