新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 數(shù)控同步現(xiàn)場(chǎng)總線與CAN總線網(wǎng)關(guān)的設(shè)計(jì)

數(shù)控同步現(xiàn)場(chǎng)總線與CAN總線網(wǎng)關(guān)的設(shè)計(jì)

作者: 時(shí)間:2016-12-20 來(lái)源:網(wǎng)絡(luò) 收藏

點(diǎn)擊放大圖片

NCSF數(shù)據(jù)幀頭部長(zhǎng)18字節(jié),圖4為NCSF數(shù)據(jù)幀的頭部結(jié)構(gòu)。EthAREA六個(gè)字節(jié)填充0xFF,使NCSF幀能夠通過(guò)以太網(wǎng)交換設(shè)備;幀的總長(zhǎng)度G_Length;兩個(gè)全局控制字G_CTRLI和G_CTRL2;①數(shù)據(jù)幀標(biāo)識(shí)G_mtype;②幀類(lèi)型標(biāo)識(shí)G_stype;③從站計(jì)數(shù)器G_sno。

點(diǎn)擊放大圖片

圖4 NCSF幀頭部結(jié)構(gòu)

在DM9000的設(shè)備驅(qū)動(dòng)和NCSF協(xié)議中,為了方便管理每個(gè)NCSF數(shù)據(jù)包及其控制信息,特設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)ncsf buff。

點(diǎn)擊放大圖片

在ncsf buff中next和prey使所有需發(fā)送的數(shù)據(jù)包構(gòu)成一個(gè)雙向鏈表;cb為數(shù)據(jù)包狀態(tài)控制字,保存此數(shù)據(jù)包當(dāng)前的狀態(tài)和控制信息,ncsf buff中最重要的幾個(gè)成員變量為head、data、tail和end,這四個(gè)成員變量指向同一連續(xù)內(nèi)存區(qū)域的不同位置,其結(jié)構(gòu)和關(guān)系如圖5所示。

點(diǎn)擊放大圖片

圖5 ncsf_buff數(shù)據(jù)結(jié)構(gòu)

在創(chuàng)建nesf_buff的同時(shí)會(huì)申請(qǐng)一段足夠容納最大的NCSF數(shù)據(jù)幀2倍的連續(xù)內(nèi)存,head指向這一塊內(nèi)存的首地址,end指向其尾部,data指向head+LEN的位置,在tail和data之間是NCSF有效數(shù)據(jù),即在data前預(yù)留LEN長(zhǎng)空閑空間,以便在此有效數(shù)據(jù)前擴(kuò)展數(shù)據(jù)包頭部和其它數(shù)據(jù),tail預(yù)留的空閑空間用于在尾部擴(kuò)展有效數(shù)據(jù)。有效數(shù)據(jù)區(qū)前后預(yù)留的空閑空間可以避免在數(shù)據(jù)包擴(kuò)展時(shí)重新分配內(nèi)存和拷貝相關(guān)數(shù)據(jù),由此提高了發(fā)送接收數(shù)據(jù)包的速度。

3.2 CAN總線接口模塊

MPC2515是一款獨(dú)立的CAN控制器,完全支持CAN2.0B技術(shù)規(guī)范。該器件能夠收發(fā)標(biāo)準(zhǔn)和擴(kuò)展的數(shù)據(jù)幀以及遠(yuǎn)程幀。MPC2515自帶兩個(gè)驗(yàn)收屏蔽寄存器、六個(gè)驗(yàn)收濾波寄存器,這些寄存器用于過(guò)濾不必要接收的報(bào)文,它們可以有效降低微控制器的負(fù)擔(dān)。MPC2515和S3C2440之間的連接通過(guò)SPI實(shí)現(xiàn)。

圖6中特別畫(huà)出CAN模塊的電源電路,為了增強(qiáng)CAN總線的抗干擾能力,MCP2515與總線收發(fā)器TJAl050之間采用高速光電耦合器6N137相連以實(shí)現(xiàn)電氣隔離,而為了實(shí)現(xiàn)完全的電器隔離,6N137兩端的電源也應(yīng)該進(jìn)行完全隔離,B0505S為它們提供了完全隔離的電源。

點(diǎn)擊放大圖片

圖6 CAN模塊電路簡(jiǎn)圖

S3C2440通過(guò)特定的SPI命令與MPC2515進(jìn)行交互,命令包含復(fù)位、讀、寫(xiě)、讀RX緩沖器、裝載TX緩沖器、請(qǐng)求發(fā)送報(bào)文、讀狀態(tài)和位修改命令等。通過(guò)這些命令S3C2440可以讀寫(xiě)CAN控制器的狀態(tài)、發(fā)送CAN數(shù)據(jù)幀,以及重置CAN控制器。S3C2440通過(guò)SPI向MPC2515發(fā)出每個(gè)命令字節(jié)前,CS都需要被置為低電平。在任何操作期間CS都要保持低電平,操作完成后需要把CS置為高電平。

CAN模塊的初始化依次為:軟件復(fù)位、設(shè)置CAN總線的波特率、關(guān)閉中斷、設(shè)置驗(yàn)收屏蔽寄存器和驗(yàn)收濾波寄存器、切換MPC2515到正常模式、清空接收和發(fā)送寄存器,最后開(kāi)啟相應(yīng)的中斷。

點(diǎn)擊放大圖片

點(diǎn)擊放大圖片

can_frame是CAN數(shù)據(jù)幀發(fā)送隊(duì)列的數(shù)據(jù)結(jié)構(gòu)。為了能夠兼容CAN擴(kuò)展報(bào)文接收,在can_frame中ext_f標(biāo)志為0表示為正常報(bào)文,為1表示為擴(kuò)展報(bào)文;rtr_f對(duì)應(yīng)數(shù)據(jù)幀仲裁場(chǎng)中的RTR位;pri為報(bào)文的優(yōu)先級(jí)。為0按照先入先出順序出隊(duì),少數(shù)緊急指令為1,此報(bào)文優(yōu)先出隊(duì)被發(fā)送。



評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