UART資料波形分析

2021-09-26 10:48:25 字數 1772 閱讀 9389

摘要:本文通過對非同步序列資料格式的分析,闡述通過波形分析方法除錯uart資料收發的原理和方法。經常遇到初學者,對微控制器序列通訊出了問題不知道如何辦的情況。其實最有效的除錯方法是用示波器觀察收發資料的波形。通過觀察波形可以確定以下情況:

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

2. 資料是否正確;

3. 波特率是否正確;

1. 序列資料的格式

非同步序列資料的一般格式是:起始位+資料位+停止位,其中起始位1 位,資料位可以是5、6、7、8位,停止位可以是1、1.5、2位。

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

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

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

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

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

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

圖3 波特率計算示意圖

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

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

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

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

3. 根據波形圖判斷rs-485收發資料的正確與否

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

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

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

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

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

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

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

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

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

IIS協議及波形分析

一 i2s匯流排規範 i2s匯流排擁有三條資料訊號線,一條時鐘同步線 1 sck continuous serial clock 序列時鐘 對應數字音訊的每一位資料,sck都有1個脈衝。sck的頻率 2 取樣頻率 取樣位數。2 ws word select 字段 聲道 選擇 用於切換左右聲道的資料。...

Uart之資料溢位

在專案現場實施專案的過程之中,出現了乙個問題。stm32的控制器,莫名其妙會宕機,不定時會出現這個問題。出現之後系統指示燈不在閃爍,網路宕機,伺服器再也ping不同,下位機的控制器。經過debug發現了抓到了這個宕機的點。我發現並不是硬體錯誤,沒有呼叫hart fault這個中斷服務函式。但是主線程...

RS232,RS485波形分析

經常遇到初學者,對微控制器序列通訊出了問題不知道如何辦的情況。其實最有效的除錯方法是用示波器觀察收發資料的波形。通過觀察波形可以確定以下情況 是否有資料接收或傳送 資料是否正確 波特率是否正確 一 序列資料的格式 非同步序列資料的一般格式是 起始位 資料位 停止位,其中起始位1 位,資料位可以是5 ...