STM32的功能引腳重映射和復(fù)用功能
Stm32的引腳一般應(yīng)用:
本文引用地址:http://m.butianyuan.cn/article/201611/322903.htm模擬輸入_AIN ——應(yīng)用ADC模擬輸入,或者低功耗下省電。
浮空輸入_IN_FLOATING ——可以做KEY識別,RX1
開漏輸出_Out_OD——應(yīng)用于I2C總線; (STM32開漏輸出若外部不接上拉電阻只能輸出0)
STM32中有很多內(nèi)置外設(shè)的輸入輸出引腳都具有重映射(remap)的功能,本文對一些在使用引腳重映射時(shí)所遇到的有關(guān)問題加以說明。
我們知道每個(gè)內(nèi)置外設(shè)都有若干個(gè)輸入輸出引腳,一般這些引腳的輸出腳位都是固定不變的,為了讓設(shè)計(jì)工程師可以更好地安排引腳的走向和功能,在 STM32中引入了外設(shè)引腳重映射的概念,即一個(gè)外設(shè)的引腳除了具有默認(rèn)的腳位外,還可以通過設(shè)置重映射寄存器的方式,把這個(gè)外設(shè)的引腳映射到其它的腳 位。下面是STM32F103xC中有關(guān)USART3引腳的摘要片段;
從這里可以看出,USART3_TX的默認(rèn)引出腳是PB10,USART3_RX的默認(rèn)引出腳是PB11;但經(jīng)過重映射后,可以變更USART3_TX的引出腳為PD8,變更USART3_RX的引出腳為PD9。
STM32中的很多內(nèi)置外設(shè)都具有重映射的功能,比如USART、定時(shí)器、CAN、SPI、I2C等,詳細(xì)請看STM32參考手冊(RM0008)和STM32數(shù)據(jù)手冊。
有些模塊(內(nèi)置外設(shè))的重映射功能還可以有多種選擇,下面是RM0008上有關(guān)USART3輸入輸出引腳的重映射功能表:
從這個(gè)表中可以看出,USART3的TX和RX引腳默認(rèn)的引出腳位是PB10和PB11,根據(jù)配置位的設(shè)置,可以重映射到PC10和PC11,還可以重映射到PD8和PD9。
一個(gè)模塊的功能引腳不管是從默認(rèn)的腳位引出還是從重映射的腳位引出,都要通過GPIO端口模塊實(shí)現(xiàn),相應(yīng)的GPIO端口必須配置為輸入(對應(yīng)模塊的 輸入功能,如USART的RX)或復(fù)用輸出(對應(yīng)模塊的輸出功能,如USART的TX),對于輸出引腳,可以按照需要配置為推挽復(fù)用輸出或開漏復(fù)用輸出。
上圖是STM32的GPIO端口模塊,使用復(fù)用功能時(shí)的配置。從圖中可以看出,配置為復(fù)用輸出時(shí),該端口對應(yīng)的GPIO輸出功能將不起作用。例如當(dāng)配置PB10對應(yīng)的引腳為復(fù)用輸出功能時(shí),操作PB10對應(yīng)的輸出寄存器將不影響引腳上的信號。
從圖中還可以看出,普通的GPIO端口輸入功能與復(fù)用的輸入功能的配置方式?jīng)]有分別,這意味著在使用引腳的復(fù)用輸入功能時(shí),可以在這個(gè)引腳的輸入寄 存器上讀出引腳上的信號。例如在使能了USART3模塊時(shí),可以讀GPIOB_IDR寄存器,得到PB11信號線上的當(dāng)前狀態(tài)。
有不少引腳上配備了來自多個(gè)模塊的復(fù)用功能引出腳,例如本文第一張圖中顯示的PB10,默認(rèn)復(fù)用功能就有I2C2_SCL和USART3_TX兩個(gè)功能,TIM2重映射后,TIM2_CH3也使用PB10的復(fù)用功能。
在使用引腳的復(fù)用功能時(shí),需要注意在軟件上只可以使能一個(gè)外設(shè)模塊,否則在引出腳上可能產(chǎn)生信號沖突。例如,如果使能了USART3模塊,同時(shí)沒有 對USART3進(jìn)行重映射配置,則不可以使能I2C2模塊;同理如果需要使用I2C2模塊,則不能使能USART3模塊。但是如果配置了USART3的引 腳重映射,USART3的TX和RX信號將從PC10和PC11,或PD8和PD9引出,避開了I2C2使用的PB10和PB11,這時(shí)就可以同時(shí)使用 I2C2模塊和USART3模塊了。
USART3模塊共有5個(gè)信號,分別為TX、RX、CK、CTS和RTS,從上面給出的第二張圖中可以看出,重映射是對所有信號同時(shí)有效。
這5個(gè)信號中,在使能了USART3模塊后,只有TX和RX是始終與對應(yīng)的引出腳相連,而其它3個(gè)信號分別有獨(dú)立的控制位,控制它們是否與外部引腳 相連,如果程序中不使用某個(gè)信號的功能,則可以關(guān)閉這個(gè)信號的功能,對應(yīng)的引腳可以做為其它功能的引出腳。例如,當(dāng)關(guān)閉了USART3的CK、CTS和 RTS功能并且沒有重映射USART3時(shí),PB12、PB13和PB14可以作為通用輸入輸出端口使用,也可以作為其它模塊的復(fù)用功能引出腳。
下面這張圖是一個(gè)內(nèi)部控制連接的等效示意圖,它并不表示真正的內(nèi)部連接,但可以有效地幫助理解重映射和復(fù)用引腳的概念。圖中右邊引出的信號,分別連接到了本文第三張圖的輸入輸出模塊。
評論