《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 嵌入式環境下串行幀通信的設計與實現
嵌入式環境下串行幀通信的設計與實現
現代電子技術
陳 樂,唐 波,盧 力 國防科學技術大學
摘要: 在嵌入式環境下,因設備間通信距離較遠,多采用串行通信方式,但許多串行通信協議只適用于協議設計時的應用系統環境,不具有通用性,且有些協議存在通信失敗的風險。通過分析設備間的通信需求,設計了一種分層的串行幀通信協議,該協議簡單可靠,能適應多種系統環境。在嵌入式Linux系統環境下,該協議在實際應用系統中運行穩定。
Abstract:
Key words :

摘要:在嵌入式環境下,因設備間通信距離較遠,多采用串行通信" title="串行通信">串行通信方式,但許多串行通信協議只適用于協議設計" title="協議設計">協議設計時的應用系統環境,不具有通用性,且有些協議存在通信失敗的風險。通過分析設備間的通信需求,設計了一種分層的串行幀通信協議,該協議簡單可靠,能適應多種系統環境。在嵌入式Linux系統" title="嵌入式Linux系統">嵌入式Linux系統環境下,該協議在實際應用系統中運行穩定。
關鍵詞:串行通信;協議設計;嵌入式Linux系統;應用層;鏈路層

    嵌入式系統之間的通信通常有兩種方式:并行通信和串行通信。并行方式傳輸數據速度快,但占用的通信線多,傳輸數據的可靠性隨距離的增加而下降,只適用于近距離的數據傳送。在遠距離數據通信中,一般采用串行通信方式,它具有占用通信線少、成本低等優點。目前RS 232串口是PC機與通信工業中應用最廣泛的一種串行接口,它應用于點對點通信模式,實際使用中多采用最簡單的三線方式連接,即兩端設備的串口只連接收、發、地三根線,即可實現簡單的全雙工通信。通信協議是兩端設備數據交換的語言,是通信可靠性的保證,在保證功能的前提下,通信協議應該力求簡潔。

1 系統通信需求
    本系統主要完成野外環境下時間間隔測量和瞬態數據采集的功能,系統內各模塊均選用三星公司的S3C2440" title="S3C2440">S3C2440芯片為處理器,操作系統使用嵌入式Linux。模塊間通信的主要任務為控制命令的下發與應答、工作狀態和采集數據的上報等,對通信的可靠性要求較高,無數據加密需求。
    根據系統軟硬件情況設定串口工作參數如下:115 200波特率,8位數據位,1位停止位,奇校驗、無流控。波特率的設置需要綜合考慮所選用芯片的串口性能、串口連接線長度、傳輸數據的最大幀長和應用過程中的誤碼率等;無流控則是由于串口使用三線方式連接。

2 通信協議的分層結構
    為保證不同設備之間通信協議的通用性,降低實現的復雜度,將通信協議為分上下兩層:上層為應用層,規范了設備間應用程序通信使用的應用層數據格式;下層為鏈路層" title="鏈路層">鏈路層,提供物理線路數據的發送與接收,應用層數據拆分與合并、封裝與解封裝以及錯誤檢測功能。協議應用層部分根據各設備功能的不同使用不同的數據格式,而鏈路層部分則完全通用。應用層通信過程如圖1所示。

 a.JPG


    發方設備按照約定的應用層數據格式構造應用層數據,交由鏈路層進行數據的拆分、封裝、校驗,再將生成的數據以數據幀的形式發送至物理線路;收方設備則從物理線路上接收數據,進行幀定位、解封裝、錯誤檢測、數據合并等,最后將應用層數據上交給應用層處理。收發方設備的應用層可根據用戶需求的變化,不斷修改應用層數據格式,并利用鏈路層提供的功能接口完成通信功能,故該通信協議設計的關鍵在于鏈路層,以下著重闡述鏈路層的設計與實現。

3 鏈路層設計
    鏈路層主要包含以下功能:數據拆分與合并、數據封裝與解封裝、數據幀的發送和接收以及錯誤檢測與重發機制。
3.1 數據拆分與合并
    數據拆分即是把過長的應用層數據分成幾部分,用多幀數據幀發送,接收端收到后再進行數據合并,上交給應用層處理。過長的應用層數據如果不進行拆分,可能導致數據幀超出設計的緩沖區大小,也可能造成發送時間太長導致超時錯誤。這個長度需要根據實際需求合理設置,當數據幀傳輸出現錯誤時,這幀數據就需要重新傳輸,長度太大將造成較大開銷;長度太小,封裝時產生的開銷字節所占比例又太高,影響傳輸效率。
3.2 數據封裝與解封裝
    數據封裝即是以一定格式把拆分后的應用層數據加上功能指示、數據長度等字段,以便對方收到后知道如何處理。數據封裝格式及功能指示字段含義如表1,表2所示。

 b.JPG
