第一篇博客,首先記錄一下這一個多星期來的學習內容。
UART學習之路第一篇,是UART的基本概念介紹。后續會用STM32F103的串口與PC機通信。最后使用Verilog HDL寫出串口發送模塊和接收模塊,完成仿真,在ZedBoard板上完成通信。
首先明確什么是UART,COM口,TTL,RS-232。
通用異步收發傳送器(Universal Asynchronous Receiver/Transmitter, UART)有4個管腳分別為VCC,GND,TX,RX,電平標准為TTL電平。低電平為0,高電平(3.3V)為1。左圖為UART轉USB接口。
VCC | UART的電源口,電壓為3.3V |
GND | UART的地 |
TX/TXD | UART的數據發射口 |
RX/RXD | UART的數據接收口 |
串行通訊端口(Cluster Communication Port, COM)為DB9或者DB25。電平標准為RS-232,低電平為+5~+12V,高電平為-12~-5V。電平接口的詳細定義見下圖。
擴展:
1.RS-485是將數據用負邏輯差分信號的形式傳送的。+2V~+6V表示低電平,- 6V~- 2V表示高電平;
2.芯片上的某類引腳可以被設置為UART的RX和TX口。使用杜邦線將RX和TX與外設連接起來就可以實現信息傳遞,例如控制智能液晶屏(USART HMI);
3.UART轉成COM口需要將TTL電平轉換成RS-232電平,可以用芯片MAX232實現。
4.UART轉成USB的電平需要使用PL2303芯片。
總結:
UART和COM是硬件上的接口方式,而TTL和RS-232規定了電平的標准。UART一般使用杜邦線將TX和RX與外設連接,而COM口則使用DB9與外設連接。對比兩種連接方式,杜邦線是導線直接連接,在連接端一般有卡槽用來卡緊接口,DB9自帶鎖緊螺釘,接口的扎實程度上DB9要好很多。但是杜邦線比較小巧和靈活,而DB9則要大很多。使用哪種硬件接口取決於當時的需求,而采用哪種電平標准則看從設備和主設備支持怎樣的電平。所以重點在電平標准與需求的搭配。
補充:
通用同步/異步串行接收/發送器(Universal Synchronous/Asynchronous Receiver/Transmitter, USART)可以理解為UART的升級版本,在時鍾上可以設置為同步時鍾或者異步時鍾。但在使用USART的時候一般是作為UART使用的。
波特率、比特率和奇偶校驗
1.波特率:在某通道下,每秒傳送被定義的符號(symbol)的速率。也就是每秒調制狀態變化的次數。單位是baud, symbol/s。
2.比特率:每秒傳送的比特數,單位是bit/s。
3.奇偶校驗:根據傳送的一組二進制碼中1的個數是奇數還是偶數來進行校驗,采用奇數為標准就是奇校驗,反之為偶校驗。
舉例子詳細說明:
1.波特率和比特率
定義傳送的符號為一個字節(8bit),如果每秒能傳送240個字節,則波特率為240Baud。串口的比特率為9600bit/s,則串口的波特率為9600/8=1200Baud。如果定義傳送的的符號為一個比特(1bit),如果每秒能傳送9600個bit,則波特率為9600Baud,而比特率是9600bit/s。
2.奇偶校驗
假設傳送的一組數據為1100。以奇校驗為例子,該組數據的1的個數為2個,則奇偶校驗位是0。將數據以1100 0的形式發送,在接收端接收的數據為1101 0,此時數據為1101,奇偶校驗位應該為1,而收到的奇偶校驗位是0,因此說明數據錯誤。