1. UART串口簡介
串口是“串行接口”的簡稱,即采用串行通信方式的接口。串行通信將數據字節分成一位一位的形式在一條數據線上逐個傳送,其特點是通信線路簡單,但傳輸速度較慢。
因此串口廣泛應用於嵌入式、工業控制等領域中對數據傳輸速度要求不高的場合。本實驗我們將使用FPGA開發板上的UART串口完成上位機與FPGA的通信。
串行通信分為兩種方式:同步串行通信和異步串行通信。
同步串行通信需要通信雙方在同一時鍾的控制下,同步傳輸數據;
異步串行通信是指通信雙方使用各自的時鍾控制數據的發送和接收過程。
UART是一種采用異步串行通信方式的通用異步收發傳輸器(universal asynchronous receiver-transmitter),它在發送數據時將並行數據轉換成串行數據來傳輸,在接收數據時將接收到的串行數據轉換成並行數據。
UART串口通信需要兩根信號線來實現,一根用於串口發送,另外一根負責串口接收。
UART在發送或接收過程中的一幀數據由4部分組成,起始位、數據位、奇偶校驗位和停止位,如圖所示。
其中,起始位標志着一幀數據的開始,停止位標志着一幀數據的結束,數據位是一幀數據中的有效數據。
校驗位分為奇校驗和偶校驗,用於檢驗數據在傳輸過程中是否出錯。
奇校驗時,發送方應使數據位中1的個數與校驗位中1的個數之和為奇數;
接收方在接收數據時,對1的個數進行檢查,若不為奇數,則說明數據在傳輸過程中出了差錯。
同樣,偶校驗則檢查1的個數是否為偶數。
異步串行通信數據格式
UART通信過程中的數據格式及傳輸速率是可設置的,為了正確的通信,收發雙方應約定並遵循同樣的設置。
數據位可選擇為5、6、7、8位,其中8位數據位是最常用的,在實際應用中一般都選擇8位數據位;
校驗位可選擇奇校驗、偶校驗或者無校驗位;
停止位可選擇1位(默認),1.5或2位。
串口通信的速率用波特率表示,它表示每秒傳輸二進制數據的位數,單位是bps(位/秒),常用的波特率有9600、19200、38400、57600以及115200等。
在設置好數據格式及傳輸速率之后,UART負責完成數據的串並轉換,而信號的傳輸則由外部驅動電路實現。
電信號的傳輸過程有着不同的電平標准和接口規范,針對異步串行通信的接口標准有RS232、RS422、RS485等,它們定義了接口不同的電氣特性,如RS-232是單端輸入輸出,而RS-422/485為差分輸入輸出等。
RS232接口標准出現較早,可實現全雙工工作方式,即數據發送和接收可以同時進行。
在傳輸距離較短時(不超過15m),RS232是串行通信最常用的接口標准,本章主要介紹針對RS-232標准的UART串口通信。
RS-232標准的串口最常見的接口類型為DB9,樣式如圖所示,工業控制領域中用到的工控機一般都配備多個串口,很多老式台式機也都配有串口。
但是筆記本電腦以及較新一點的台式機都沒有串口,它們一般通過USB轉串口線來實現與外部設備的串口通信。
DB9接口
USB串口線
DB9接口定義以及各引腳功能說明如下圖所示,我們一般只用到其中的2(RXD)、3(TXD)、5(GND)引腳,其他引腳在普通串口模式下一般不使用,如果大家想了解,可以自行百度下。
DB9接口定義
2. 實驗任務
上位機通過串口調試助手發送數據給FPGA,FPGA通過串口接收數據並將接收到的數據發送給上位機,完成串口數據環回。