新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式硬件通信接口協(xié)議-UART(一)協(xié)議基礎(chǔ)

嵌入式硬件通信接口協(xié)議-UART(一)協(xié)議基礎(chǔ)

作者: 時(shí)間:2018-12-19 來源:網(wǎng)絡(luò) 收藏

       如果拿到一塊板子或者一套設(shè)備,但沒有源碼程序,純靠硬件抓取通信串口的數(shù)據(jù)內(nèi)容,首先利用示波器觀測每個(gè)bit的寬度,后換算成比特率,這時(shí)候比特率基本上就是波特率了。利用串口助手模塊,在PC端下載個(gè)串口助手,設(shè)置匹配的波特率進(jìn)行數(shù)據(jù)抓取。

本文引用地址:http://m.butianyuan.cn/article/201812/395785.htm

  比如抓到波形116us/bit, 直接轉(zhuǎn)換得:1bit/116us = 1 bit/(116/1000000)s = 8620.68 bit/s,此時(shí)配置串口助手的波特率,利用串口助手模塊與被測信號(hào)管腳進(jìn)行連接,即可實(shí)現(xiàn)串口數(shù)據(jù)的抓取。

  (二)數(shù)據(jù)位Data bits:

  在維基百科的介紹中,數(shù)據(jù)的位數(shù)一般可有5~9位,其中各個(gè)位數(shù)的應(yīng)用場景也是有區(qū)別的:

  5位常用于博多碼(Baudot code)

  7位常用于ASCII字符

  8位則用于大多數(shù)類型的數(shù)據(jù)并且與字節(jié)(Byte)匹配

  6位9位少用

  收發(fā)雙方定義了相同的數(shù)據(jù)位寬后,才能對(duì)信號(hào)管腳采樣時(shí)正確解碼到傳輸?shù)臄?shù)據(jù)內(nèi)容。

  如上列出的不同數(shù)據(jù)位數(shù)情況,在不同的應(yīng)用場景中,能夠選擇合適的數(shù)據(jù)完成高效率的傳輸。

  (三)校驗(yàn)位Parity:

  校驗(yàn)位可在數(shù)據(jù)傳輸過程中,接收方對(duì)信號(hào)管腳進(jìn)行采樣和解碼時(shí),對(duì)數(shù)據(jù)的完整性和正確性進(jìn)行校驗(yàn),保證在通信過程中,可有效排除線路不穩(wěn)定或者外界的干擾導(dǎo)致數(shù)據(jù)位出錯(cuò)的問題。

  校驗(yàn)位作為可選的配置項(xiàng),可進(jìn)行的配置方式有:

  配置方式

  作用

  備注

  None

  無校驗(yàn)

  在數(shù)據(jù)傳輸?shù)膸Y(jié)構(gòu)中沒有校驗(yàn)位

  Odd

  奇校驗(yàn)

  數(shù)據(jù)中”1”的個(gè)數(shù)是奇數(shù),校驗(yàn)位被置0;

  數(shù)據(jù)中”1”的個(gè)數(shù)是偶數(shù),校驗(yàn)位被置1。

  Even

  偶校驗(yàn)

  數(shù)據(jù)中”1”的個(gè)數(shù)是奇數(shù),校驗(yàn)位被置1;

  數(shù)據(jù)中”1”的個(gè)數(shù)是偶數(shù),校驗(yàn)位被置0。

  Mark

  校驗(yàn)位始終是“1”

  校驗(yàn)位始終是“1”

  Space

  校驗(yàn)位始終是“0”

  校驗(yàn)位始終是“0”

  對(duì)于奇偶校驗(yàn)位的設(shè)置,比較容易混淆的是奇校驗(yàn)和偶校驗(yàn)的設(shè)定,在下圖中分別列出了所有校驗(yàn)位配置方式的時(shí)序圖,其中傳輸?shù)臄?shù)據(jù)是DigCore的縮寫DC,即十六進(jìn)制為0xDC:

  


  對(duì)比觀察上圖中的各類校驗(yàn)方式,簡單說奇校驗(yàn)(Odd-Parity)方式,傳輸?shù)臄?shù)據(jù)0xDC,二進(jìn)制11011100,從二進(jìn)制數(shù)值看到有5個(gè)“1”,也就是奇數(shù)個(gè)“1”,則在校驗(yàn)位被置“0”,此時(shí)邏輯“1”的個(gè)數(shù)總和等于奇數(shù)5,從而實(shí)現(xiàn)奇校驗(yàn)。

  簡而言之,保證一個(gè)原則是,開啟奇校驗(yàn)時(shí),數(shù)據(jù)中“1”的個(gè)數(shù)與校驗(yàn)位“1”數(shù)量總和為奇數(shù),開啟偶校驗(yàn)時(shí),該數(shù)量總和為偶數(shù)。

  (四)停止位Stop bits:

  停止位可配置成1bit、1.5bit和2bit三種,配置成其中一種的時(shí)候,信號(hào)管腳的電平保持對(duì)應(yīng)bit時(shí)長的高電平。

  停止位的意義在于標(biāo)志著一個(gè)數(shù)據(jù)的發(fā)送完成,同時(shí)保證了收發(fā)雙方在進(jìn)行硬件操作的時(shí)候,提供了可靠的處理時(shí)間。

  


  (五)流控制Flow control:

  流控制,俗話說就是“握手”。流控制的作用,在不同處理性能的設(shè)備之間,數(shù)據(jù)傳輸之前,接收方會(huì)以“流控制”來通知發(fā)送方,是否可以繼續(xù)進(jìn)行接下來的數(shù)據(jù)傳輸。這樣的應(yīng)用場景多見于計(jì)算機(jī)與低性能的微控制器通信,也可見于PC與打印機(jī)之間進(jìn)行的數(shù)據(jù)傳輸,該特點(diǎn)都是接收方的接收緩存已滿或處理事務(wù)較慢時(shí),從而需要流控制來告知發(fā)送方稍后再發(fā)送。

  流控制的方式分別有軟件和硬件兩種。

  軟件的流控制方式,在通信中,只需RxD、TxD、GND三根即可,數(shù)據(jù)在傳輸過程中,依靠代碼的判斷處理,并通過收發(fā)雙方進(jìn)行的數(shù)據(jù)交互完成控制,在現(xiàn)有通信物理信號(hào)線基礎(chǔ)上,使用控制字符(ASCII表中的0x00~0x0x1F、0x7F)完成控制指令的交互。一般在私有協(xié)議下也會(huì)定義一些特殊字符設(shè)為控制指令。

  硬件的流控制方式,即在原有的RxD、TxD、GND三根信號(hào)線的基礎(chǔ)上,再增加RTS/CTS和DTR/DSR這兩組信號(hào)線。

  第一組線是RTS(Request toSend)和CTS(Clear toSend)。當(dāng)接收方準(zhǔn)備好接收數(shù)據(jù),它置高RTS線表示它準(zhǔn)備好了,如果發(fā)送方也就緒,它置高CTS,表示它即將發(fā)送數(shù)據(jù)。

  第二組線是DTR(DataTerminal Ready)和DSR(Data SetReady)。這些線主要用于Modem通信。使得串口和Modem通信他們的狀態(tài)。

  例如:當(dāng)Modem已經(jīng)準(zhǔn)備好接收來自PC的數(shù)據(jù),它置高DTR線,表示和電話線的連接已經(jīng)建立。讀取DSR線置高,PC機(jī)開始發(fā)送數(shù)據(jù)。一個(gè)簡單的規(guī)則是DTR/DSR用于表示系統(tǒng)通信就緒,而RTS/CTS用于單個(gè)數(shù)據(jù)包的傳輸。

  而在實(shí)際的應(yīng)用中,硬件的方式比較少用,最大的原因是消耗硬件成本,并且在當(dāng)前的MCU性能下,的FIFO緩存器、MCU的事件中斷等等因素,都能夠完成數(shù)據(jù)的接收和存儲(chǔ),并且對(duì)大多數(shù)的應(yīng)用場景是完全足夠,因此在很多應(yīng)用中已經(jīng)很少用到硬件流控制。

  信號(hào)

  定義

  作用

  DTR

  數(shù)據(jù)終端準(zhǔn)備好

  Data Terminal Ready

  DSR

  數(shù)據(jù)準(zhǔn)備好

  Data Set Ready

  RTS

  請(qǐng)求發(fā)送

  Request To Send

  CTS

  清除發(fā)送

  Clear To Send

  文章到此已經(jīng)完成了對(duì)UART協(xié)議基礎(chǔ)的描述,欲知UART的不同電氣特性下的接口規(guī)范,且聽下回分解!

  參考資料:

  《串行接口》@百度百科

  《Serial Port》@維基百科

  《波特》@百度百科


上一頁 1 2 下一頁

關(guān)鍵詞: 嵌入式 UART

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