新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一種低成本的Ehternet嵌入式系統(tǒng)的設(shè)計(jì)

一種低成本的Ehternet嵌入式系統(tǒng)的設(shè)計(jì)

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

TJA1050為CAN收發(fā)器,是CAN協(xié)議控制器和物理總線之間的接口,可以對(duì)CAN總線提供差動(dòng)發(fā)送和接收能力。微控制器對(duì)CAN控制器進(jìn)行相應(yīng)配置后,收發(fā)器自動(dòng)完成相應(yīng)的CAN總線動(dòng)作。有較強(qiáng)的抗干擾能力,最多節(jié)點(diǎn)數(shù)可達(dá)110個(gè)。

采用高速光耦6N137實(shí)現(xiàn)與TJA1050之間的電氣隔離,保護(hù)控制系統(tǒng)電路,以滿足在最高速率1M/s下的電氣響應(yīng)。

二、軟件設(shè)計(jì)

整個(gè)系統(tǒng)的軟件分為兩部分:CAN控制器協(xié)議轉(zhuǎn)換模塊和以太網(wǎng)控制器協(xié)議轉(zhuǎn)換模塊。其程序結(jié)構(gòu)如圖2所示。


圖2 主程序結(jié)構(gòu)圖

當(dāng)以太網(wǎng)應(yīng)用層有數(shù)據(jù)要發(fā)送到CAN節(jié)點(diǎn)時(shí),首先由以太網(wǎng)控制器協(xié)議轉(zhuǎn)換模塊從傳輸層數(shù)據(jù)報(bào)文中解析出完整的CAN協(xié)議數(shù)據(jù)包,存放在數(shù)據(jù)緩沖區(qū)A中,再通知總調(diào)度模塊,由它調(diào)用CAN控制器協(xié)議模塊將CAN協(xié)議數(shù)據(jù)包發(fā)送到CAN總線上。反過(guò)來(lái),當(dāng)CAN設(shè)備有數(shù)據(jù)要發(fā)送到用戶層時(shí),先由CAN控制器協(xié)議轉(zhuǎn)換模塊將完整的CAN協(xié)議數(shù)據(jù)包存放在數(shù)據(jù)緩沖區(qū)B中,再通知總調(diào)度模塊,由它調(diào)用以太網(wǎng)控制器協(xié)議轉(zhuǎn)換模塊,將完整的CAN協(xié)議數(shù)據(jù)包作為應(yīng)用層數(shù)據(jù)封裝起來(lái),再發(fā)送到以太網(wǎng)的應(yīng)用。

(一)CAN控制器協(xié)議轉(zhuǎn)換模塊

CAN通信協(xié)議有四種不同的幀格式,本系統(tǒng)中使用標(biāo)準(zhǔn)幀格式,其格式如表1所示。CAN首先接收仲裁域,根據(jù)仲裁域的內(nèi)容判斷所接收的信號(hào)是哪種幀格式,然后用戶將相應(yīng)的數(shù)據(jù)寫入數(shù)據(jù)域中進(jìn)行發(fā)送,或從數(shù)據(jù)域中讀取接收到的數(shù)據(jù)。

表1 幀傳送格式

CAN控制器協(xié)議轉(zhuǎn)換模塊主要由的寄存器讀程序CANRead()、寫程序、CANWrite()、初始化程序CANInit()、發(fā)送程序Txdsub()和接收程序Rxdsub()組成。
選用CAN2.0A協(xié)議構(gòu)建CAN總線控制網(wǎng)絡(luò),對(duì)的初始化主要包括對(duì)控制寄存器CR、驗(yàn)收代碼寄存器ACR、驗(yàn)收屏蔽寄存器AMR、總線定時(shí)寄存器BTR0/1和輸出控制寄存器OCR的設(shè)置。初始化完成后,由總調(diào)度模塊監(jiān)控SJA1000控制器。當(dāng)CAN總線上有數(shù)據(jù)到達(dá)時(shí),通過(guò)中斷方式調(diào)用接收子程序Rxdsub(),把這一幀數(shù)據(jù)存入數(shù)據(jù)緩沖區(qū)B中,然后翻譯接收緩沖器。同樣,當(dāng)有按CAN2.0A協(xié)議格式組合成的一幀數(shù)據(jù)報(bào)文在數(shù)據(jù)緩沖區(qū)A中要發(fā)送到CAN總線上去時(shí),總調(diào)度模塊調(diào)用CAN發(fā)送子程序Txdsub()發(fā)送。

(二)以太網(wǎng)控制器協(xié)議轉(zhuǎn)換模塊

一個(gè)標(biāo)準(zhǔn)的以太網(wǎng)物理傳輸幀如表2所示(單位:字節(jié))。

