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