串列埠通訊校驗方式(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晶片在傳送資料後,不能及時轉到接收狀態,此時匯流排若有資料過來,則本單元將不能正確接收。
總結:只要掌握上述波形分析方法,任何非同步序列資料的接收和傳送問題,基本都可以得到解決。
相關文章
- 你真的瞭解串列埠嗎(示波器串列埠波形分析)串列埠
- 串列埠資料抓取及串列埠通訊模擬串列埠
- 基於AVR的串列埠與PC機通訊程式碼(uart8位資料)VR串列埠
- 串列埠通訊串列埠
- 串列埠,COM口,UART,USART串列埠
- 【iCore3 雙核心板_FPGA】實驗二十五:NIOS II之UART串列埠通訊實驗FPGAiOS串列埠
- 串列埠通訊 (轉)串列埠
- 串列埠通訊與其他通訊方式相比有什麼優勢?串列埠
- 串列埠通訊上位機資料傳輸協議串列埠協議
- linux 串列埠通訊Linux串列埠
- 串列埠通訊協議串列埠協議
- Android 串列埠通訊Android串列埠
- C# 串列埠通訊C#串列埠
- 11. 串列埠通訊串列埠
- 串列埠通訊型別串列埠型別
- 通過串列埠進行通訊 :串列埠
- UART串列埠及Linux實現串列埠Linux
- Uart進行的串列埠收發串列埠
- 安卓串列埠通訊疑問安卓串列埠
- java串列埠通訊例項 -Java串列埠
- VC++ 串列埠通訊(轉)C++串列埠
- 串列埠無法正常通訊串列埠
- FPGA學習筆記03——UART串列埠FPGA筆記串列埠
- Linux下串列埠通訊詳解(下)讀寫串列埠及關閉串列埠Linux串列埠
- AndroidSerialPort:安卓串列埠通訊庫Android安卓串列埠
- 串列埠通訊gui介面顯示串列埠GUI
- ROS環境下串列埠通訊ROS串列埠
- Android藍芽串列埠通訊Android藍芽串列埠
- VC++ 的串列埠通訊 (轉)C++串列埠
- 【GMT43智慧液晶模組】例程二:串列埠通訊實驗串列埠
- LeetCode-Odd Even Linked ListLeetCode
- [CareerCup] 5.6 Swap Odd and Even Bits 交換奇偶位
- STM32串列埠通訊串列埠
- C#串列埠通訊遇到的坑C#串列埠
- android ndk 虛擬串列埠通訊Android串列埠
- C#串列埠通訊程式SerialPort類C#串列埠
- 用VB除錯串列埠通訊 (轉)除錯串列埠
- MSM8953 Android 9.0 開啟uart串列埠Android串列埠