串列埠通訊校驗方式(even,odd,space,mark)UART資料波形分析
1. even 每個位元組傳送整個過程中bit為1的個數是偶數個(校驗位調整個數)
2. odd 每個位元組穿送整個過程中bit為1的個數是奇數個(校驗位調整個數)
3. noparity沒有校驗位
4. space 校驗位總為0
5. mark 校驗位總為1
UART資料波形分析
摘要:本文通過對非同步序列資料格式的分析,闡述通過波形分析方法除錯UART資料收發的原理和方法。
經常遇到初學者,對微控制器序列通訊出了問題不知道如何辦的情況。其實最有效的除錯方法是用示波器觀察收發資料的波形。通過觀察波形可以確定以下情況:
1. 是否有資料接收或傳送;
2. 資料是否正確;
3. 波特率是否正確;
一、 序列資料的格式
非同步序列資料的一般格式是:起始位+資料位+停止位,其中起始位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)
二、 根據波形圖計算波特率
如圖3是圖1在示波器中的顯示示意,其中灰色線是示波器的時間分度線,此時假設是200ms/格。
圖3 波特率計算示意圖
可以看了,第一個位元組的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所示。
圖4 RS-485的正確傳送資料時序
在圖4中,傳送控制訊號的寬度基本與資料訊號的寬度一致,所以能保證傳送資料的正確和傳送後及時轉為接收。
圖5 和圖6 分別是控制訊號太短和控制訊號太長的情況。
圖5 RS-485控制訊號太短時的時序
圖6 RS-485控制訊號太短時的時序
在圖5中,由於控制訊號關閉過早,則第二個位元組的後兩位將傳送錯誤;在圖6中,由於控制訊號關閉過遲,使485晶片在傳送資料後,不能及時轉到接收狀態,此時匯流排若有資料過來,則本單元將不能正確接收。
總結:只要掌握上述波形分析方法,任何非同步序列資料的接收和傳送問題,基本都可以得到解決。
相關文章
- (10)uart串列埠通訊串列埠
- 你真的瞭解串列埠嗎(示波器串列埠波形分析)串列埠
- 串列埠UART串列埠
- 串列埠資料抓取及串列埠通訊模擬串列埠
- 定位模組LuatOS快速入門:源UART串列埠通訊串列埠
- 串列埠通訊串列埠
- 串列埠,COM口,UART,USART串列埠
- ESP32 wifi 串列埠轉發資料 UART micropythonWiFi串列埠Python
- Android 串列埠通訊Android串列埠
- linux 串列埠通訊Linux串列埠
- 串列埠通訊與其他通訊方式相比有什麼優勢?串列埠
- 328. Odd Even Linked List
- 串列埠收發UART(Verilog HDL)串列埠
- UART串列埠及Linux實現串列埠Linux
- 串列埠通訊上位機資料傳輸協議串列埠協議
- 11. 串列埠通訊串列埠
- 串列埠通訊型別串列埠型別
- 串列埠通訊協議串列埠協議
- Uart進行的串列埠收發串列埠
- LeetCode之Odd Even Linked List(Kotlin)LeetCodeKotlin
- [LeetCode] 328. Odd Even Linked ListLeetCode
- 通過串列埠進行通訊 :串列埠
- 串列埠無法正常通訊串列埠
- C# SerialPort 串列埠通訊C#串列埠
- FPGA學習筆記03——UART串列埠FPGA筆記串列埠
- AndroidSerialPort:安卓串列埠通訊庫Android安卓串列埠
- 安卓串列埠通訊疑問安卓串列埠
- ROS環境下串列埠通訊ROS串列埠
- 串列埠通訊gui介面顯示串列埠GUI
- 小型plc串列埠通訊簡介串列埠
- MSM8953 Android 9.0 開啟uart串列埠Android串列埠
- 如何使用Java串列埠進行資料通訊及應用案例Java串列埠
- C# 串列埠通訊利器 SerialPortStream庫C#串列埠
- STM32串列埠通訊串列埠
- STMF4串列埠通訊使用串列埠
- 串列埠通訊利器:SerialPortStream庫詳解,輕鬆實現C#串列埠開發串列埠C#
- ros中使用serial包實現串列埠通訊ROS串列埠
- 打工筆記--------------------------c#實現串列埠通訊筆記C#串列埠
- C#實現掃碼槍串列埠通訊C#串列埠