一、前言
串口自動波特率檢測功能(ABR)可以讓設備在進行串口通信時不用提前設置好波特率,根據對方的波特率實時更改自己的波特率,可以大大提高己方設備的兼容性。波特率檢測分爲硬件檢測和軟件檢測。
硬件檢測僅適用於具備了相關硬件的MCU,比如STM32的單片機
而軟件檢測則適用於所有的單片機。
二、硬件自動波特率檢測(以STM32來說明)
1、支持串口
STM32單片機中只有下面這幾個系列支持ABR:
而這幾個系列的單片機中,也不是所有的串口都支持ABR:
2、ABR模式
根據檢測波特率方式的不同,ABR又分爲4種模式:
三、軟件自動波特率檢測
軟件的檢測方法是:首先把RX引腳設置爲輸入捕獲模式,然後讓對方發送一個字節的數據(最好是0x7F),通過測量邊緣時間來計算波特率。
比如接收到0x7F,則會有下面的波形:
測量到兩個上升沿間的時間,除以8就可以得到一位的時間,求個倒數就是波特率了。
當然也可以把RX引腳設置爲外部中斷模式、普通輸入模式,然後用其他的定時器來計時。