- 前言 -
開發(fā)中經(jīng)常用到串口通訊,串即串行,顧名思義,是指數(shù)據(jù)在一根數(shù)據(jù)線上按照二進(jìn)制的數(shù)位,從低到高位一位一位的傳輸。單片機(jī)中的串口有UART,USART。
UART/USART 在許多 DIY 電子項(xiàng)目中用于將 GPS 模塊、藍(lán)牙模塊、 RFID 讀卡器模塊等連接到Raspberry Pi、Arduino 或其他微控制器。
- UART -
UART介紹:
我們今天要介紹的UART,全稱Universal Asynchronous
Receiver/Transmitter,通用異步收發(fā)傳輸器。使用TTL電平信號(hào),和電腦的COM口(遵循RS-232)不同。它們之間不能直接通訊,需要在之間加入轉(zhuǎn)換器(如MAX232)。
Tips:
采用二進(jìn)制來表示數(shù)據(jù)時(shí):
TTL(晶體管-晶體管邏輯電平)電平信號(hào)規(guī)定,+5V等價(jià)于邏輯“1”,0V等價(jià)于邏輯“0”。
RS-232規(guī)定邏輯“1”的電平為-5V~-15 V,邏輯“0”的電平為+5 V~+15 V
UART工作原理:
和其它串口一樣,數(shù)據(jù)按照二進(jìn)制從低位到高位一位一位的傳輸,能將要傳輸?shù)臄?shù)據(jù)在串行通信與并行通信之間加以轉(zhuǎn)換,能夠靈活地與外部設(shè)備進(jìn)行全雙工數(shù)據(jù)交換。例如要傳輸一個(gè)字節(jié)的數(shù)據(jù)10001110,它是從低位0開始,一位一位的傳輸過去。
在 UART 通信中,兩個(gè) UART 直接相互通信。發(fā)送端將來自控制設(shè)備(如 CPU)的并行數(shù)據(jù)轉(zhuǎn)換為串行形式,接著將其串行傳輸?shù)浇邮斩耍缓蠼邮斩藢⒋袛?shù)據(jù)轉(zhuǎn)換回并行數(shù)據(jù)以供接收設(shè)備使用。
數(shù)據(jù)從一個(gè)UART的發(fā)送引腳(Tx) 流向另一個(gè)UART的接收(Rx) 引腳:
UART通訊分類:
單工:UART只用Tx或Rx其中一根線進(jìn)行通訊,也就是只作接收或發(fā)送;
半雙工:UART在同一時(shí)間,只用作發(fā)送或接收;
全雙工:UART在發(fā)送的同時(shí),也可以接收;
UART波特率:
UART的波特率是指每秒傳輸?shù)亩M(jìn)制位數(shù)(單位bps),比如9600bps,意思就是每秒鐘可以傳輸9600個(gè)位(bit)。
例如:設(shè)字符傳輸?shù)乃俾蕿?20字符/秒,而每1個(gè)字符為10位(bit),那么傳送的波特率為:10位/字符 * 120 字符/秒 = 1200 /秒 = 1200bps。那么每1位二進(jìn)制位(bit)的傳送時(shí)間:
T = 1/1200 = 0.833ms
UART要求發(fā)送與接收兩個(gè)UART的波特率配置相同。如果發(fā)送與接收波特率不同,相差很大,接收端采樣點(diǎn)跨過多個(gè)電平,造成接收丟失,或者造成波特率不匹配,接收失敗,如下圖:
常見的波特率有9600、115200、128000、256000等。
- 通訊 -
通訊過程:
UART屬于異步傳輸數(shù)據(jù),這意味著沒有時(shí)鐘信號(hào)將發(fā)送的位輸出與接收的位采樣同步,也就是發(fā)送與接收使用各自的時(shí)鐘。發(fā)送端將開始和停止位添加到傳輸?shù)臄?shù)據(jù)幀中,通過數(shù)據(jù)幀中定義的開始位和結(jié)束位,接收端知道何時(shí)開始讀取這些位。
每個(gè)數(shù)據(jù)幀包含 1 個(gè)起始位、5 到 9 個(gè)數(shù)據(jù)位(取決于 UART的設(shè)置,如果有奇偶校驗(yàn)位是5到8,沒有則是5到9)、一個(gè)可選的奇偶校驗(yàn)位和 1 個(gè)或 2 個(gè)停止位:
起始位:UART 數(shù)據(jù)傳輸線在不傳輸數(shù)據(jù)時(shí)通常保持在高電平。要開始發(fā)送數(shù)據(jù)時(shí),發(fā)送端UART先在一個(gè)時(shí)鐘周期內(nèi)將傳輸線從高電平拉到低電平。當(dāng)接收端UART 檢測(cè)到從高到低的電壓轉(zhuǎn)換時(shí),它開始以設(shè)置好的波特率的頻率讀取數(shù)據(jù)幀中的位。
數(shù)據(jù):數(shù)據(jù)幀包含正在傳輸?shù)膶?shí)際數(shù)據(jù)。如果使用奇偶校驗(yàn)位,它可以是 5 位到 8 位。如果不使用奇偶校驗(yàn)位,則數(shù)據(jù)幀可以是 9 位。在大多數(shù)情況下,首先發(fā)送的數(shù)據(jù)是最低有效位。
校驗(yàn):奇偶校驗(yàn)位是接收端UART 判斷數(shù)據(jù)在傳輸過程中是否發(fā)生變化的一種方式。位會(huì)因電磁輻射、不匹配的波特率或長(zhǎng)距離數(shù)據(jù)傳輸而發(fā)生改變。接收端 UART 讀取數(shù)據(jù)幀后,檢查數(shù)據(jù)部分值為1的個(gè)數(shù)是奇數(shù)還是偶數(shù)。當(dāng)奇偶校驗(yàn)位與數(shù)據(jù)匹配時(shí),UART 知道傳輸沒有錯(cuò)誤。
停止:發(fā)送端UART 將數(shù)據(jù)傳輸線從低電平拉到高電平持續(xù)至少兩個(gè)位的時(shí)間來表示整個(gè)數(shù)據(jù)包的傳輸已經(jīng)結(jié)束。
發(fā)送接收過程:
1.UART 從數(shù)據(jù)總線并行接收數(shù)據(jù):
2.發(fā)送 UART 將起始位、奇偶校驗(yàn)位和停止位添加到數(shù)據(jù)幀:
3.整個(gè)數(shù)據(jù)包從發(fā)送 UART 串行發(fā)送到接收 UART。接收 UART 以預(yù)配置的波特率對(duì)數(shù)據(jù)線進(jìn)行采樣:
4.接收 UART 丟棄數(shù)據(jù)幀中的起始位、奇偶校驗(yàn)位和停止位:
5.接收端 UART 將串行數(shù)據(jù)轉(zhuǎn)換回并行,并將其傳輸?shù)浇邮斩说臄?shù)據(jù)總線:
-
微控制器
+關(guān)注
關(guān)注
48文章
7953瀏覽量
155100 -
單片機(jī)
+關(guān)注
關(guān)注
6067文章
44992瀏覽量
650558 -
串口通訊
+關(guān)注
關(guān)注
1文章
265瀏覽量
25553 -
UART接口
+關(guān)注
關(guān)注
0文章
124瀏覽量
15877 -
RFID讀卡器
+關(guān)注
關(guān)注
0文章
58瀏覽量
11765
發(fā)布評(píng)論請(qǐng)先 登錄
UART通訊過程詳解

通過中斷的方式進(jìn)行UART的通訊
如何實(shí)現(xiàn)基于STM32F103ZET6的UART通訊?
鉅泉(HiTrendtech) HT7017,現(xiàn)貨 UART 通訊接口的高精度單相多功能計(jì)量芯片
關(guān)于485通訊轉(zhuǎn)UART通訊
uart通訊問題求助
AB32VG1之UART通訊相關(guān)資料分享
使用ISP Uart為L(zhǎng)PC5528 CFPA和CMPA編程流程,IC沒有響應(yīng),Uart通訊失敗的原因?
ARM中基于DMA的高效UART通訊及其應(yīng)用

msp430 UART 通訊寄存器的詳細(xì)解讀
UART通訊模塊介紹
振弦采集模塊UART 通訊協(xié)議

HT7017 是一顆帶 UART 通訊接口的高精度單相多功能計(jì)量芯片

評(píng)論