3.3 幀發送與接收
    鏈路層以幀為單位進行數據收發,一種普遍的界定幀起始與結束的方法是:在待發送數據的頭部和尾部加入特殊的起始碼和結束碼,如果在數據中出現了這個碼型,就必須在數據發送前進行轉義處理,把它轉換成其他碼型,否則將導致幀定位錯誤,數據通信失敗。很多協議實現者為求實現簡單沒有進行這種轉義,存在通信失敗的風險,其實在點對點協議(PPP協議)中的描述了一種轉義處理方法,經簡化后,實現起來也并不復雜,描述如下:
    數據發送方在幀首處發送0x7E作為起始碼,逐字節發送封裝后的數據,遇到0x7E時,發送0x7D,0x5E字節序列,遇到0x7D時,發送0x7 D,0x5D字節序列,最后在幀尾處發送0x7E作為結束碼;
    數據接收方在串口數據流中搜索第一個0x7E作為幀起始(連續的0x7E則以最后一個為幀起始),逐字節接收數據,遇到0x7D時,跳過不處理,而把該字節的后一個字節加上0x20,直到遇到0x7E認為幀結束。
    在鏈路幀發送前,應使用CRC16算法對封裝數據進行校驗,校驗多項式為,校驗值寫入校驗字段中;在鏈路幀接收后,先對其進行校驗,如果檢驗成功再進行數據解封裝處理,如果校驗失敗則按照下述重發機制進行重發。
3.4 錯誤檢測與重發機制
    綜合考慮協議實現的簡單性和數據收發的可靠性,決定采用停等協議進行數據收發,過程如下:
    發送方發送一幀數據幀后,設置一個最長等待時間,等待接收對方的確認幀或拒絕幀,若收到確認幀則發送下一幀;若收到拒絕幀或者在超時時間內未收到確認幀或拒絕幀,則重發當前幀,因等待超時而重發的幀要設置超時指示位。當連續收到拒絕幀三次或連續超時重發三次,則認為對端不可達,取消當前幀的發送,上報錯誤給應用層。
    接收方收到數據幀后,當超時指示位為0時,如果校驗正確,則發送確認幀,并處理此幀,如果校驗錯誤,則發送拒絕幀,不處理該幀;當超時指示位為1時,說明對方未正確收到確認幀或拒絕幀,如果上次非重發幀的校驗結果是正確的,則該幀實際上已經處理過,直接發送確認幀即可;如果上次非重發幀的校驗結果是錯誤的,則根據校驗結果正常處理該幀。

4 鏈路層實現
    鏈路層采用C++語言實現,以便于代碼在各模塊程序中復用。應用層數據發送和接收流程如圖2,圖3所示。

 c.JPG

 

