新聞中心

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

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

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

          一、 簡介

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

          ,全稱UniversalAsynchrONous Receiver/Transmitter,譯為通用異步收發器。

          串口的出現是在1980年前后,數據傳輸率是115kbps~230kbps。串口出現的初期是為了實現連接計算機外設的目的,初期串口一般用來連接鼠標和外置Modem以及老式攝像頭和寫字板等設備。串口也可以應用于兩臺計算機(或設備)之間的互聯及數據傳輸。由于串口(COM)不支持熱插拔及傳輸速率較低,目前部分新主板和大部分便攜電腦已開始取消該接口。目前串口多用于工控和測量設備以及部分通信設備中。

          在幾乎所有的MCU中都會有接口。

          from 百度百科串行接口

          每當口中提到“串口”,很容易讓人想到的名詞有、USART、COM口、TTL/CMOS、RS-232、RS-422、RS-485。其中:

          UART,“串口”時序協議的名稱,定義了各個信號時序協議;

          USART,相比UART增加了同步信號,可實現ISO-7816智能卡接口;

          COM口,在PC等操作系統上,區別于USB、SATA接口的串行接口,定義了在操作系統中的規范;

          TTL/CMOS,硬件系統的信號電平;

          RS-232,在UART基礎上再定義了信號的電氣特性

          RS-422,在RS-232基礎上定義了差分信號傳輸的電氣特性

          RS-485,在RS-422基礎上定義了半雙工模式

          二、 信號線

          信號線的命名,都是基于當前終端設備而定義的。

          UART常用的信號線有:

          RxD,當前終端設備的接收管腳

          TxD,當前終端設備的發送管腳

          GND,當前終端設備的地

          如上所述,信號線的命名基于當前終端設備而做的標記,在手工接線時,可以快速判斷連接的線序。

          一般的,設計者在設計PCB時,對外連接做的一些預留接口,標記接口管腳時,都會添加絲印標記,這時標記的都是當前終端設備的管腳信息。

          例如標記著RxD的引腳,應該與外部的UART接口TxD連接。

          


          三、 信號時序

          信號線空閑時,處于高電平,當有數據發送時,信號線以1個bit時長的低電平標志開始通信,通信過程中,單個字節在信號線上的幀結構如下圖:

          


          信號管腳傳輸每個數據時,在管腳上呈現的是電氣信號為高低電平的變化,對應數據每個bit的邏輯“1”和“0”。

          組成UART幀結構時,附帶的起始位、停止位,實現了對傳輸數據流每個字節的界定,該過程實現了起始式協議。同時在停止位前可選擇地插入校驗位,實現了對數據幀正確性的校驗。

          如下圖是常見的UART通信過程中使用的配置參數8-N-1對應的時序:

          


          配置參數(8-N-1):8bit數據、無校驗位、1bit停止位

          四、 接口配置項

          在啟用UART接口時,需要通信雙方對接口進行相同參數的配置,才能夠正確通信。而UART可配置的參數有:

          (一)波特率Baudrate:

          由于UART屬于異步通信,在通信過程中沒有同步時鐘CLK來提供給接收方,接收方也就無法同步地確定每個bit的寬度,也就無法對每個bit進行正確的采樣。因此接收方必須依靠設置與發送方相同的波特率參數,這樣接收方對信號管腳進行采樣和解碼時,才能正確判斷每個bit的值是“1”還是“0”,這也就是異步通信的特點。

          在各類MCU的UART配置中,常用的波特率值有:

          4800Bd、9600Bd、19200Bd、115200Bd,單位Bd。常見有如下代碼截圖:

          


          要想理解波特率,來的維基百科中查詢一番

          


          在維基百科的介紹中,可看到,波特率的值,直接以bit/s的單位取倒數后得到單位s/bit,同時在示波器端對UART發出的波形進行抓取,可見每bit的寬度在誤差允許范圍內基本就是波特率的倒數值。

          在百度百科的詞條《波特》介紹中,波特率是指:

          調制速率,指的是有效數據信號調制載波的速率,即單位時間內載波調制狀態變化的次數。它是對符號傳輸速率的一種度量,1波特即指每秒傳輸1個符號,而通過不同的調制方式,可以在一個碼元符號上負載多個bit位信息。 單位“波特”本身就已經是代表每秒的調制數,以“波特每秒”(Baud per second)為單位是一種常見的錯誤。

          它代表的是信號的變化,而不是傳輸數據的多少。它表示每秒鐘內通信線路狀態改變的次數。如果數據不壓縮,波特等于每秒鐘傳輸的數據位數,如果數據進行了壓縮。那么每秒鐘傳輸的數據位數通常大于調制速率,使得交換使用波特和比特/秒有時會產生錯誤。

          但是在現代的實際使用中,多數情況下,配置了MCU的波特率后,對輸出信號進行觀測發現,此時波特率等于比特率。也正是因為此時傳輸的符號即8bit一個Byte的數據量,從而波特率等于比特率。


        上一頁 1 2 下一頁

        關鍵詞: 嵌入式 UART

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 镇安县| 宁都县| 娱乐| 孟州市| 福清市| 封丘县| 日土县| 宜兴市| 南宁市| 龙南县| 井研县| 洛隆县| 上虞市| 高碑店市| 珠海市| 新兴县| 余干县| 德州市| 和平县| 肇源县| 罗城| 怀集县| 南京市| 砚山县| 山东省| 天祝| 东平县| 丹东市| 九龙坡区| 乾安县| 潼关县| 清河县| 广水市| 镇远县| 彰武县| 嘉善县| 招远市| 汉寿县| 陆河县| 珠海市| 荆州市|