<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 元件/連接器 > 設計應用 > 基于CP2102高速USB2.0-CAN適配卡的設計

基于CP2102高速USB2.0-CAN適配卡的設計

—— Design of High Speed USB2.0-CAN Adapter Based on CP2102
作者:王洪義 李堅 陶濤 防空兵指揮學(xué)院 時(shí)間:2009-02-26 來(lái)源:電子產(chǎn)品世界 收藏

摘要:基于橋接芯片,設計了2.0-CAN的適配卡。系統采用和CAN接收中斷、通信同步的握手協(xié)議等方式,解決了的高速率和CAN的低速率、USB的大數據包與CAN的小數據包之間的矛盾,實(shí)現了USB數據與CAN數據之間的協(xié)議轉換和轉發(fā)。
關(guān)鍵詞:;CAN控制器;協(xié)議轉換;USB2.0

本文引用地址:http://dyxdggzs.com/article/91757.htm

引言

  控制器局域網(wǎng)(CAN) 是德國B(niǎo)OSCH公司于1986年為解決汽車(chē)內部測量與執行部件之間的數據通信而開(kāi)發(fā)的一種串行數據通信協(xié)議。它的網(wǎng)絡(luò )模型結構包括物理層、 數據鏈路層和應用層,以雙絞線(xiàn)為信號傳輸介質(zhì),通信速率最高可達1Mbps ( 40m ),直接傳輸距離最遠可以達到10km/5Kbit/s,每條總線(xiàn)可掛接設備多達110個(gè),特別適用于實(shí)時(shí)性要求很高的網(wǎng)絡(luò )。由于其多主的工作方式、優(yōu)良的穩定性和實(shí)時(shí)性能、成熟的仲裁和同步技術(shù),加上開(kāi)放式總線(xiàn)結構、短報文高速通訊、遠程通訊能力、超強的糾錯和擴展功能,以及控制簡(jiǎn)單、應用成本低等優(yōu)點(diǎn),已經(jīng)被越來(lái)越多地應用到廣大網(wǎng)絡(luò )控制系統領(lǐng)域,并被公認為最有前途的現場(chǎng)總線(xiàn)技術(shù)之一。

  USB(通用串行總線(xiàn)),是1995年以Intel為首的7家公司推出的一種協(xié)議規范,用以實(shí)現將將計算機的各種外圍接口統一起來(lái),用帶四根線(xiàn)(兩根電源線(xiàn)和兩根數據線(xiàn))的接口來(lái)實(shí)現任意設備和PC機間的通訊。具有即插即用,軟硬件支持廣泛、低功耗、價(jià)格低、數據傳輸率高、擴充性好、使用靈活、硬件結構標準化高和完備的總線(xiàn)拓撲結構等特點(diǎn),因此USB自問(wèn)世以來(lái),顯示出了強大的生命力,在以計算機為上位機的控制系統中,得到廣泛的應用。

  隨著(zhù)計算機技術(shù)的飛速發(fā)展,PC這個(gè)已經(jīng)把USB采納為通用總線(xiàn)和通用接口標準的控制器幾乎已經(jīng)成為各個(gè)領(lǐng)域操控終端的首要選擇。通過(guò)USB接口,在安裝必要的應用軟件和驅動(dòng)程序之后,PC能接入到各個(gè)控制系統中去。因此,為了提高應用的高效率、操控的便利性,把USB的通用型和CAN的專(zhuān)業(yè)性結合起來(lái),達到優(yōu)勢互補,有必要設計一種高速USB2.0-CAN適配卡,以實(shí)現USB2.0通信協(xié)議與CAN總線(xiàn)通信協(xié)議的轉換。

系統結構

  系統主要包含三部分:微控制器、USB接口和CAN接口的控制部分(見(jiàn)圖1)。其中C8051F040作為系統微控制器。USB接口功能控制器采用 USB轉UART橋接芯片。其中C8051F040作為CAN總線(xiàn)控制器負責與CAN網(wǎng)絡(luò )交換數據,CP2102實(shí)現USB口信息格式與串口格式的轉換,最后由C8051F040操作串口與CP2102交換數據,實(shí)現USB2.0到CAN總線(xiàn)協(xié)議的轉換。


圖1  USB2.0-CAN適配卡框圖

硬件實(shí)現
CP2102

  CP2102是Silicon Labs公司的USB轉UART橋接芯片,具有集成度高、速度高、價(jià)格低廉、開(kāi)發(fā)簡(jiǎn)單等特點(diǎn),能夠用最簡(jiǎn)單的外部電路,最少的外部器件簡(jiǎn)便地實(shí)現USB到UART的轉換。CP2102 包含USB2.0全速功能控制器、USB收發(fā)器、振蕩器和帶有全部的調制解調器控制信號的異步串行數據總線(xiàn)(UART)。CP2102的內部結構如圖2所示,內置有與計算機通信的協(xié)議,工作時(shí),提供的免費的實(shí)用COM口器件驅動(dòng)器允許一個(gè)基于CP2102的產(chǎn)品作為的一個(gè)口使用,也就是通常所說(shuō)的產(chǎn)生一個(gè)虛擬的口,電路無(wú)需任何外部的USB器件即可工作,工作特性可以滿(mǎn)足CAN總線(xiàn)的傳輸波特率要求。


