《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計 > 設(shè)計應(yīng)用 > 基于C8051F040的以太網(wǎng)-CAN轉(zhuǎn)換電路設(shè)計
基于C8051F040的以太網(wǎng)-CAN轉(zhuǎn)換電路設(shè)計
車 行,,郭建洲 中國電子科技集團(tuán)
摘要: 以太網(wǎng)和CAN總線應(yīng)用廣泛,,但由于其通信協(xié)議不同,兩種總線器件間無法進(jìn)行數(shù)據(jù)通信,因此,,設(shè)計了基于CP2200與C8051F040的以太網(wǎng)總線與CAN總線接口轉(zhuǎn)換電路,,并給出部分相關(guān)硬件電路與軟件設(shè)計分析,。在保證數(shù)據(jù)完整和協(xié)議可靠的前提下,,通過握手協(xié)議和簡化的以太網(wǎng)協(xié)議,不僅實(shí)現(xiàn)了以太網(wǎng)數(shù)據(jù)與CAN數(shù)據(jù)的轉(zhuǎn)發(fā),,同時還順利的解決了以太網(wǎng)的高速性與CAN的低速率沖突,,以及兩者數(shù)據(jù)包之間的大小不同的矛盾。
Abstract:
Key words :

    控制器局域網(wǎng)(Controller Area Network,,CAN)總線是Bosch公司為解決現(xiàn)代汽車控制設(shè)備與測試儀器之間數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信協(xié)議,主要用于各種設(shè)備的檢測及控制,。目前,,CAN總線被廣泛應(yīng)用于汽車等交通運(yùn)輸工具、工業(yè)控制,、智能樓宇,、機(jī)械工業(yè)、醫(yī)療器械,、傳感器等領(lǐng)域,,被稱為最有前途的現(xiàn)場總線之一,但其主要缺點(diǎn)是不適合遠(yuǎn)距離傳輸,。以太網(wǎng)接口開始是為了連接實(shí)驗(yàn)室的多個計算機(jī)設(shè)備,,開發(fā)的快速連接方式。隨著傳輸速率的提高和交換技術(shù)的使用,,以太網(wǎng)的確定性和實(shí)時性得到了保證,,工業(yè)以太網(wǎng)的安全性和網(wǎng)絡(luò)生存性也得到了很大程度的提高。使其在工業(yè)控制領(lǐng)域得到廣泛的應(yīng)用,。目前計算機(jī)已經(jīng)廣泛應(yīng)用與各個操控領(lǐng)域,,而計算機(jī)常用的連接端口就是以太網(wǎng),只要接口標(biāo)準(zhǔn)統(tǒng)一,,并安裝好必要的軟件,,計算機(jī)就可以介入到各個控制系統(tǒng)中去。因此,,為了提高效率,,有必要采用技術(shù)手段,實(shí)現(xiàn)通過以太網(wǎng)接口使計算機(jī)融入CAN網(wǎng)絡(luò),,把以太網(wǎng)的遠(yuǎn)距離傳輸性與CAN的專業(yè)性結(jié)合起來,優(yōu)勢組合,。

1 芯片選擇
1.1 CP2200芯片介紹
    CP2200芯片是Sificon Labs公司推出的工業(yè)界體積最小,、性能最高、8位總線控制的以太網(wǎng)驅(qū)動芯片,,支持IEEE802·3以太網(wǎng)媒體訪問MAC控制協(xié)議,,支持10BASE/T物理層,完全兼容100/1 000 BASE T網(wǎng)絡(luò),,可以工作在全雙工或半雙工模式,,能進(jìn)行自動極性檢測和糾正,具有碰撞自動重發(fā)功能,,能自動填充和生成CRC,,支持廣播和多播,。CP2200內(nèi)部帶有2 k字節(jié)的發(fā)送緩存和4 k字節(jié)的接收緩存,還有8 k字節(jié)的內(nèi)部Flash存儲器,,用于存儲用戶常數(shù),、Web服務(wù)器內(nèi)容,它的最后6個存儲單元是工廠預(yù)編程的唯一48位MAC地址,。此芯片采用48管腳的TQFP封裝,,工作的溫度范圍在-40~+85℃,可為具有11個以上I/O引腳的微處理器擴(kuò)展以太網(wǎng)通信功能,。此芯片具有30 Mb/s速率的并行主機(jī)接口,,支持Intel和Motorola兩種總線方式。
    CP2200的多種集成功能(如CRC校驗(yàn),、數(shù)據(jù)濾波等)有效減輕了單片機(jī)的載荷,,它內(nèi)部的收發(fā)接口單元操作起來靈活方便,為以太網(wǎng)數(shù)據(jù)包提供了有效緩沖,。使用該芯片時,,電路只需增加1個RJ-45快速以太網(wǎng)接口即可,其工作特性可以滿足CAN總線的傳輸波特率要求,。其內(nèi)部結(jié)構(gòu)如圖1所示,。

