Arduino 序列通訊中的波特率

Yousef Zahid 2021年6月28日
Arduino 序列通訊中的波特率

如果理解基本概念並具有邏輯實現的訣竅,Arduino 編碼就非常簡單。本文討論的這個概念將與波特率有關。大多數新手 Arduino 編碼器對其所有程式和功能使用特定的波特率值,但不知道為什麼使用值 9600 而不是另一個數字。這個值的特殊之處是什麼,波特率的實際用途是什麼?

波特率只是每秒訊號或符號變化的速率。僅從定義上很難理解。更直觀的解釋會更好。

波特率類比

讓我們考慮圖 1 中的條形圖。假設每個塊的週期為 1 秒。隨著週期即將結束,條形圖的值會發生突然變化。對於第一個柱,它的值突然增加。這種每秒的變化稱為波特率,在這種特殊情況下波特率為 1。訊號每秒變化一次。

波特率類比

對於這個新圖表,請考慮訊號在 2 月之前變化兩次的 1 月份:這表示波特率為 2。這也意味著一個埠每秒最多可以傳輸大約 2 位。如果波特率增加超過 76800 單位,則需要減少電線長度以獲得最佳效能。

波特率和位元率之間存在細微差別。位元率是每秒位元的傳輸速率,而波特率是每秒訊號或符號的變化。位元率可以大於波特率,但反之則不然。波特率與電子產品有關,尤其是涉及 Arduino 開發板的 DIY 專案。

要將其用作 C++ 程式設計中的全域性函式,我們需要使用 #define BAUDRATE 分配一個預期值以供稍後使用。如果你想以更快的速度傳送和接收資料,那麼你必須相應地增加這個值;然而,對於微控制器,典型值為 9600

現在選擇標準取決於很多因素。首先,如果要提高位元率,必須提高波特率。

過取樣標準必須符合波特率;即使可以將過取樣率從 16X 更改為 8X,反之亦然,這需要嚴格的容差時鐘,但仍可能存在錯誤。降低速率會增加錯誤,並且起始位邊沿可能與接收到的位邊沿不匹配。

相關文章 - Arduino Serial