999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于51單片機的串行通信協議的實現

2009-10-26 09:35:10曾增烽
新媒體研究 2009年13期
關鍵詞:單片機系統

曾增烽 劉 浩 李 雪

[摘要]首先分析數據通信協議數據包的一般格式,然后采用有限狀態機的算法實現單片機與上位機之間的串行通信協議,包含上下位機的數據發送接受和協議的解析實現,并給出具體的實現方法。

[關鍵詞]51單片機串口通信協議上位機下位機

中圖分類號:TN91文獻標識碼:A文章編號:1671-7597(2009)0710022-01

一、引言

數據協議是建立在物理層之上的通信數據包格式。所謂通信的物理層就是指我們通常所用到的RS232、RS485、紅外、光纖、無線等等通信方式。在這個層面上,底層軟件提供兩個基本的操作函數:發送一個字節數據、接收一個字節數據。所有的數據協議全部建立在這兩個操作方法之上。通信中的數據往往以數據包的形式進行傳送的,我們把這樣的一個數據包稱作為一幀數據。類似于網絡通信中的TCP/IP協議一般,比較可靠的通信協議往往包含有以下幾個組成部分:幀頭、地址信息、數據類型、數據長度、數據塊、校驗碼、幀尾[1][2]?,F在大部分的儀器設備都要求能過通過上位機軟件來操作,這樣方便調試,利于操作。其中就涉及到通信的過程,本文給出了串行通信協議的具體實現,總結出了通信程序的通用寫法,包括上位機端和下位機端等。

二、上位機和下位機中的數據發送

物理通信層中提供了兩個基本的操作函數,發送一個字節數據則為數據發送的基礎。數據包的發送即把數據包中的左右字節按照順序一個一個的發送[3]。在單片機系統中,比較常用的方法是直接調用串口發送單個字節數據的函數。另外一種方法是采用中斷發送的方式,所有需要發送的數據被送入一個緩沖區,利用發送中斷將緩沖區中的數據發送出去[4]。對于51系列單片機,比較傾向于采用直接發送的方式,采用中斷發送的方式比較占用RAM資源,而且對比直接發送來說也沒有太多的優點。以下是51系列單片機中發送單個字節的函數[5]。

void SendByte(unsigned char ch){

SBUF = ch;

while(TI ==0);TI = 0;

}

上位機中關于串口通信的方式也有多種,這種方式不是指數據有沒有緩沖的問題,而是操作串口的方式不同,因為PC上數據發送基本上都會被緩沖后再發送。對于編程來說操作串口有三種方式:1.使用windows系統中自帶的串口通信控件,這種方式使用起來比較簡單,需要注意的是接收時的阻塞處理和線程機制。2.使用系統的API直接進行串口數據的讀取,在windows和linux系統中,設備被虛擬為文件,只需要利用系統提供的API函數即可進行串口數據的發送和讀取。3.使用串口類進行串口操作。在此只介紹windows環境下利用串口類編程的方式。CSerialPort是比較好用的串口類。它提供如下的串口操作方法:

void WriteToPort(char* string, int len);

串口初始化成功后,調用此函數即可向串口發送數據。為了避免串口緩沖所帶來的延時,可以開啟串口的沖刷機制。

三、下位機中的數據接收和協議解析

下位機接收數據也有兩種方式:1.等待接收,處理器一直查詢串口狀態,來判斷是否接收到數據。2.中斷接收。如果協議比較簡單,整個系統只是處理一些簡單的命令,那么可以直接把數據包的解析過程放入到中斷處理函數中,當收到正確的數據包的時候,置位相應的標志,在主程序中再對命令進行處理[6]。以下給出具體的實例。在這個系統中,串口的命令非常簡單。所有的協議全部在串口中斷中進行。數據包的格式如下:

0x55, 0xAA, 0x7E, 0x12, 0xF0, 0x02, 0x23, 0x45, SUM, XOR, 0x0D

其中0x55,0xAA,0x7E為數據幀的幀頭,0x0D為幀尾,0x12為設備的目的地址,0xF0為源地址,0x02為數據長度,后面接著兩個數據0x23,0x45,從目的地址開始結算累加、異或校驗和,到數據的最后一位結束。協議解析的目的,首先判斷數據包的完整性,正確性,然后提取數據類型,數據等數據,存放起來用于主程序處理。

此過程中,使用了一個變量state_machine作為有限協議狀態機的轉換狀態,用于確定當前字節處于一幀數據中的那個部位,同時在接收過程中自動對接收數據進行校驗和處理,在數據包接收完的同時也進行了校驗的比較。因此當幀尾結束符接收到的時候,則表示一幀數據已經接收完畢,并且通過了校驗,關鍵數據也保存到了緩沖去中。主程序即可通過retval的標志位來進行協議的解析處理。接收過程中,只要哪一步收到的數據不是預期值,則直接將狀態機復位,用于下一幀數據的判斷,因此系統出現狀態死鎖的情況非常少,系統比較穩定,如果出現丟失數據包的情況也可由上位機進行命令的補發。對于主程序中進行協議處理的過程與此類似,主程序循環中不斷的讀取串口緩沖區的數據,此數據即參與到主循環中的協議處理過程中。