圖2  CP2102的內部結構圖

微控制器

  系統采用Silicon Laboratories公司推出的混合信號系統級單片機C8051F040作為系統的控制器,內部集成的CAN控制器包括一個(gè)CAN內核、消息RAM(獨立于CIP-51內核)、消息處理單元、控制寄存器等但是沒(méi)有提供物理層的驅動(dòng)器,要實(shí)現與CAN總線(xiàn)的接口,還需接口控制器,例如82C250、TJA1050等。數據接收和濾波都是由CAN控制器完成的,不需要CIP-51內核的參與,通過(guò)這種方式使CAN通訊時(shí)占用的系統資源最小。CIP-51內核通過(guò)其內部的特殊功能寄存器來(lái)配置CAN控制器以及實(shí)現數據交互。

電路設計

  系統電路如圖3所示,由CP2102、C8051F040、CAN驅動(dòng)芯片PCA82C250以及光電隔離芯片6N137等組成。CP2102的RTX、TXD引腳分別是串口的接收、輸出端,與單片機的對應引腳相連。USB的終止和恢復信號支持功能便于CP2102器件以及外部電路的電源管理。當在總線(xiàn)上檢測到終止信號時(shí),CP2102將進(jìn)人終止模式。在進(jìn)人終止模式時(shí),CP2102會(huì )發(fā)SUSPEND和信號。但是,SUSPEND和在CP2102復位期間會(huì )暫時(shí)處于高電平。為避免這種情況出現,需要用一個(gè)l0kΩ的電阻來(lái)確保在復位期間保持在低電平。PCA82C250是CAN收發(fā)器,可增加總線(xiàn)驅動(dòng)能力,Rs端接地相連,系統處于高速工作方式。6N137是光電隔離芯片,CAN總線(xiàn)信號CANTX和CANRX從C8051F040出來(lái)后先分別經(jīng)過(guò)高速光耦6N137進(jìn)行電氣隔離,再經(jīng)過(guò)CAN總線(xiàn)控制器接口芯片82C250驅動(dòng),然后接到CAN數據線(xiàn)上。6N137實(shí)現智能節點(diǎn)與CAN總線(xiàn)之間的電氣隔離,不僅提高了節點(diǎn)的可靠性和系統的抗干擾能力,而且也保護了總線(xiàn)及總線(xiàn)上的其它節點(diǎn)??偩€(xiàn)兩端124Ω的電阻對,防止通信信號傳輸到導線(xiàn)端點(diǎn)時(shí)發(fā)生反射。


圖3  適配卡的硬件設計

