STM32的功能引腳重映射和復用功能


STM32 的功能引腳重映射和復用功能

STM32 中有很多內置外設的輸入輸出引腳都具有重映射(remap)的功能,本文對一些在使用引腳重映射時所遇到的有關問題加以說明。我們知道每個內置外設都有若干個輸入輸出引腳,一般這些引腳的輸出腳位都是固定不變的,為了讓設計工程師可以更好地安排引腳的走向和功能,在STM32 中引入了外設引腳重映射的概念, 即一個外設的引腳除了具有默認的腳位外, 還可以通過設置重映射寄存器的方式,把這個外設的引腳映射到其它的腳位。下面是STM32F103xC 中有關USART3引腳的摘要片段;

 從這里可以看出, USART3_TX 的默認引出腳是PB10,USART3_RX 的默認引出腳是PB11;但經過重映射后,可以變更USART3_TX 的引出腳為PD8,變更USART3_RX 的引出腳為PD9。STM32 中的很多內置外設都具有重映射的功能, 比如USART、定時器、CAN、SPI、I2C 等,詳細請看STM32 參考手冊(RM0008) 和STM32 數據手冊。

有些模塊(內置外設)的重映射功能還可以有多種選擇,下面是RM0008 上有關USART3輸入輸出引腳的重映射功能表:

 從這個表中可以看出, USART3 的TX 和RX 引腳默認的引出腳位是PB10和PB11,根據配置位的設置,可以重映射到PC10和PC11,還可以重映射到PD8和PD9。

一個模塊的功能引腳不管是從默認的腳位引出還是從重映射的腳位引出, 都要通過GPIO 端口模塊實現,相應的GPIO 端口必須配置為輸入(對應模塊的輸入功能,如USART 的RX)或復用輸出(對應模塊的輸出功能, 如USART 的TX) ,對於輸出引腳, 可以按照需要配置為推挽復用輸出或開漏復用輸出。

 上圖是STM32 的GPIO 端口模塊,使用復用功能時的配置。從圖中可以看出,配置為復用輸出時,該端口對應的GPIO 輸出功能將不起作用。例如當配置PB10對應的引腳為復用輸出功能時,操作PB10對應的輸出寄存器將不影響引腳上的信號。從圖中還可以看出, 普通的GPIO 端口輸入功能與復用的輸入功能的配置方式沒有分別, 這意味着在使用引腳的復用輸入功能時, 可以在這個引腳的輸入寄存器上讀出引腳上的信號。例如在使能了USART3 模塊時,可以讀GPIOB_IDR 寄存器,得到PB11信號線上的當前狀態。

有不少引腳上配備了來自多個模塊的復用功能引出腳,例如本文第一張圖中顯示的PB10,默認復用功能就有I2C2_SCL 和USART3_TX 兩個功能, TIM2 重映射后, TIM2_CH3 也使用PB10的復用功能。在使用引腳的復用功能時, 需要注意在軟件上只可以使能一個外設模塊, 否則在引出腳上可能產生信號沖突。例如, 如果使能了USART3 模塊, 同時沒有對USART3進行重映射配置,則不可以使能I2C2模塊;同理如果需要使用I2C2 模塊,則不能使能USART3模塊。但是如果配置了USART3 的引腳重映射, USART3 的TX 和RX 信號將從PC10和PC11,或PD8和PD9引出,避開了I2C2 使用的PB10和PB11,這時就可以同時使用I2C2 模塊和USART3模塊了。

USART3 模塊共有5個信號,分別為TX 、RX、CK、CTS 和RTS,從上面給出的第二張圖中可以看出,重映射是對所有信號同時有效。這5個信號中,在使能了USART3模塊后,只有TX 和RX 是始終與對應的引出腳相連,而其它3個信號分別有獨立的控制位, 控制它們是否與外部引腳相連, 如果程序中不使用某個信號的功能,則可以關閉這個信號的功能,對應的引腳可以做為其它功能的引出腳。例如,當關閉了USART3 的CK、CTS 和RTS 功能並且沒有重映射USART3 時,PB12、PB13 和PB14可以作為通用輸入輸出端口使用,也可以作為其它模塊的復用功能引出腳。

下面這張圖是一個內部控制連接的等效示意圖, 它並不表示真正的內部連接, 但可以有效地幫助理解重映射和復用引腳的概念。圖中右邊引出的信號, 分別連接到了本文第三張圖的輸入輸出模塊。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM