數控同步現場(chǎng)總線(xiàn)與CAN總線(xiàn)網(wǎng)關(guān)的設計
NCSF數據幀頭部長(cháng)18字節,圖4為NCSF數據幀的頭部結構。EthAREA六個(gè)字節填充0xFF,使NCSF幀能夠通過(guò)以太網(wǎng)交換設備;幀的總長(cháng)度G_Length;兩個(gè)全局控制字G_CTRLI和G_CTRL2;①數據幀標識G_mtype;②幀類(lèi)型標識G_stype;③從站計數器G_sno。
圖4 NCSF幀頭部結構
在DM9000的設備驅動(dòng)和NCSF協(xié)議中,為了方便管理每個(gè)NCSF數據包及其控制信息,特設計數據結構ncsf buff。
在ncsf buff中next和prey使所有需發(fā)送的數據包構成一個(gè)雙向鏈表;cb為數據包狀態(tài)控制字,保存此數據包當前的狀態(tài)和控制信息,ncsf buff中最重要的幾個(gè)成員變量為head、data、tail和end,這四個(gè)成員變量指向同一連續內存區域的不同位置,其結構和關(guān)系如圖5所示。
圖5 ncsf_buff數據結構
在創(chuàng )建nesf_buff的同時(shí)會(huì )申請一段足夠容納最大的NCSF數據幀2倍的連續內存,head指向這一塊內存的首地址,end指向其尾部,data指向head+LEN的位置,在tail和data之間是NCSF有效數據,即在data前預留LEN長(cháng)空閑空間,以便在此有效數據前擴展數據包頭部和其它數據,tail預留的空閑空間用于在尾部擴展有效數據。有效數據區前后預留的空閑空間可以避免在數據包擴展時(shí)重新分配內存和拷貝相關(guān)數據,由此提高了發(fā)送接收數據包的速度。
3.2 CAN總線(xiàn)接口模塊
MPC2515是一款獨立的CAN控制器,完全支持CAN2.0B技術(shù)規范。該器件能夠收發(fā)標準和擴展的數據幀以及遠程幀。MPC2515自帶兩個(gè)驗收屏蔽寄存器、六個(gè)驗收濾波寄存器,這些寄存器用于過(guò)濾不必要接收的報文,它們可以有效降低微控制器的負擔。MPC2515和S3C2440之間的連接通過(guò)SPI實(shí)現。
圖6中特別畫(huà)出CAN模塊的電源電路,為了增強CAN總線(xiàn)的抗干擾能力,MCP2515與總線(xiàn)收發(fā)器TJAl050之間采用高速光電耦合器6N137相連以實(shí)現電氣隔離,而為了實(shí)現完全的電器隔離,6N137兩端的電源也應該進(jìn)行完全隔離,B0505S為它們提供了完全隔離的電源。
圖6 CAN模塊電路簡(jiǎn)圖
S3C2440通過(guò)特定的SPI命令與MPC2515進(jìn)行交互,命令包含復位、讀、寫(xiě)、讀RX緩沖器、裝載TX緩沖器、請求發(fā)送報文、讀狀態(tài)和位修改命令等。通過(guò)這些命令S3C2440可以讀寫(xiě)CAN控制器的狀態(tài)、發(fā)送CAN數據幀,以及重置CAN控制器。S3C2440通過(guò)SPI向MPC2515發(fā)出每個(gè)命令字節前,CS都需要被置為低電平。在任何操作期間CS都要保持低電平,操作完成后需要把CS置為高電平。
CAN模塊的初始化依次為:軟件復位、設置CAN總線(xiàn)的波特率、關(guān)閉中斷、設置驗收屏蔽寄存器和驗收濾波寄存器、切換MPC2515到正常模式、清空接收和發(fā)送寄存器,最后開(kāi)啟相應的中斷。
can_frame是CAN數據幀發(fā)送隊列的數據結構。為了能夠兼容CAN擴展報文接收,在can_frame中ext_f標志為0表示為正常報文,為1表示為擴展報文;rtr_f對應數據幀仲裁場(chǎng)中的RTR位;pri為報文的優(yōu)先級。為0按照先入先出順序出隊,少數緊急指令為1,此報文優(yōu)先出隊被發(fā)送。
評論