串口波形分析


 

  1. 串行數據的格式

異步串行數據的一般格式是:起始位+數據位+停止位,其中起始位1 位,數據位可以是5、6、7、8位,停止位可以是1、1.5、2位。

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

例如,對於16進制數據0X5A的數據傳輸波形,數據格式是,波特率:115200,數據位:8,停止位1,校驗:無。它在信號線上的波形如下圖所示。

 

2.      7位數據傳輸

一般數據的傳輸都會定義成8位的格式,一些特殊的領域會用到數據位為5,6,7,位的格式;

比如:一些plc設備,會用到5位的數據格式,又如海用電子設備標准格式(NMEA-0183 協議)的數據位是6位;雖然真實用來顯示的數據會合成8位,但是他們在數據傳輸的時候用的是5,6,7的數據格式;

    我們從波形上來分析,特殊位的數據傳輸是什么樣的格式;數據位不是8位的時候,從高位開始丟數據,比如5位數據格式,高3位丟掉,數據最大只能是 _ _ _1 1111;6位的數據格式,_ _ 11 1111;7位數據_111 1111;高位丟掉,丟掉的數據默認當做0;因此5位的數據最大數是0001 1111(0x1f),6位數據0011 1111(0x3f),7位數據0111 1111(0x7f); 用7位的數據抓個波,舉個栗子;

 

完整的一幀數據是 0 0101 101_ 1 一頭一尾表示起始結束,不當數據用;0101 101_ 是真實的數據;丟去的數據補零,合成0101 1010,那么數據是0x5a;注意高位在前,低位在后面;

 

我們換個數據來做測試;

比如用0XCA;發送到串口,數據變成了0x4A;

 

波形如下圖

 3.      6位數據傳輸

6位數據傳輸,丟去高2位;比如,傳輸0xCA;數據傳輸后得到的是0x0A

 

換個數據測試0X5A;數據發出去之后,接收到的數據是0x1A;

 

一般的串口助手,只能做到接收7位,8位的數據,配置成接收5,6位數據時候,軟件打開錯誤,如下圖提示;后來我自己寫了個串口助手,當數據位配置成5,6位時也出錯;不知道是不是微軟不支持;

4.      5位數據傳輸

5位數據傳輸,丟去高3位;比如,傳輸0x5A;數據傳輸后得到的是0x1A

 

換個數據測試0X3c;數據發出去之后,接收到的數據是0x1c;

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM