今天給大家分享關于STM32關于UART的一些新特性,主要針對較新系列STM32(如:STM32H7、G0、G4等)的UART,可通過軟件改變Rx和Tx引腳、電平反轉、高低反序、介紹超時等。
支持RXD和TXD管腳互換
有些時候,我們在外接RS232芯片時,可能會將RXD和TXD兩根線接反。這類低級錯誤,一般是老司機才會犯。
如果大家知道USART的TXD和RXD管腳可以互換,那么在連接外設RS232芯片時,如果發(fā)生錯誤,就不必再修改硬件,只需直接在軟件中將RXD和TXD的管腳反轉過來即可修正錯誤。
參考上圖,設置SWAP位,即可將RXD和TXD管腳互換。
支持接收和發(fā)送的電平極性反轉
第二個新特性:Tx和Rx電平極性反轉。 通常默認串口電平是高電平為邏輯1,低電平為邏輯0。而在STM32的USART新特性中是可以將高電平設置為邏輯0,低電平設置為邏輯1的。 這一特性,讓我們在一些特殊的場景下靈活使用,如:USART外接了反相器時就可以直接使用。 在數據接收發(fā)送寄存器中,數據也是可以反轉的,原來的0變?yōu)?,原來的1變?yōu)?,這和電平極性反轉是類似。需要特別注意的是,在極性反轉的時候,起始位和結束位也都反轉了,所有的信號電平都反轉;而在數據寄存器中只反轉了數據位,其中也包含了校驗位,沒有反轉信號的起始位和結束位的極性。
參考上圖,在USART_CR2寄存器中TXINV、RXINV和DATAINV位來進行設置。
支持數據高位與低位反序發(fā)送或接收
第三個新特性:發(fā)送和接收數據時,可在寄存器中設置是先發(fā)低位還是先發(fā)高位。 默認的配置都是先發(fā)送或接收低位的信號(bit 0),實際應用中,通過USART_CR2中的MSBFIRST設置后,也可以讓USART先發(fā)送或接收高位信號(bit 7/8),這一點在對數據進行反序的時候會經常用到它。
我們可以考慮這種情況,如果需要把串口接收到的數據先進行反序操作之后,再進行計算,那這個硬件的功能就可以幫助我們節(jié)省很多軟件的工作量。
USART支持DMA傳輸
最后,STM32的USART都是支持DMA的,這一點有利于做數據的連續(xù)發(fā)送和數據的緩沖接收。在某些STM32產品系列中,如STM32F4和H7系列具有專門的串口FIFO,這就可以用來做串口喚醒,先讓MCU進入到Sleep模式,當接收到一個完整的數據包,這個數據包可能是100個字節(jié)或者200個字節(jié),之后再喚醒單片機,這樣既可以做到不丟數據又可以降低MCU的喚醒頻率。
另外,USART的接收還具有超時功能,可以人為設定一個時間,在USART的RTOR寄存器中進行設置,當串口接收的數據幀之間超過了這個設定值,就會引發(fā)一個超時中斷,串口中會有一個叫RTOF的標志位來顯示發(fā)生的超時事件,我們通過這個中斷中應用的代碼就可以知道串口的數據發(fā)生了中斷現象,近似可認為對方的數據已經發(fā)送完成。這種方式,在串口上層協(xié)議的開發(fā)中,有很多應用場景。
USART 新特性小結
支持RXD和TXD管腳的互換
支持管腳上的電平邏輯反轉和數據寄存器中的邏輯反轉
支持數據高位與低位反序發(fā)送或接收,既可以先發(fā)送或接收低位,也可以先發(fā)送或接收高位
支持接收數據的超時功能,并且每個USART都可以支持DMA傳輸
-
STM32
+關注
關注
2270文章
10900瀏覽量
356005 -
RS232
+關注
關注
13文章
748瀏覽量
94344 -
uart
+關注
關注
22文章
1235瀏覽量
101392
原文標題:UART的Rx和Tx引腳如何互換,電平如何反轉
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論