基于CAN總線(xiàn)通信協(xié)議的設計與實(shí)現
3.2 數據接收機制
CAN接收機制負責將數據從CAN總線(xiàn)上接收下來(lái),按照數據源節點(diǎn)的地址將其還原為發(fā)送前的格式,準確無(wú)誤的傳遞給上層,并負責為上層提供接口函數。在CPU將數據取走以后,清空相應的數組。
在底層開(kāi)辟了一個(gè)臨時(shí)緩沖區用于暫時(shí)存放從CAN總線(xiàn)上接收下的數據,臨時(shí)緩沖區采用二維數組的格式,容量為4*3*64。第一維的容量為4,分別指示發(fā)送節點(diǎn)的地址;第二維容量為3,作為數據的擴展緩存,指示可連續存放來(lái)自于同一節點(diǎn)的包的數目;第三維的容量為64,用來(lái)存放經(jīng)過(guò)整理以后的數據。一般來(lái)說(shuō),開(kāi)辟一個(gè)二維的空間就可以使協(xié)議周轉,但是,在實(shí)際系統中可能會(huì )出現CPU還未能將整理完畢的數據取走此時(shí)又接到來(lái)自于同一節點(diǎn)的新的數據,這樣就可能導致新的數據覆蓋掉原來(lái)的數據,造成數據的丟失。為避免這種潛在地危險,因此開(kāi)辟了三維空間,在最壞的情況下,每個(gè)節點(diǎn)都可同時(shí)容納來(lái)自于同一節點(diǎn)連續發(fā)送的3包數據,大大降低了數據丟失的可能性。接收數據流程如圖二所示。
圖 二: 數據發(fā)送流程
5 總結
本文創(chuàng )新點(diǎn):CAN總線(xiàn)以其卓越的特性、極高的可靠性和獨特的設計,在工業(yè)過(guò)程監控設備的互聯(lián)方面得到廣泛的應用,受到工業(yè)界的廣泛重視,并被公認為是最有前途的現場(chǎng)總線(xiàn)之一。作為通用、有效、可靠及經(jīng)濟的平臺,CA N協(xié)議也已經(jīng)廣泛地受到了歡迎。由于CAN2.0規范固有的局限性,客觀(guān)上要求用戶(hù)建立高層協(xié)議對CAN進(jìn)行完善。本文所設計的CAN總線(xiàn)應用層協(xié)議已經(jīng)投入使用,具有簡(jiǎn)單、靈活、移植方便等特點(diǎn)。
評論