表2 以太網(wǎng)的物理傳輸幀結(jié)構(gòu)表

除數(shù)據(jù)段的長(zhǎng)度不定外,其他部分的長(zhǎng)度都固定不變。以太網(wǎng)規(guī)定整個(gè)傳輸包的最大長(zhǎng)度不能超過(guò)1514字節(jié)(14字節(jié)為DA、SA、TYPE),最小大能小于60字節(jié)。除去DS、SA、TYPE14字節(jié)外,還必須傳輸46字節(jié)的數(shù)據(jù),當(dāng)數(shù)據(jù)段的數(shù)據(jù)不足46字節(jié)時(shí)需填充,填充字符的個(gè)數(shù)不包括在長(zhǎng)度字段里;超過(guò)1500個(gè)字節(jié)時(shí),需拆成多個(gè)幀傳送。
以太網(wǎng)控制器協(xié)議轉(zhuǎn)換模塊主要負(fù)責(zé)從UDP數(shù)據(jù)包中解析出完整的CAN協(xié)議報(bào)文,存入數(shù)據(jù)緩沖區(qū)A中。同時(shí),也可以將數(shù)據(jù)緩沖區(qū)B中的完整CAN協(xié)議報(bào)文封裝成UDP數(shù)據(jù)報(bào),然后將其發(fā)送到以太網(wǎng)上。

主程序工作流程圖如圖3所示,單片機(jī)首先初始化網(wǎng)絡(luò)設(shè)備。網(wǎng)卡IP地址和物理地址存于單片機(jī)的EEPROM中,單片機(jī)復(fù)位后首先讀取這些數(shù)據(jù)以初始化網(wǎng)卡。


圖3 主程序工作流程圖

網(wǎng)卡初始化完成以后,當(dāng)有數(shù)據(jù)從RJ45過(guò)來(lái)時(shí),單片機(jī)對(duì)數(shù)據(jù)包進(jìn)行分析,如果是ARP(物理地址解析協(xié)議)數(shù)據(jù)包,則程序轉(zhuǎn)入ARP處理程序。如果是IP(網(wǎng)間協(xié)議)數(shù)據(jù)包且傳輸層使用UDP(用戶數(shù)據(jù)報(bào)協(xié)議),端口正確,則認(rèn)為數(shù)據(jù)報(bào)正確,數(shù)據(jù)解包后,送入數(shù)據(jù)緩沖區(qū)A,最后把數(shù)據(jù)部分通過(guò)CAN接口輸出。反之,如果單片機(jī)從CAN接口收到數(shù)據(jù),則將數(shù)據(jù)按照UDP協(xié)議格式打包,送入數(shù)據(jù)緩沖區(qū)B,由RTL8019AS將數(shù)據(jù)輸出到局域網(wǎng)中。

本系統(tǒng)在通信傳輸層來(lái)采UDP協(xié)議是考慮到CAN協(xié)議數(shù)據(jù)報(bào)為短幀形式(每個(gè)數(shù)據(jù)幀最多為8字節(jié))。如果采用TCP傳輸協(xié)議,要傳輸8個(gè)字節(jié)CAN協(xié)議數(shù)據(jù),需先通過(guò)三次握手建立連接,再傳輸數(shù)據(jù),之后還要通過(guò)握手釋放連接。這樣的傳輸效率對(duì)有限的網(wǎng)絡(luò)資源來(lái)說(shuō)無(wú)疑是一種浪費(fèi)。而UDP是無(wú)連接的傳輸,可以提高網(wǎng)絡(luò)傳輸效率,同時(shí)也可以減輕網(wǎng)關(guān)的處理任務(wù)壓力。UDP傳輸協(xié)議可靠性的不足之處可以采用加傳校驗(yàn)機(jī)制來(lái)改善。通過(guò)實(shí)驗(yàn)測(cè)試,表明這種方法是行之有效的。

本文介紹了種低成本、高可靠性、快捷的嵌入式CAN總線與以太網(wǎng)互連的軟硬件實(shí)現(xiàn)方法。該互連方案保證了管理監(jiān)控層與生產(chǎn)測(cè)控層之間的連接,方便了上下層信息交流,適用于現(xiàn)有的網(wǎng)絡(luò)傳輸系統(tǒng),有著廣泛的應(yīng)用前景。特別是在數(shù)據(jù)采集和數(shù)據(jù)傳輸領(lǐng)域中,可以廣泛地應(yīng)用于嵌入式網(wǎng)絡(luò)接口功能的設(shè)計(jì)中。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: Ehternet 嵌入式系統(tǒng) SJA1000

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