USB與CAN之間協(xié)議轉換的實(shí)現

  設計在充分遵守USB和CAN協(xié)議的基礎上,實(shí)現了USB數據與CAN數據之間的協(xié)議轉換和轉發(fā)。在設計過(guò)程中,USB的高速率和CAN的低速率、USB的大數據包和CAN的小數據包之間存在著(zhù)矛盾,必須認真解決,否則可能會(huì )造成數據丟失,協(xié)議轉換不可靠,設備工作不穩定。本設計中USB和CAN都采用了接收中斷方式,將USB和CAN的數據包先存儲下來(lái),作為緩沖再進(jìn)一步處理。在中斷服務(wù)程序的數據接收時(shí),只有將數據準確地收取下來(lái),才將接收緩沖區釋放,在此之前拒絕接收新的數據。在數據發(fā)送時(shí),先確認發(fā)送緩沖區可用才寫(xiě)入數據。由于兩端接口芯片都有內部的發(fā)送和接收緩沖區,主程序的主要任務(wù)就是完成數據的轉發(fā),以及提供通信同步的握手協(xié)議,防止數據丟失和順序錯誤。

  對于CAN總線(xiàn)傳輸速率,USB總線(xiàn)速率要高得多,128字節的緩沖區也比CAN總線(xiàn)芯片8字節緩沖區大得多,因此,向CAN接口發(fā)送數據需要完成拆包和重新打包的任務(wù),屬較慢操作,采用定時(shí)查詢(xún)式發(fā)送。CAN接收任務(wù)每次直接轉發(fā)CAN接口收到的8字節數據到USB接口發(fā)送緩沖區,采用兩個(gè)信號量(CAN-rcv,USB-wr)完成數據同步操作。數據轉發(fā)工作共有4個(gè)任務(wù)協(xié)調配合完成:

  (1) USB中斷后續處理任務(wù)

  CP2102接收到數據或發(fā)送完成都會(huì )觸發(fā)中斷程序運行。中斷處理程序只需要簡(jiǎn)單地通知此任務(wù)有中斷發(fā)生,以盡量減少中斷關(guān)閉的時(shí)間。因此,這個(gè)任務(wù)的優(yōu)先級最高,并且一旦開(kāi)始運行不再等待其它事件,盡快處理完成。此任務(wù)根據USB接口的不同中斷原因,通知其他任務(wù)進(jìn)行后續的數據處理或轉發(fā)工作。

  (2)控制端點(diǎn)信息處理任務(wù)

  當USB接口[5]接收到主機發(fā)來(lái)的USB協(xié)議信息時(shí),此任務(wù)得到通知。根據主機的要求,按照USB協(xié)議規范的數據格式對主機應答。主要用于USB設備枚舉階段,與主機之間的信息交換。其它時(shí)間,此任務(wù)不占用處理器時(shí)間。

  (3) CAN總線(xiàn)發(fā)送任務(wù)

  當USB接口有新的數據[6]要轉發(fā)到CAN總線(xiàn)時(shí),USB中斷后續處理任務(wù)通知此任務(wù)運行。讀出USB芯片接收緩沖區中的數據到內存緩沖區,然后分解成小于等于8字節數據包,增加CAN總線(xiàn)協(xié)議數據包頭,送入C8051F040的發(fā)送緩沖區。微處理器的主要處理時(shí)間就是USB數據包的分解和重新打包發(fā)送。此任務(wù)占用處理器的時(shí)間最長(cháng)。CAN發(fā)送任務(wù)每次等待USB接收中斷觸發(fā)USB_ rd信號量后,開(kāi)始讀取CP2102接收緩沖區數據到內存數組Ep2out_ Buf[128],然后采用查詢(xún)式發(fā)送方式,將數據送到C8051F040的發(fā)送緩沖區,每次8字節。在查詢(xún)過(guò)程中,如果C8051F040處于正在發(fā)送中,將任務(wù)休眠3個(gè)時(shí)鐘嘀嗒<5ms),然后再次查詢(xún),避免長(cháng)時(shí)間占用處理器。

  (4) CAN總線(xiàn)接收任務(wù)

  當CAN總線(xiàn)接收[6]到數據后,由于數據包最多只有8個(gè)字節,因此可以一次放入USB接口芯片發(fā)送緩沖區,由主機讀取。此任務(wù)很少占用處理器時(shí)間。主要是為了協(xié)調CAN總線(xiàn)與USB總線(xiàn)之間數據轉發(fā)的同步,使數據包按照原來(lái)的順序接收到,并且不覆蓋尚未發(fā)送的上一個(gè)數據包,避免數據丟失。CAN接收中斷首先讀C8051F040中斷寄存器,清除中斷標志。然后觸發(fā)CAN-rcv信號量,使CAN接收任務(wù)得以運行。CAN接收任務(wù)然后等待USB發(fā)送完成中斷觸發(fā)USB-wr信號量,表示USB接口可以發(fā)送新的數據。由于USB接口緩沖區較大,并且發(fā)送速度快,CAN接收任務(wù)直接將CAN接收到的數據,送入USB接口芯片CP2012的發(fā)送緩沖區。然后打開(kāi)CAN接收中斷。 

結語(yǔ)

  設計在充分遵守USB和CAN協(xié)議的基礎上,USB和CAN都采用了接收中斷方式,通過(guò)通信同步的握手協(xié)議,實(shí)現了USB數據與CAN數據之間的協(xié)議轉換和轉發(fā),很好的解決了USB的高速率和CAN的低速率、USB的大數據包與CAN的小數據包之間的矛盾,能夠保證數據完整,協(xié)議的可靠轉換。使CAN的專(zhuān)業(yè)化操作和實(shí)踐通過(guò)USB變得更加靈活方便。

參考文獻:

[1] CP2102  DataSheet [Z].Silicon Laboratories,2005.
[2] C8051F040 Datasheet[Z].Silicon Laboratories,2003.
[3]潘琢金,施國君.C8051Fxxx高速SOC單片機原理及應用[M].北京:北京航空航天大學(xué)出版社,2002.
[4] PC-USB2.0-CAN轉接卡及其AVRGCC語(yǔ)言實(shí)現[J].微計算機信息,2007年,23卷第2期:299-301.
[5]馬偉.計算機USB系統原理及其主/從機設計[M].北京:北京航空航天大學(xué)出版社,2004.
[6]饒運濤.現場(chǎng)總線(xiàn)CAN原理與應用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2003.
[7]馬忠礦,劉欣.基于CAN總線(xiàn)的智能變頻器的設計與實(shí)現[J].煤礦現代化,2005年第2期.
[8]楊春杰,亢紅波.基于CAN總線(xiàn)的雙通道智能網(wǎng)橋設計及常見(jiàn)問(wèn)題分析[J].航天制造技術(shù),2007年第3期.
[9] 張向文,許學(xué)雷,吳林瑞.CAN總線(xiàn)系統信號傳輸延時(shí)分析[J].導彈與航天運載技術(shù),2006年第3期.
[10]熊健民,胡長(cháng)暉,宋庭新.USB數據采集卡的研制[J].湖北工業(yè)大學(xué)學(xué)報,2007年第3期.

雙絞線(xiàn)傳輸器相關(guān)文章:雙絞線(xiàn)傳輸器原理


關(guān)鍵詞: CP2102 USB 200902

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>