日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dma接收双缓存 stm32_「STM32学习笔记」USART 新特性

發布時間:2023/12/4 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dma接收双缓存 stm32_「STM32学习笔记」USART 新特性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

之前的學習筆記“SPI不夠用?USART來幫忙”一文中介紹了用如何把USART當做SPI來用的方法。此外,ST的USART還有很多新特性,沒準有你不知道的。

在此,我們整理出來以下串口新特性,供大家參考。

支持RXD和TXD管腳互換

很多時候,我們在外接RS232芯片時,很容易將RXD和TXD兩根線接反。這類低級錯誤,一般是老司機才會犯。如果大家知道USART的TXD和RXD管腳可以互換,那么在連接外設RS232芯片時,如果發生錯誤,就不必再修改硬件,只需直接在軟件中將RXD和TXD的管腳反轉過來即可修正錯誤。

參考上圖,設置SWAP位,即可將RXD和TXD管腳互換。

支持接收和發送的電平極性反轉

第二個特性是,接收和發送的電平極性是可以反轉的。通常默認串口電平是高電平為邏輯1,低電平為邏輯0;而在ST的USART中是可以將高電平設置為邏輯0,低電平設置為邏輯1的。這一特性,讓我們在一些特殊的場景下靈活使用,舉個栗子,USART外接了反相器時就可以直接使用。

在數據接收發送寄存器中,數據也是可以反轉的,原來的0變為1,原來的1變為0,這和電平極性反轉是類似。需要特別注意的是,在極性反轉的時候,起始位和結束位也都反轉了,所有的信號電平都反轉;而在數據寄存器中只反轉了數據位,其中也包含了校驗位,沒有反轉信號的起始位和結束位的極性。

參考上圖,在USART_CR2寄存器中TXINV、RXINV和DATAINV位來進行設置。

支持數據高位與低位反序發送或接收

第三個新特性,發送和接收數據時,可在寄存器中設置是先發低位還是先發高位。默認的配置都是先發送或接收低位的信號(bit 0),實際應用中,通過USART_CR2中的MSBFIRST設置后,也可以讓USART先發送或接收高位信號(bit 7/8),這一點在對數據進行反序的時候會經常用到它。

我們可以考慮這種情況,如果需要把串口接收到的數據先進行反序操作之后,再進行計算,那這個硬件的功能就可以幫助我們節省很多軟件的工作量。

USART支持DMA傳輸

最后,STM32的USART都是支持DMA的,這一點有利于做數據的連續發送和數據的緩沖接收。在某些STM32產品系列中,如STM32F4和H7系列具有專門的串口FIFO,這就可以用來做串口喚醒,先讓MCU進入到Sleep模式,當接收到一個完整的數據包,這個數據包可能是100個字節或者200個字節,之后再喚醒單片機,這樣既可以做到不丟數據又可以降低MCU的喚醒頻率。

另外,USART的接收還具有超時功能,可以人為設定一個時間,在USART的RTOR寄存器中進行設置,當串口接收的數據幀之間超過了這個設定值,就會引發一個超時中斷,串口中會有一個叫RTOF的標志位來顯示發生的超時事件,我們通過這個中斷中應用的代碼就可以知道串口的數據發生了中斷現象,近似可認為對方的數據已經發送完成。這種方式,在串口上層協議的開發中,有很多應用場景。

USART 新特性小結

  • 支持RXD和TXD管腳的互換
  • 支持管腳上的電平邏輯反轉和數據寄存器中的邏輯反轉
  • 支持數據高位與低位反序發送或接收,既可以先發送或接收低位,也可以先發送或接收高位
  • 支持接收數據的超時功能,并且每個USART都可以支持DMA傳輸

總結

以上是生活随笔為你收集整理的dma接收双缓存 stm32_「STM32学习笔记」USART 新特性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。