1.JPG
1.2 C8051F040芯片介紹
    C8051F系列單片機(jī)是Silicon Labs公司推出的系統(tǒng)級芯片,具有與80C51兼容的CIP-51內(nèi)核,。C8051F040內(nèi)部集成的CAN控制器包括1個CAN內(nèi)核,、消息RAM(獨(dú)立于CIP-51內(nèi)核)、消息處理單元,、控制寄存器等,。C8051F040內(nèi)部包含1個CAN協(xié)議控制器,并沒有提供物理層的驅(qū)動器,,實(shí)現(xiàn)與CAN總線的接口,。數(shù)據(jù)接收和濾波都由CAN控制器完成,不需要CIP-51內(nèi)核的參與,。這種方式可使CAN通信時占用的系統(tǒng)資源最小,。CIP-51內(nèi)核通過配置其內(nèi)部的特殊功能寄存器來實(shí)現(xiàn)CAN的數(shù)據(jù)交互。其內(nèi)部結(jié)構(gòu)如圖2所示,。

 

2 系統(tǒng)硬件設(shè)計
    系統(tǒng)電路如圖3所示,,由CP2200、C8051F040,、CAN驅(qū)動芯片的SN65HVD230等組成,。其中CP2200與HR911105A組成以太網(wǎng)電路部分,SN65H-VD230單個組成CAN收發(fā)電路。工作原理如下,,當(dāng)CP2200收到以太網(wǎng)數(shù)據(jù)時,,觸發(fā)C8051F040的INTO,C8051F040把數(shù)據(jù)從CP2200的接收緩沖區(qū)拷貝到其內(nèi)存空間,,然后通過SN65HVD230轉(zhuǎn)發(fā)到CAN網(wǎng)絡(luò),;當(dāng)CAN數(shù)據(jù)有要發(fā)送到以太網(wǎng),C8051F040收到數(shù)據(jù)后,,就向CP2200的發(fā)送緩沖區(qū)轉(zhuǎn)發(fā)數(shù)據(jù),,最后由CP2200通過HR911105A發(fā)到以太網(wǎng)。

2.JPG


2.1 以太網(wǎng)部分電路
    CP2200通過HR9011105A連接到以太網(wǎng)上,。HR9011105A是HanRun公司生產(chǎn)的集以太網(wǎng)隔離變壓器,、RJ-45接口和指示燈為一體的網(wǎng)絡(luò)連接器。CP2200的收發(fā)信號分別連接到HR9011105A的收發(fā)針腳,,同時前者的LED控制信號LINK,、ACK也都接到后者相應(yīng)針腳。其中,,LINK是連接成功指示燈,,ACK是數(shù)據(jù)傳輸指示燈。CP2200與C8051F040的連接,,首先數(shù)據(jù)和地址總線,、讀寫信號相連接,其次CP2200的中斷引腳INT與C8051-F040的INT0引腳連接在一起,,其片選CS陣腳接C8051F040的A15腳,。CP2200的發(fā)送緩沖區(qū)地址為0x0000~0x07FF,接收緩沖區(qū)地址前部分與發(fā)送緩沖器重合,,具體地址為0x0000~0x0FFF,。當(dāng)A15為低電平(CS也為低)時,C8051F040就選中CP2200,,即CP2200的內(nèi)部地址空間0x0000~0x0 FFF的外部映射地址為0x8000~0x8FFF,。
    CP2200發(fā)送數(shù)據(jù)包:通過使用自動寫(AutoWrite)寄存器將數(shù)據(jù)裝載到發(fā)送緩沖區(qū),并向內(nèi)部存儲器TXGO寫1來發(fā)送數(shù)據(jù)包,。一旦發(fā)送完成,,會產(chǎn)生數(shù)據(jù)包已發(fā)送中斷,通知C8051F040,。CP2200接收數(shù)據(jù)包:當(dāng)MAC接收被使能且接收緩沖區(qū)未滿時,包接收會自動進(jìn)行,。一旦收到數(shù)據(jù)包,,就會產(chǎn)生包接收中斷通知主機(jī)。主機(jī)可以用自動讀(AutoRead)接口讀取數(shù)據(jù)包。
