日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

CAN與以太網(wǎng)數(shù)據(jù)交換的研究與分析( 二 )


表1; 發(fā)送緩沖區(qū)寄存器
本實(shí)驗(yàn)中用到P89C668的外部中斷1 。該中斷由SJA1000引發(fā),設(shè)置為當(dāng)SJA1000收到來自另一節(jié)點(diǎn)的數(shù)據(jù)時(shí),向P89C668發(fā)出中斷信號(hào) 。在中斷處理程序中,P89C668讀取并保存SJA1000中斷寄存器的值,作為在相應(yīng)程序中進(jìn)行處理的依據(jù) 。
4.2TCP/IP協(xié)議
由于TCP/IP協(xié)議很復(fù)雜,涉及的內(nèi)容很多 。下面僅就幾點(diǎn)作簡(jiǎn)要介紹 。
(1)封裝和分層的概念
發(fā)送數(shù)據(jù)時(shí)要對(duì)數(shù)據(jù)進(jìn)行逐層封裝,既加上相應(yīng)的首部,作為所經(jīng)過每層的標(biāo)識(shí) 。具體原理如圖3所示 。接收到的數(shù)據(jù)是按一定結(jié)構(gòu)封裝好的,我們要根據(jù)前面的首部信息,判定數(shù)據(jù)應(yīng)交付給下面哪一層,并將相應(yīng)首部信息去除,這樣依次向下傳,到最后可以得到所傳送的真正數(shù)據(jù) 。具體原理如圖4所示 。
【CAN與以太網(wǎng)數(shù)據(jù)交換的研究與分析】 (2)以太網(wǎng)驅(qū)動(dòng)程序
以太網(wǎng)驅(qū)動(dòng)程序是提供鏈路層物理接口與網(wǎng)絡(luò)層交互的軟件接口 。網(wǎng)絡(luò)層數(shù)據(jù)必須先交付給以太網(wǎng)驅(qū)動(dòng)程序,由它將網(wǎng)絡(luò)層數(shù)據(jù)打包交付給物理接口,完成數(shù)據(jù)發(fā)送 。反之,以太網(wǎng)驅(qū)動(dòng)程序在接收到數(shù)據(jù)時(shí),要按照應(yīng)用層可以接收的形式進(jìn)行處理并交付給網(wǎng)絡(luò)層 。
(3)ARP協(xié)議
即地址解析協(xié)議,提供邏輯地址到物理地址的動(dòng)態(tài)映射 。發(fā)送站必須知道接收站的物理地址才能對(duì)數(shù)據(jù)進(jìn)行封裝,才能在以太網(wǎng)中進(jìn)行傳輸,因此只知道接收站的邏輯地址是不夠的,必須事先通過ARP協(xié)議得到接收站的物理地址 。
(4)IP協(xié)議
即網(wǎng)絡(luò)協(xié)議,提供一種不可靠的、無連接的服務(wù),完成的功能有將運(yùn)輸層待發(fā)送數(shù)據(jù)封裝成IP數(shù)據(jù)報(bào),調(diào)用以太網(wǎng)驅(qū)動(dòng)程序發(fā)送數(shù)據(jù),從數(shù)據(jù)鏈路層接收數(shù)據(jù),以及數(shù)據(jù)校驗(yàn)等 。
(5)TCP協(xié)議
即傳輸控制協(xié)議,是一種面向連接的、可靠的運(yùn)輸協(xié)議 。UDP協(xié)議實(shí)現(xiàn)相同功能,但它只把數(shù)據(jù)報(bào)分組從一臺(tái)主機(jī)發(fā)送到另一臺(tái)主機(jī),不保證可靠性 。本文主要使用TCP協(xié)議進(jìn)行數(shù)據(jù)交換,而沒有采用UDP協(xié)議 。實(shí)驗(yàn)中用到P89C668的定時(shí)器0中斷,10ms中斷一次,主要為了進(jìn)行ARP老化處理,設(shè)置TCP超時(shí)標(biāo)志 。
4.3CAN與以太網(wǎng)的數(shù)據(jù)交換
數(shù)據(jù)交換原理簡(jiǎn)單說就是對(duì)從以太網(wǎng)中收到的數(shù)據(jù)進(jìn)行分層 。假如是TCP數(shù)據(jù)報(bào),取出真正的數(shù)據(jù),并將其存入一個(gè)開辟的數(shù)據(jù)區(qū),對(duì)數(shù)據(jù)進(jìn)行相應(yīng)分析后,按照BasicCAN模式進(jìn)行發(fā)送 。反過來,將接收到的CAN數(shù)據(jù)存入另一數(shù)據(jù)區(qū),除去地址和個(gè)數(shù)信息,將其余數(shù)據(jù)按照TCP/IP協(xié)議進(jìn)行封裝發(fā)送 。具體流程圖如圖5所示 。
由CAN接收引起外部中斷后,保存SJA1000中斷寄存器和狀態(tài)寄存器的值,在CAN處理子程序中根據(jù)其值進(jìn)行處理 。當(dāng)上到來自另一節(jié)點(diǎn)的數(shù)據(jù),則將該數(shù)據(jù)存入相應(yīng)緩沖區(qū),并置位一標(biāo)志位,在主程序中的TCP超時(shí)處理子程序中判定該標(biāo)志位,假如為高則將該緩沖區(qū)中的數(shù)據(jù)拷貝到以太網(wǎng)發(fā)送緩部眍中,并將數(shù)據(jù)封裝發(fā)送 。當(dāng)P89C668接收到來自以太網(wǎng)的TCP數(shù)據(jù)報(bào),同樣將一標(biāo)志位置1,在CAN處理子程序(見圖6)中,根據(jù)該標(biāo)志位判定是否有數(shù)據(jù)要發(fā)送給另一節(jié)點(diǎn) 。
在具體調(diào)試時(shí),使一個(gè)CAN節(jié)點(diǎn)每隔一段時(shí)間向轉(zhuǎn)換模塊發(fā)送一些數(shù)據(jù) 。該節(jié)點(diǎn)接收后,通過以太網(wǎng)轉(zhuǎn)發(fā)給上位機(jī),上位機(jī)通過超級(jí)終端顯示接收的數(shù)據(jù) 。同樣,可以通過超級(jí)終端發(fā)送一些鍵入的數(shù)據(jù),經(jīng)過轉(zhuǎn)換模塊傳給另一個(gè)CAN節(jié)點(diǎn),從而改變它的一些內(nèi)部數(shù)據(jù) 。
5; 小結(jié)
該實(shí)驗(yàn)只是實(shí)現(xiàn)了以太網(wǎng)與BasicCAN模式下CAN的簡(jiǎn)單數(shù)據(jù)交換,沒有涉及CAN的高層協(xié)議和復(fù)雜錯(cuò)誤處理 。不過有了該實(shí)驗(yàn)的成功嘗試,使實(shí)現(xiàn)PeliCAN模式下的轉(zhuǎn)換以及加載完善的協(xié)議成為可能,可以說該實(shí)驗(yàn)為CAN和以太網(wǎng)的融合打下了堅(jiān)實(shí)的基礎(chǔ) 。

推薦閱讀