串列埠通訊校驗方式(even,odd,space,mark)UART資料波形分析

十日十乞001發表於2017-06-26

1. even 每個位元組傳送整個過程中bit為1的個數是偶數個(校驗位調整個數)

2. odd 每個位元組穿送整個過程中bit為1的個數是奇數個(校驗位調整個數)

3. noparity沒有校驗位

4. space 校驗位總為0

5. mark 校驗位總為1

UART資料波形分析

摘要:本文通過對非同步序列資料格式的分析,闡述通過波形分析方法除錯UART資料收發的原理和方法。

經常遇到初學者,對微控制器序列通訊出了問題不知道如何辦的情況。其實最有效的除錯方法是用示波器觀察收發資料的波形。通過觀察波形可以確定以下情況:

1.         是否有資料接收或傳送;

2.         資料是否正確;

3.         波特率是否正確;

一、    序列資料的格式

非同步序列資料的一般格式是:起始位+資料位+停止位,其中起始位位,資料位可以是5678位,停止位可以是11.52位。

起始位是一個值為0的位,所以對於正邏輯的TTL電平,起始位是一位時間的低電平;停止位是值為1的位,所以對於正邏輯的TTL電平,停止位是高電平。對於負邏輯(RS-232電平)則相反。

例如,對於16進位制資料55aaH,當採用8位資料位、1位停止位傳輸時,它在訊號線上的波形如圖1(TTL電平)和圖2(RS-232電平)所示。


 UART資料波形分析 - 陽光男孩 - 陽光男孩的部落格
 

1 TTL電平的序列資料幀格式(55aah)

UART資料波形分析 - 陽光男孩 - 陽光男孩的部落格

  

2 RS-232電平的序列資料幀格式(55aah)

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

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


UART資料波形分析 - 陽光男孩 - 陽光男孩的部落格  

波特率計算示意圖

可以看了,第一個位元組的10(1位起始位,8位資料位和1位停止位)共佔約1.05ms,這樣可計算出其波特率約為:

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

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

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

三、    根據波形圖判斷RS-485收發資料的正確與否

RS-485是一種半雙工的序列通訊方式,485電平晶片所以要正確接收和傳送資料,必需保證控制訊號和資料的同步,否則要麼傳送資料丟失,要麼接收資料可能丟失。

RS-485傳送資料時的正確時序如圖4所示。

UART資料波形分析 - 陽光男孩 - 陽光男孩的部落格  

4 RS-485的正確傳送資料時序

在圖4中,傳送控制訊號的寬度基本與資料訊號的寬度一致,所以能保證傳送資料的正確和傳送後及時轉為接收。

和圖分別是控制訊號太短和控制訊號太長的情況。


UART資料波形分析 - 陽光男孩 - 陽光男孩的部落格  

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


UART資料波形分析 - 陽光男孩 - 陽光男孩的部落格
 

6 RS-485控制訊號太短時的時序

在圖5中,由於控制訊號關閉過早,則第二個位元組的後兩位將傳送錯誤;在圖6中,由於控制訊號關閉過遲,使485晶片在傳送資料後,不能及時轉到接收狀態,此時匯流排若有資料過來,則本單元將不能正確接收。

總結:只要掌握上述波形分析方法,任何非同步序列資料的接收和傳送問題,基本都可以得到解決。


相關文章