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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM