- 前言 -
開(kāi)發(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)制來(lái)表示數(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開(kāi)始,一位一位的傳輸過(guò)去。
在 UART 通信中,兩個(gè) UART 直接相互通信。發(fā)送端將來(lái)自控制設(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)跨過(guò)多個(gè)電平,造成接收丟失,或者造成波特率不匹配,接收失敗,如下圖:
常見(jiàn)的波特率有9600、115200、128000、256000等。
- 通訊 -
通訊過(guò)程:
UART屬于異步傳輸數(shù)據(jù),這意味著沒(méi)有時(shí)鐘信號(hào)將發(fā)送的位輸出與接收的位采樣同步,也就是發(fā)送與接收使用各自的時(shí)鐘。發(fā)送端將開(kāi)始和停止位添加到傳輸?shù)臄?shù)據(jù)幀中,通過(guò)數(shù)據(jù)幀中定義的開(kāi)始位和結(jié)束位,接收端知道何時(shí)開(kāi)始讀取這些位。
每個(gè)數(shù)據(jù)幀包含 1 個(gè)起始位、5 到 9 個(gè)數(shù)據(jù)位(取決于 UART的設(shè)置,如果有奇偶校驗(yàn)位是5到8,沒(méi)有則是5到9)、一個(gè)可選的奇偶校驗(yàn)位和 1 個(gè)或 2 個(gè)停止位:
起始位:UART 數(shù)據(jù)傳輸線在不傳輸數(shù)據(jù)時(shí)通常保持在高電平。要開(kāi)始發(fā)送數(shù)據(jù)時(shí),發(fā)送端UART先在一個(gè)時(shí)鐘周期內(nèi)將傳輸線從高電平拉到低電平。當(dāng)接收端UART 檢測(cè)到從高到低的電壓轉(zhuǎn)換時(shí),它開(kāi)始以設(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ù)在傳輸過(guò)程中是否發(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 知道傳輸沒(méi)有錯(cuò)誤。
停止:發(fā)送端UART 將數(shù)據(jù)傳輸線從低電平拉到高電平持續(xù)至少兩個(gè)位的時(shí)間來(lái)表示整個(gè)數(shù)據(jù)包的傳輸已經(jīng)結(jié)束。
發(fā)送接收過(guò)程:
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文章
7952瀏覽量
155023 -
單片機(jī)
+關(guān)注
關(guān)注
6067文章
44991瀏覽量
650413 -
串口通訊
+關(guān)注
關(guān)注
1文章
265瀏覽量
25548 -
UART接口
+關(guān)注
關(guān)注
0文章
124瀏覽量
15874 -
RFID讀卡器
+關(guān)注
關(guān)注
0文章
58瀏覽量
11756
發(fā)布評(píng)論請(qǐng)先 登錄
UART通訊過(guò)程詳解

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

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

VM系列振弦采集模塊 溫度傳感器使用及UART 通訊參數(shù)

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

評(píng)論