• 資料介紹
    • 前言
    • 實現(xiàn)原理
    • 應(yīng)用示例
    • 總結(jié)
  • 資料預(yù)覽
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

LAT1315 串口DMA接收不定長數(shù)據(jù)的一種方法

03/24 09:26
455
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

LAT1315 串口DMA接收不定長數(shù)據(jù)的一種方法

472.10 KB

前言

使用串口接收不定長數(shù)據(jù)時,可以有多種方法,比如最常見的有額外使能一個定時器,在超過定時范圍未收到后續(xù)的字節(jié)時,認為此幀結(jié)束;或者利用 IDLE 中斷,當數(shù)據(jù)空閑時,自動產(chǎn)生中斷;亦或每接收到一個字節(jié)后都通過應(yīng)用程序進行一次處理。這次我們介紹另外一種方法,在 DMA 方式下利用硬件接收超時中斷(Receiver timeout interrupt)實現(xiàn)不定長數(shù)據(jù)的接收。

實現(xiàn)原理

首先,并非所有的 STM32 系列的 MCU,也并非所有的 USART/UART 外設(shè)都支持Receiver timeout (RTO)特性,具體的支持情況,可以通過對應(yīng)芯片的參考手冊去查詢。對于 MCU 的配置,可以通過 USART_RTOR 寄存器的 RTOEN 位使能接收超時功能,通過 RTO 位域配置超時時間,時間單位為傳輸一個數(shù)據(jù)位的時間(即波特率)。

應(yīng)用示例

HAL 庫已經(jīng)為我們提供了操作 RTO 相關(guān)的 API,應(yīng)用開發(fā)過程,我們直接調(diào)用即可。

總結(jié)

利用 RTO 方式接收不定長串口數(shù)據(jù),相比用定時器計時,可以節(jié)省一個硬件定時器資源,同時減少了定時器每次進入中斷處理的運行時間;相比 IDLE 的方式,可以更靈活的配置超時時間。但需注意的是,所選用的 MCU 以及所使用的 USART/UART 是否支持這個特性要確認好。

資料預(yù)覽

相關(guān)推薦