5 結語
      鏈路層的作用是可靠地把應用層數據發送到對端設備,但如果僅僅是這樣,應用程序使用起來并不是很方便,如果使用面向對象編程的方法,把鏈路層代碼封裝在一個類中,向應用程序提供一些較為簡單的功能接口,如發送數據,接收數據,檢測對端是否可達等,就可以很好地解決易用性問題。另外當數據發送失敗時,應當以返回值或事件方式通知應用程序,當有應用層數據需要處理時,最好以回調函數或事件方式激活應用層處理程序,以避免應用程序低效的循環檢測。通過在協議設計和協議實現兩個方面同時進行優化,該協議在實際應用過程中表現出極好的可靠性和一定的通用性,可供參考借鑒。
 

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久久国产91| 国产精品a久久久久| 99伊人成综合| 亚洲精品国产精品乱码不99| 欧美一区二视频在线免费观看| 日韩亚洲国产欧美| 99riav久久精品riav| 亚洲精品在线视频| 亚洲精品视频在线播放| 91久久国产综合久久91精品网站| 精品二区视频| 在线不卡亚洲| 亚洲国产高清视频| 亚洲国产精品成人一区二区| 亚洲大胆在线| 91久久精品www人人做人人爽| 亚洲高清成人| 亚洲欧洲日本国产| 亚洲精品你懂的| 99热精品在线观看| 亚洲系列中文字幕| 香蕉久久夜色精品国产| 欧美一区成人| 久久精品一二三| 亚洲激情电影在线| 日韩视频三区| 亚洲一区成人| 欧美一区二区三区免费视| 久久精品国产一区二区三区| 久久久久久久尹人综合网亚洲| 久久午夜视频| 欧美第十八页| 欧美午夜电影一区| 国产精品影视天天线| 国产原创一区二区| 尤妮丝一区二区裸体视频| 亚洲黄色片网站| 亚洲美女视频| 亚洲综合国产| 亚洲成人资源网| 一本久久a久久精品亚洲| 亚洲女与黑人做爰| 久久国产精品久久久久久久久久 | 欧美成人自拍视频| 欧美日韩一区二区三区免费看| 国产精品你懂的在线欣赏| 国产亚洲欧美日韩一区二区| 尤物精品国产第一福利三区| 亚洲精品社区| 性娇小13――14欧美| 亚洲欧洲久久| 亚洲欧美国产三级| 麻豆精品在线播放| 欧美性开放视频| 好吊视频一区二区三区四区| 亚洲国内自拍| 先锋影音网一区二区| 亚洲精品激情| 欧美一区二区三区四区在线观看地址 | 亚洲午夜av在线| 亚洲成色www8888| 亚洲无线一线二线三线区别av| 久久国产婷婷国产香蕉| 欧美国产一区二区三区激情无套| 国产精品嫩草影院av蜜臀| 在线不卡中文字幕| 亚洲女性喷水在线观看一区| 亚洲激情亚洲| 欧美专区第一页| 欧美人与禽猛交乱配| 国产香蕉97碰碰久久人人| 亚洲精品欧美激情| 久久精品夜色噜噜亚洲aⅴ| 亚洲影音一区| 欧美激情精品久久久久久黑人| 国产麻豆精品久久一二三| 亚洲人屁股眼子交8| 欧美一级片一区| 在线视频一区二区| 久久男人资源视频| 国产精品极品美女粉嫩高清在线 | 曰本成人黄色| 亚洲欧美国产另类| 亚洲视频自拍偷拍| 猛男gaygay欧美视频| 国产情人节一区| 在线一区二区三区做爰视频网站 | 欧美日韩亚洲视频| 伊人久久大香线蕉av超碰演员| 亚洲一区免费在线观看| 一本一本a久久| 欧美承认网站| 黄色成人av在线| 午夜视频久久久久久| 亚洲无线一线二线三线区别av| 欧美激情性爽国产精品17p| 娇妻被交换粗又大又硬视频欧美| 亚洲综合好骚| 亚洲女优在线| 欧美午夜视频网站| 亚洲日韩视频| 日韩亚洲一区二区| 欧美国产日本韩| 在线精品视频免费观看| 性感少妇一区| 欧美专区日韩专区| 国产欧美日韩在线 | 性欧美超级视频| 国产精品揄拍500视频| 亚洲国产欧美日韩另类综合| 欧美在线影院| 久久精品二区| 国产啪精品视频| 亚洲综合精品| 欧美一区二区三区啪啪| 国产精品美女久久| 在线亚洲伦理| 午夜国产欧美理论在线播放| 欧美日韩在线视频观看| 亚洲精品日韩在线| 一区二区三区欧美| 欧美日韩在线一区二区| 日韩视频国产视频| 宅男噜噜噜66一区二区66| 欧美日韩视频在线一区二区观看视频| 亚洲国产精品黑人久久久| 亚洲日本va午夜在线电影 | 欧美肉体xxxx裸体137大胆| 日韩一级免费| 亚洲主播在线观看| 国产精品综合不卡av| 欧美一级片久久久久久久| 久久久精品国产一区二区三区| 韩国精品在线观看| 亚洲日本一区二区| 欧美久久久久久久久久| 99视频一区| 午夜欧美不卡精品aaaaa| 国产伦精品一区二区三区视频黑人| 亚洲欧美国产日韩中文字幕 | 美女图片一区二区| 亚洲精品国产系列| 亚洲伊人第一页| 国产精品一区二区视频| 久久大综合网| 欧美激情一区三区| 一本久久a久久精品亚洲| 午夜精品区一区二区三| 国产亚洲欧美在线| 亚洲精品久久久久久久久久久久久 | 国内精品伊人久久久久av一坑| 亚洲国产日韩精品| 欧美伦理影院| 亚洲专区免费| 免播放器亚洲一区| 亚洲精品一区二区三区99| 午夜国产精品视频| 一区二区三区自拍| 国产精品99久久久久久人| 国产美女精品视频| 亚洲欧洲视频在线| 国产精品久久久久免费a∨大胸| 欧美一级在线视频| 欧美精品日日鲁夜夜添| 亚洲淫片在线视频| 巨乳诱惑日韩免费av| 99综合视频| 麻豆成人91精品二区三区| 亚洲精品一区二区三区四区高清| 亚洲欧美在线x视频| 原创国产精品91| 亚洲欧美中文日韩在线| 在线观看欧美日本| 亚洲综合色网站| 在线免费观看日本一区| 亚洲男人第一网站| 亚洲第一天堂无码专区| 亚洲尤物在线视频观看| 在线成人激情黄色| 亚洲欧美日本另类| 亚洲激情校园春色| 久久精品夜夜夜夜久久| 亚洲美女视频在线观看| 久久久久久999| 99在线精品免费视频九九视| 久久免费观看视频| 亚洲午夜在线观看| 欧美精品乱人伦久久久久久 | 亚洲小说区图片区| 在线成人免费视频| 欧美亚洲免费电影| 亚洲美女视频网| 美日韩免费视频| 午夜精品久久久久久久男人的天堂| 欧美成人午夜影院| 欧美一级日韩一级| 国产精品高清一区二区三区| 亚洲激情自拍| 国产午夜精品久久久久久久| 亚洲一卡久久|