四、上位機中的數據接收和命令處理

上位機中數據接收的過程與下位機可以做到完全一致,不過針對不同的串口操作方法有所不同。對于阻塞式的串口讀函數,例如直接進行API操作或者調用windows的串口通信控件,最好能夠開啟一個線程專門用于監視串口的數據接收,每接收到一個數據可以向系統發送一個消息。CSerialPo

Rt打開串口后開啟線程監視串口的數據接收,將接收的數據保存到緩沖區,并向父進程發送接收數據的消息,數據將隨消息一起發送到父進程。父進程中開啟此消息的處理函數,從中獲取串口數據后就可以進行數據接收和命令處理。

五、總結

本文給出的是串口通信系統的基本雛形,雖然簡單,但是可行。實際的通信系統中協議比這個要復雜,而且涉及到數據包響應、命令錯誤、延時等等一系列的問題,在這樣的一個基礎上可以克服這些困難并且實現出較為穩定可靠的系統。在實際系統中,問題會出現在任何地方,有些特別的問題需要特別的方法才能解決。如何實現一個強壯的通信系統還需要繼續深入的研究。

參考文獻:

[1]J.Satran,"Internet Protocol Small Computer System Interface (iSCSI) Cyclic Redundancy.Check (CRC)/Checksum Considerations",RFC 3385,2002.

[2]ITU-T V.41,"Code-independent error-control system",1989.

[3]郭梯云,數據傳輸(修訂本)[M].人民郵電出版社,1998.

[4]顧上杰、薛質,計算機通信網基礎[M].電子工業出版,2005.7.

[5]丁元杰,單片微機原理及應用[M].機械工業出版社,2003.7.

[6]馮博鑒,計算機原理與接口應用技術[M].清華大學出版社,2004.8.

猜你喜歡
單片機系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于單片機的SPWM控制逆變器的設計與實現
電子制作(2019年13期)2020-01-14 03:15:28
基于PowerPC+FPGA顯示系統
基于單片機的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
半沸制皂系統(下)
小議PLC與單片機之間的串行通信及應用
電子制作(2018年12期)2018-08-01 00:48:04
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
主站蜘蛛池模板: 亚洲成a人片在线观看88| 青草精品视频| 国产成人精品免费av| 国产97公开成人免费视频| 欧美午夜在线观看| 天堂成人在线| 网友自拍视频精品区| 又粗又硬又大又爽免费视频播放| 一本无码在线观看| 久久精品丝袜高跟鞋| 欧美精品高清| 亚洲爱婷婷色69堂| 婷婷六月天激情| 2021国产精品自产拍在线观看| 久久免费视频6| 亚洲欧洲国产成人综合不卡| 国产靠逼视频| 婷五月综合| 亚洲永久色| 中文字幕日韩丝袜一区| 国产精品无码作爱| 亚洲综合欧美在线一区在线播放| 国产在线精彩视频论坛| 日韩在线永久免费播放| 国产精品视频白浆免费视频| 91人妻日韩人妻无码专区精品| 亚洲欧洲日韩久久狠狠爱| 欧美日韩国产高清一区二区三区| 国产一国产一有一级毛片视频| 99久久精品国产综合婷婷| 国产成人精品视频一区二区电影| 四虎国产成人免费观看| 九九热这里只有国产精品| 黄色一及毛片| 久久综合成人| 中文毛片无遮挡播放免费| 国产美女自慰在线观看| 伊人成人在线| 蜜桃视频一区二区| 亚洲精品手机在线| 国产精品福利社| 欧美精品高清| 久久免费视频播放| 成年av福利永久免费观看| 午夜影院a级片| 99国产在线视频| 国产精品成人一区二区不卡| 国产自无码视频在线观看| 亚洲成a人片| 国产成人夜色91| 国产精品熟女亚洲AV麻豆| 欧美一级大片在线观看| 嫩草在线视频| 国产一级在线观看www色| 无码综合天天久久综合网| 另类专区亚洲| 日韩久草视频| 波多野结衣中文字幕久久| 亚洲国语自产一区第二页| 亚洲天堂网站在线| 老司国产精品视频91| 国产一级毛片网站| 免费一级毛片不卡在线播放| 亚洲男人在线天堂| 91久久精品国产| 国产成人一区二区| 97se亚洲| 亚洲美女一区二区三区| 美女扒开下面流白浆在线试听| 在线综合亚洲欧美网站| 国产亚洲日韩av在线| 精品无码视频在线观看| 亚洲av无码专区久久蜜芽| 草草影院国产第一页| 色老二精品视频在线观看| 99精品国产自在现线观看| 国产免费观看av大片的网站| 国产精品美女网站| 熟妇人妻无乱码中文字幕真矢织江 | 久久综合结合久久狠狠狠97色| 中国黄色一级视频| 日韩a级片视频|