2.2 CAN部分電路
    C8051F040已經(jīng)集成CAN控制器,,電路只需1個CAN總線收發(fā)器,。這里使用TI公司的SN65HVD230收發(fā)器。由于SN65HV230收發(fā)器具有強(qiáng)電磁干擾下寬共模電壓范圍的差動接收能力,、交叉線保護(hù),、過熱保護(hù)、失地保護(hù),、過壓保護(hù)等卓越特性,,所以設(shè)計中省去了高速光耦6N137以簡化電路設(shè)計,如果需要增強(qiáng)抗干擾能力,,也可在C8051F040和SN65HV230之間增加2個高速光耦6N137,,以滿足CAN的高速率通信。在CANH與CANL引腳各串聯(lián)1個5 Ω電阻與總線相連以起到限流作用,。

3 軟件設(shè)計及協(xié)議轉(zhuǎn)換
    在充分遵循以太網(wǎng)和CAN協(xié)議的基礎(chǔ)上,,設(shè)計軟件程序,實(shí)現(xiàn)以太網(wǎng)數(shù)據(jù)與CAN數(shù)據(jù)之間的協(xié)議轉(zhuǎn)換與轉(zhuǎn)發(fā),。在本設(shè)計中,,CAN與以太網(wǎng)都采用接收中斷,把數(shù)據(jù)包先存入緩沖區(qū),,然后進(jìn)一步分析數(shù)據(jù),。在數(shù)據(jù)接收時,不允許接收新的數(shù)據(jù)和中斷,,直到數(shù)據(jù)完全接收后,,才將接收緩沖區(qū)釋放。在數(shù)據(jù)發(fā)送時,,先確認(rèn)發(fā)送緩沖區(qū)空閑才寫入數(shù)據(jù),。由于兩者都有內(nèi)部的發(fā)送和接收緩沖區(qū),主程序的主要任務(wù)就是實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)發(fā)以及通訊的握手協(xié)議,。若定義,,由CAN數(shù)據(jù)轉(zhuǎn)發(fā)為以太網(wǎng)數(shù)據(jù),稱為上行通訊,;由以太網(wǎng)數(shù)據(jù)轉(zhuǎn)發(fā)為CAN數(shù)據(jù),,稱為下行通訊。
相對于CAN總線的傳輸速率,,本電路的以太網(wǎng)傳輸速率要高10倍,,緩沖區(qū)大小也差很多。因此在下行通訊中,,需要完成CAN數(shù)據(jù)的拆包和重新打包任務(wù),,屬較慢的操作,,采用定時查詢方式發(fā)送。在上行通訊中,,直接轉(zhuǎn)發(fā)CAN接收到CP2200發(fā)送緩沖區(qū),。
3.1 CAN總線程序
    1)CAN總線發(fā)送任務(wù)  當(dāng)以太網(wǎng)有新的數(shù)據(jù)轉(zhuǎn)發(fā)給CAN時,主程序通知此任務(wù)運(yùn)行,。讀出CP2200接收緩沖區(qū)中的數(shù)據(jù)到內(nèi)存緩沖區(qū),,然后分成不大于8字節(jié)的數(shù)據(jù)包,增加CAN協(xié)議包頭,,送入C8051F040的發(fā)送緩沖區(qū),。
    此任務(wù)耗時最長。CAN發(fā)送任務(wù)收到主程序的運(yùn)行通知,,開始讀取CP2200的接收緩沖區(qū)數(shù)據(jù)到內(nèi)存,,然后采用查詢發(fā)送方式,把數(shù)發(fā)送到C8051F040的發(fā)送緩沖區(qū),。在查詢過程中,,如果C8051F040正處于發(fā)送中,將任務(wù)等待10 ms,,然后再查詢一次,,直到發(fā)送成功。
    2)CAN總線接收任務(wù)  當(dāng)CAN有數(shù)據(jù)接收,,則將數(shù)據(jù)直接送人CP2200的發(fā)送緩沖區(qū),,并通知其工作。此任務(wù)很少占用時間,。在轉(zhuǎn)發(fā)過程中,,由于CAN每次數(shù)據(jù)只有8字節(jié),而CP2200的發(fā)送緩沖區(qū)有2 K,,CP2200的發(fā)送不影響CAN的接收,。所以CAN接收中斷只需在本程序?qū)AN數(shù)據(jù)送入CP2200的發(fā)送緩沖區(qū)后就可打開。
