uart接口的時序分析

數據傳送速率用波特率來表示, 指單位時間內載波參數變化的次數, 或每秒鐘傳送的二進制位數

  如每秒鐘傳送240個字符, 而每個字符包含10位(1個起始位, 1個停止位, 8個數據位), 這時的波特率爲2400Bd

  傳輸時序如下圖

  uart接口的時序分析

  在UART中,信號線上共有兩種狀態, 分別用邏輯1(高電平)和邏輯0(低電平)來區分

  在空閒時, 數據線應該保持在邏輯高電平狀態

  其中各位的意義如下

  起始位(Start Bit): 先發出一個邏輯0信號, 表示傳輸字符的開始

  數據位(Data Bits): 可以是5~8位邏輯0或1. 如ASCII碼(7位), 擴展BCD碼(8位)小端傳輸

  校驗位(Parity Bit): 數據位加上這一位後, 使得1的位數應爲偶數(偶校驗)或奇數(奇校驗)

  停止位(Stop Bit): 它是一個字符數據的結束標誌。 可以是1位、1.5位、2位的高電平

  空閒位: 處於邏輯1狀態, 表示當前線路上沒有資料傳送

  uart接口的時序分析

  1、串行數據的格式

  異步串行數據的一般格式是:起始位+數據位+停止位,其中起始位1 位,數據位可以是5、6、7、8位,停止位可以是1、1.5、2位。

  起始位是一個值爲0的位,所以對於正邏輯的TTL電平,起始位是一位時間的低電平;停止位是值爲1的位,所以對於正邏輯的TTL電平,停止位是高電平。線路路空閒或者數據傳輸結束,對於正邏輯的TTL電平,線路總是1。對於負邏輯(如RS-232電平)則相反。

  例如,對於16進制數據55aaH,當採用8位數據位、1位停止位傳輸時,它在信號線上的波形如圖1(TTL電平)和圖2(RS-232電平)所示。 (先傳第一個字節55,再傳第二個字節aa,每個字節都是從低位向高位逐位傳輸)

  uart接口的時序分析

  圖1 TTL電平的串行數據幀格式(55aah)

  uart接口的時序分析

  圖2 RS-232電平的串行數據幀格式(55aah)

  2、根據波形圖計算波特率

  如圖3是圖1在示波器中的顯示示意,其中灰色線是示波器的時間分度線,此時假設是200us/格。

  uart接口的時序分析

  圖3 波特率計算示意圖

  可以看了,第一個字節的10位(1位起始位,8位數據位和1位停止位)共佔約1.05ms,這樣可計算出其波特率約爲:

  10bit / 1.05ms X 1000 ≈ 9600 bit/s

  如果上圖中的時間軸是100us/格,同樣可以計算出波特率應是19200bit/s。

  當通訊不正常,又能觀察到波形時,就可根據上述方法,從波形圖計算一下波特率是否正確。

  3、根據波形圖判斷RS-485收發數據的正確與否

  RS-485是一種半雙工的串行通訊方式(RS-422爲全雙工),485電平芯片所以要正確接收和發送數據,必需保證控制信號和數據的同步,否則要麼發送數據丟失,要麼接收數據可能丟失。RS-485發送數據時的正確時序如圖4所示。

  uart接口的時序分析

  圖4 RS-485的正確發送數據時序

  在圖4中,發送控制信號的寬度基本與數據信號的寬度一致,所以能保證發送數據的正確和發送後及時轉爲接收。

  圖5 和圖6 分別是控制信號太短和控制信號太長的情況。

  uart接口的時序分析

  圖5 RS-485控制信號太短時的時序

  uart接口的時序分析

  圖6 RS-485控制信號太長時的時序

  在圖5中,由於控制信號關閉過早,則第二個字節的後兩位將發送錯誤;在圖6中,由於控制信號關閉過遲,使485芯片在發送數據後,不能及時轉到接收狀態,此時總線若有數據過來,則本單元將不能正確接收。

  總結:只要掌握上述波形分析方法,任何異步串行數據的接收和發送問題,基本都可以得到解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章