UART通訊,即通用異步收發傳輸器(Universal Asynchronous Receiver/Transmitter)。html
串行通訊是指利用一條傳輸線將資料一位位地順序傳送。特色是通訊線路簡單,利用簡單的線纜就可實現通訊,下降成本,適用於遠距離通訊,但傳輸速度慢的應用場合。異步
異步通訊以一個字符爲傳輸單位,通訊中兩個字符間的時間間隔多少是不固定的,然而在同一個字符中的兩個相鄰位間的時間間隔是固定的。
數據傳送速率用波特率來表示,即每秒鐘傳送的二進制位數。例如數據傳送速率爲120字符/秒,而每個字符爲10位(1個起始位,7個數據位,1個校驗位,1個結束位),則其傳送的波特率爲10×120=1200字符/秒=1200波特。spa
控制簡單,傳輸速度快。線多,長距離成本較高且同時接受困難。
3d
圖 並行通信方式htm
將數據字節分紅一位一位的行駛在一條傳輸線上進行傳輸。如圖:
blog
圖 串行通信方式同步
單工:數據傳輸僅沿一個方向,不能實現反向傳輸
半雙工:數據能夠沿兩個方向傳輸,可是須要分時
全雙工:數據能夠同時進行雙向傳輸it
奇偶校驗、代碼和校驗、循環冗餘校驗thread
PC使用的串口的電平爲RS232的九針串口,MCU使用的電平是TTL電平,要使得PC 和MCU進行通信,就須要對其電平極性轉換。原理
主要的幾款電平轉換芯片:MAX23二、MAX20二、HIN232,SIPEX320等
串行通信的速率用波特率表示,其定義爲: 每秒鐘傳送二進制代碼的位數,即1波特=1位/秒,單位bps(位/秒)
eg:每秒鐘傳送240個字符,而每一個字符格式包含10位(1起始、8數據、1中止),此時的波特率爲:
10位*240個/秒=2400bps
同步通信須要創建發送方對接收方時鐘的直接控制,是雙方達到徹底同步
通信的發送和接收設備使用各自的時鐘控制數據的發送和接收,爲使雙方收發協調,要求發送和接收的時鐘儘量一致。如圖:
圖 異步串行通訊方式
圖 UART的數據傳輸格式
異步通信以字符構成的幀爲單位進行傳輸,字符與字符之間的間隙是任意的,但每一個字符中的各位是以固定的時間傳送的。
其一幀字符信息由4部分組成:起始位、數據位、奇偶檢驗位、中止位。在單片機中的通信通常狀況下均使用這種幀格式。如圖:
先發出一個邏輯」0」信號,表示傳輸字符的開始。
能夠是5~8位邏輯」0」或」1」。如ASCII碼(7位),擴展BCD碼(8位)。小端傳輸,即低位在前高位在後
數據位加上這一位後,使得「1」的位數應爲偶數(偶校驗)或奇數(奇校驗)
它是一個字符數據的結束標誌。能夠是1位、1.5位、2位的高電平。
處於邏輯「1」狀態,表示當前線路上沒有資料傳送。
注:異步通訊是按字符傳輸的,接收設備在收到起始信號以後只要在一個字符的傳輸時間內能和發送設備保持同步就能正確接收。
下一個字符起始位的到來又使同步從新校準(依靠檢測起始位來實現發送與接收方的時鐘自同步的)
圖 連續字符的數據傳輸
串行數據的發送由發送時鐘控制。數據發送過程:把並行的數據序列送入移位寄存器,而後經過移位寄存器由發送時鐘觸發進行移位輸出,數據位的時間間隔可由發送時鐘週期來劃分。
發送時鐘、待發送的二進制數據和出如今傳輸線上的信號波形三者的關係如圖所示:
圖 串行數據發送
串行數據的接收由接收時鐘檢測,接收數據的過程:把由傳輸線送來的串行數據序列由接收時鐘做爲輸入移位寄存器的觸發脈衝,逐位打入移位寄存器,接收過程是將串行數據序列逐位打入移位寄存器,而裝配成並行數據序列的過程。
接收時鐘、接收器檢測到的的二進制數據和出如今傳輸線上的信號波形三者的關係如圖所示:
圖 串行數據接收
注:TTL是Transistor-Transistor Logic,即晶體管-晶體管邏輯的簡稱,它是計算機處理器控制的設備內部各部分之間通訊的標準技術。
TTL電平信號應用普遍,是由於其數據表示採用二進制規定,+5V等價於邏輯"1",0V等價於邏輯"0"。
數字電路中,由TTL電子元器件組成電路的電平是個電壓範圍,規定:輸出高電平>=2.4V,輸出低電平<=0.4V;輸入高電平>=2.0V,輸入低電平<=0.8V。
RS232是串口的一個標準,它有本身的電平定義:它採用負邏輯,-15V~-3V表明邏輯"1",+3V~+15V表明邏輯"0"。
圖 DB9 MAX232的鏈接
[1] 基於51的串行通信原理及協議詳解(uart) http://www.51hei.com/bbs/dpj-40281-1.html