新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式硬件通信接口協議-UART(一)協議基礎

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

        作者: 時間:2018-12-19 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/201812/395785.htm

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

          (二)數據位Data bits:

          在維基百科的介紹中,數據的位數一般可有5~9位,其中各個位數的應用場景也是有區別的:

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

          7位常用于ASCII字符

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

          6位9位少用

          收發雙方定義了相同的數據位寬后,才能對信號管腳采樣時正確解碼到傳輸的數據內容。

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

          (三)校驗位Parity:

          校驗位可在數據傳輸過程中,接收方對信號管腳進行采樣和解碼時,對數據的完整性和正確性進行校驗,保證在通信過程中,可有效排除線路不穩定或者外界的干擾導致數據位出錯的問題。

          校驗位作為可選的配置項,可進行的配置方式有:

          配置方式

          作用

          備注

          None

          無校驗

          在數據傳輸的幀結構中沒有校驗位

          Odd

          奇校驗

          數據中”1”的個數是奇數,校驗位被置0;

          數據中”1”的個數是偶數,校驗位被置1。

          Even

          偶校驗

          數據中”1”的個數是奇數,校驗位被置1;

          數據中”1”的個數是偶數,校驗位被置0。

          Mark

          校驗位始終是“1”

          校驗位始終是“1”

          Space

          校驗位始終是“0”

          校驗位始終是“0”

          對于奇偶校驗位的設置,比較容易混淆的是奇校驗和偶校驗的設定,在下圖中分別列出了所有校驗位配置方式的時序圖,其中傳輸的數據是DigCore的縮寫DC,即十六進制為0xDC:

          


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

          簡而言之,保證一個原則是,開啟奇校驗時,數據中“1”的個數與校驗位“1”數量總和為奇數,開啟偶校驗時,該數量總和為偶數。

          (四)停止位Stop bits:

          停止位可配置成1bit、1.5bit和2bit三種,配置成其中一種的時候,信號管腳的電平保持對應bit時長的高電平。

          停止位的意義在于標志著一個數據的發送完成,同時保證了收發雙方在進行硬件操作的時候,提供了可靠的處理時間。

          


          (五)流控制Flow control:

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

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

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

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

          第一組線是RTS(Request toSend)和CTS(Clear toSend)。當接收方準備好接收數據,它置高RTS線表示它準備好了,如果發送方也就緒,它置高CTS,表示它即將發送數據。

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

          例如:當Modem已經準備好接收來自PC的數據,它置高DTR線,表示和電話線的連接已經建立。讀取DSR線置高,PC機開始發送數據。一個簡單的規則是DTR/DSR用于表示系統通信就緒,而RTS/CTS用于單個數據包的傳輸。

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

          信號

          定義

          作用

          DTR

          數據終端準備好

          Data Terminal Ready

          DSR

          數據準備好

          Data Set Ready

          RTS

          請求發送

          Request To Send

          CTS

          清除發送

          Clear To Send

          文章到此已經完成了對UART協議基礎的描述,欲知UART的不同電氣特性下的接口規范,且聽下回分解!

          參考資料:

          《串行接口》@百度百科

          《Serial Port》@維基百科

          《波特》@百度百科


        上一頁 1 2 下一頁

        關鍵詞: 嵌入式 UART

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 青州市| 安平县| 大悟县| 厦门市| 淅川县| 瑞金市| 镶黄旗| 吴堡县| 林州市| 金塔县| 抚州市| 赤水市| 西青区| 桂平市| 阿瓦提县| 武宣县| 东兴市| 宁南县| 阳朔县| 渑池县| 鹿邑县| 磐安县| 襄汾县| 罗城| 班戈县| 内黄县| 青河县| 舞阳县| 建湖县| 木兰县| 晋宁县| 长乐市| 旺苍县| 花莲县| 宝丰县| 襄城县| 大理市| 抚宁县| 固安县| 九江市| 巴南区|