1. 程式人生 > 其它 >UART串列埠通訊協議

UART串列埠通訊協議

一、UART簡介

  UART(universal asynchronous receiver-transmitter)是一種採用非同步序列通訊方式的通用非同步收發傳輸器。一般來說,UART總是和RS232成對出現,那RS232又是什麼呢? RS232也就是我們計算機上的串列埠,它的全稱是EIA-RS-232C (簡稱232,或者是RS232 )。其中EIA(Electronic Industry Association)代表美國電子工業協會,RS是Recommended Standard的縮寫,代表推薦標準,232 是識別符號,C表示修改次數,它被廣泛用於計算機序列介面外設連線。如果你的計算機上還有串列埠的話,那麼你就可以在主機箱後面看到RS232的介面:

  隨著時代的發展,這種藉口已經很少用了,取而代之的是“USB轉串列埠”,功能和原先一樣,但介面更高效了。

  串列埠的主要功能為:在傳送資料時將並行資料轉換成序列資料進行傳輸,在接收資料時將接收到的序列資料轉換成並行資料。這應該是大多數人接觸電子後學習到的第一個通訊協議吧。

串列埠引數(通訊雙方約定好)

  • 波特率:傳送和接收一個bit都有固定的速率—9600bps 19200bps 38400bps 57600bps 115200bps。
  • 起始位:先發出一個邏輯”0”的訊號,表示傳輸資料的開始。
  • 資料位:可以是5~8位邏輯”0”或”1”。如ASCII碼(7位),擴充套件BCD碼(8位)。小端傳輸。
  • 校驗位:資料位加上這一位後,使得“1”的位數應為偶數(偶校驗)或奇數(奇校驗),以此來校驗資料傳送的正確性。
  • 停止位:它是一個字元資料的結束標誌。

二、通訊格式

  下面來說說串列埠的具體要點:

1.傳輸時序

  UART串列埠通訊需要兩個訊號線來實現,一根用於串列埠傳送,另外一根負責串列埠接收。一開始高電平,然後拉低表示開始位,接著8個數據位,然後校驗位,最後拉高表示停止位,並且進入空閒狀態,等待下一次的資料傳輸。

  很多時候我們的校驗位是允許省略的,所以協議就變成了:開始+資料+停止。

2.傳輸速率:波特率

  串列埠通訊的速率用波特率表示,它表示麥苗傳輸二進位制資料的位數,單位是bps(位/秒)。常用的波特率有9600、19200、35400、57600以及115200等。

  FPGA開發串列埠時,設計波特率的方法:FPGA的時鐘頻率/波特率。例如我的FPGA開發板時鐘頻率為50Mhz,即50_000_000hz,我想使用的波特率為9600bps,因此我需要的計數為:50000000/9600≈5208。

-----------------------------------------------------------------

原文有verilog編寫FPGA的UART串列埠通訊協議程式碼:https://www.cnblogs.com/xianyufpga/p/11086676.html