3.2 以太網(wǎng)程序模塊
    以太網(wǎng)接口模塊主要實(shí)現(xiàn)CP2200的驅(qū)動函數(shù),,主要包括初始化函數(shù),、幀發(fā)送函數(shù)和幀接收函數(shù)。
    1)CP2200的初始化模塊  CP2200的初始化是進(jìn)行CP2200寄存器的配置,。CP2200占用C8051F040的外部RAM的地址,,外部存儲器接口(EMIF)被設(shè)置在高端口(端口47),EMIFLE(XBR2·1)位被設(shè)置為0,。然后依次進(jìn)行下面的設(shè)置:配置端口引腳的輸出方式為推挽方式,;配置對應(yīng)EMIF引腳的端口鎖存器為休眠態(tài),設(shè)置為邏輯‘1’,;選擇地址線和數(shù)據(jù)線的非復(fù)用方式,;選擇存儲器模式為不帶塊選擇的分片方式:設(shè)置與片外存儲器或外設(shè)接口的時序,。初始化時按以下步驟進(jìn)行:等待復(fù)位引腳電平升高,;MCU通過中斷請求信號得到振蕩器是否完成初始化,;MCU查詢INT0來確定CP2200自身的初始化是否完成;禁止那些主處理器不監(jiān)視或不處理的事件的中斷,;初始化物理層,;用IOPWR寄存器使能所需要的活動(Ack)、連接(Link)LED,;初始化媒體訪問控制器(MAC),;配置接收過濾器。
    2)以太網(wǎng)數(shù)據(jù)的發(fā)送接收模塊  C8051F040的外部中斷0和定時器0用于TCP/IP協(xié)議棧,。由于C8051F040的處理速度,、內(nèi)部集成的資源有限,而TCP/IP協(xié)議種類繁多,,不可能集成所有的TEP/IP協(xié)議,,所以,使用裁剪后的TCP/IP協(xié)議,。結(jié)合項(xiàng)目的實(shí)際需要,,本設(shè)計中裁剪后的協(xié)議棧包括IP協(xié)議、ARP協(xié)議,、ICMP協(xié)議,、TCP協(xié)議。由于TCP協(xié)議是基于連接的協(xié)議,,在正式收發(fā)數(shù)據(jù)前,,必須和對方經(jīng)過3次對話,建立可靠的連接,,而且當(dāng)數(shù)據(jù)從A端傳到B端后,,B端會發(fā)送一個確認(rèn)包給A端,所以,,TCP協(xié)議適用于對可靠性要求較高的數(shù)據(jù)通信系統(tǒng),。而UDP協(xié)議是面向非連接的協(xié)議,不與對方建立連接,,直接就把數(shù)據(jù)包發(fā)送過去,,當(dāng)數(shù)據(jù)從A端傳到B端后,B端不會發(fā)送一個確認(rèn)包給A端,,此協(xié)議適用于對可靠性要求不高的通信系統(tǒng),。由于該系統(tǒng)應(yīng)用于在線數(shù)字識別系統(tǒng),可靠性要求高,,所以,,該系統(tǒng)采用了TCP協(xié)議,。

4 結(jié)束語
    本文描述了一種CAN數(shù)據(jù)與以太網(wǎng)數(shù)據(jù)轉(zhuǎn)換器的設(shè)計原理與電路構(gòu)成。創(chuàng)新點(diǎn)在于:電路設(shè)計使用高度集成化的網(wǎng)絡(luò)接口芯片CP2200和集成CAN控制器的C8051F040,,在不降低效率的同時,,有效地節(jié)省空間與資源。在遵循CAN與以太網(wǎng)協(xié)議的基礎(chǔ)上,,通過通訊的握手協(xié)議和簡化的以太網(wǎng)協(xié)議,,實(shí)現(xiàn)了以太網(wǎng)數(shù)據(jù)與CAN數(shù)據(jù)的轉(zhuǎn)發(fā),順利地解決了以太網(wǎng)的高速性與CAN的低速率,,以及兩者數(shù)據(jù)包之間的大小矛盾,,能夠保證數(shù)據(jù)的完整和協(xié)議的可靠。本轉(zhuǎn)換器可廣泛應(yīng)用于廠礦,、油田等監(jiān)控設(shè)施的改進(jìn),。
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。