原文來自:24c01硬件電子
有時候沒有邏輯分析儀,恰恰示波器也沒買串口解析的功能,那么如何扒串口數據呢?(以下文章也適用于RS485,因為基本差不多)
首先介紹一下串口數據幀的組成:起始位1bit(低電平),數據位8bit,奇偶校驗位(一般不加),停止位1bit(高電平)。
所以我選擇的數據幀格式為: 1bit起始位+8bit數據位+1bit停止位(大多數都是這樣) 首先看一個示波器抓取的串口波形,如下圖:
首先看第一位低電平,是起始位,通過讀格子,大概可以看出是100us一個bit位,那么反推回去1s/100us≈9600波特率(實際上我設置的也就是9600波特率),9600波特率下的1bit時間為1/9600≈104us。 所以按照串口數據幀的格式,可以將數據大概扒出來,如下圖:
然后串口數據格式一般是LSB,即低位在前高位在后,所以去掉起始位和停止位后,這兩幀數據分別為: 0011 0101和 0111 0100 然后再根據8421BCD碼的編碼方式,反推回去就是: 2+14+1和 4+2+14 即數據是3574 那么這也正和我用串口發送給示波器的一樣:
那么奇校驗和偶校驗是什么意思呢?1、奇校驗數據幀格式為:1bit起始位+8bit數據位+1bit奇偶校驗位+1bit停止位數據位和奇偶校驗位內的1的總數為奇數比如數據位為0011 0101 (35)總共有4個1,那么奇偶校驗位就應該為1,這樣才可以保證總共1的個數為奇數。 比如數據位為0111 0101(75)總共有5個1,那么奇偶校驗位就應該為0,這樣才可以保證總共1的個數為奇數。2、偶校驗數據幀格式為:1bit起始位+8bit數據位+1bit奇偶校驗位+1bit停止位數據位和奇偶校驗位內的總共1的總數為偶數那么,這次不發送3574了,我使用串口發送3575,然后調到奇校驗:
然后抓取示波器波形,可以看到和之前舉的例子一樣,第一幀8bit的數據位里有4個1,為了保證有奇數個1,所以校驗位為1,這樣8bit數據位+1bit校驗位的1的總數就為5,是奇數了;第二幀數據里8bit數據里有5個1,所以校驗位為0,也是保證最后有奇數個1:(偶校驗類似,不在舉例)
感謝您的耐心觀看,希望對您的學習有所幫助。 原文來自:24c01硬件電子
如果看到這里,請點贊、收藏、分享三連!
限時免費掃碼進群,交流更多行業技術
審核編輯 黃宇
-
示波器
+關注
關注
113文章
6281瀏覽量
185652 -
串口
+關注
關注
14文章
1557瀏覽量
76875
發布評論請先 登錄
相關推薦
評論