《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > CP2102與C8051F040的USB-CAN轉換器設計
CP2102與C8051F040的USB-CAN轉換器設計
摘要: 隨著計算機技術的飛速發(fā)展,PC這個已經把USB采納為通用總線和通用接口標準的控制器幾乎已經成為各個領域操控終端的不二之選。只要接口標準統(tǒng)一,,并安裝必要的應用軟件和驅動程序,PC就能接入到各個控制系統(tǒng)中去,。因此,,為了應用的高效率和操控的便利性,完全有必要采用技術手段實現(xiàn)通過PC的USB接口接入CAN專業(yè)網絡,,把USB的通用性和CAN的專業(yè)性結合起來,,把它們的優(yōu)勢融合。
Abstract:
Key words :

  引 言

   CAN(Controller Area Network,,控制器局域網)總線是德國Bosch公司在20世紀80年代初為解決汽車中眾多控制與測試儀器間的數(shù)據交換而開發(fā)的一種串行數(shù)據通信協(xié)議,,主要用于各種設備檢測及控制。CAN總線是一種多主機控制局域網標準,,具有物理層和數(shù)據鏈路層的網絡協(xié)議,、多主節(jié)點、無損仲裁,、高可靠性及擴充性能好等特點,,能有效支持分布式控制系統(tǒng)的串行通信網絡。一方面,,其通信方式靈活,,可實現(xiàn)多主方式工作,還可實現(xiàn)點對點,、點對多點等多種數(shù)據收發(fā)方式,;另一方面,它能在相對較大的距離間進行較高位速率的數(shù)據通信,。因此無論是在高速網絡還是在低成本的節(jié)點系統(tǒng),,CAN總線都得到了廣泛的應用。USB(Universal Serial Bus,,通用串行總線)是1995年以Intel為首的7家公司推出的一種協(xié)議規(guī)范,,具有即插即用、軟硬件支持廣泛,、功耗低,、價格低、數(shù)據傳輸率高、硬件結構標準化和總線拓撲結構完備等特點,,因此USB自1995年問世以來,,顯示出了強大的生命力。在以計算機為上位機的控制系統(tǒng)中,,USB口比較適合作為計算機與測控網絡的接口,。

   隨著計算機技術的飛速發(fā)展,PC這個已經把USB采納為通用總線和通用接口標準的控制器幾乎已經成為各個領域操控終端的不二之選,。只要接口標準統(tǒng)一,,并安裝必要的應用軟件和驅動程序,PC就能接入到各個控制系統(tǒng)中去,。因此,,為了應用的高效率和操控的便利性,完全有必要采用技術手段實現(xiàn)通過PC的USB接口接入CAN專業(yè)網絡,,把USB的通用性和CAN的專業(yè)性結合起來,,把它們的優(yōu)勢融合。

  1 芯片的選擇

  1.1 CP2102芯片介紹

   CP2102是Silicon Labs公司研發(fā)的一種高度集成的USB轉UART橋接芯片,,具有價格低,、開發(fā)簡單等特點,能夠用最簡單的外部電路和最少的外部器件簡便地實現(xiàn)USB到UART的轉換,。CP2102包含USB2.O全速功能控制器,、USB收發(fā)器、振蕩器和帶有全部調制解調器控制信號的異步串行數(shù)據總線(UART),。該芯片的全部功能集成在一個5mm×5 mm的QFN28封裝的IC中,。CP2102內置與計算機通信的協(xié)議,工作時,,所提供的免費的實用COM口器件驅動器允許基于CP2102的產品將其作為1個口使用,也就是通常所說的產生1個虛擬的口,,而電路無需任何外部的USB器件即可工作,,工作特性可以滿足CAN總線的傳輸波特率要求。

  1.2 C8051F040芯片介紹

   C8051F系列單片機是Silicon Labs公司推出的混合信號系統(tǒng)級芯片,,具有與80C51兼容的CIP一51內核,,指令集與MCS一51完全兼容。C8051F040內部集成的CAN控制器包括一個CAN內核,、消息RAM(獨立于CIP一51內核),、消息處理單元、控制寄存器等,。C8051F040內部的CAN控制器是一個協(xié)議控制器,,它并沒有提供物理層的驅動器,實現(xiàn)與CAN總線的接口,例如82C250,、TJAl050等,。數(shù)據接收和濾波都由CAN控制器完成,不需要CIP一51內核的參與,。通過這種方式使CAN通信時占用的系統(tǒng)資源最小,。CIP一51內核通過其內部的特殊功能寄存器來配置CAN控制器以及實現(xiàn)數(shù)據交互。C8051F040內部的CAN結構框圖如圖1所示,。

 

CP2102與C8051F040的<a class=USB-CAN轉換器" onclick="get_larger(this)" p="" src="http://files.chinaaet.com/images/20110726/1e0f24a9-bd4a-4f75-b280-bd317322578c.jpg" style="WIDTH: 521px; HEIGHT: 356px" title="USB-CAN轉換器" width="550" />

 

  CAN的控制協(xié)議寄存器包括控制寄存器CANOCN,、狀態(tài)寄存器CANOSTA、測試寄存器CANOTST,、錯誤計數(shù)寄存器,、位定時寄存器、波特CAN控制器,、處理中斷,、監(jiān)視總線狀態(tài)、設定控制器的測試模式等,。CAN控制器收發(fā)的數(shù)據存放在消息RAM中,,CAN處理器有32個消息目標,可以通過配置用于數(shù)據發(fā)送或接收,。這些消息RAM的數(shù)據不能被直接訪問,,而必須通過接口寄存器IFl或IF2來訪問。除此之外,,可以被直接訪問的寄存器是CANOCN,、CANOSTA、CANOTST,。CAN內部其他不能被直接訪問的寄存器通過CANOADR,、CANODATH、CANODATL這三個寄存器來訪問,,這三個寄存器分別表示要訪問的寄存器的地址和數(shù)據,,向CANOADR中寫入要訪問的寄存器地址后,對CANODAT的讀/寫就相當于讀/寫相應的寄存器,。由于C8051F040內部集成了CAN總線控制器,,所以只需外加總線驅動器并加上適當?shù)母綦x就可以了,電路顯得非常簡潔,。

  2 硬件實現(xiàn)

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

CP2102與C8051F040的USB-CAN轉換器設計

  3 USB與CAN之間協(xié)議轉換的實現(xiàn)

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

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

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

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

   (2)控制端點信息處理任務

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

   (3)CAN總線發(fā)送任務

   當USB接口有新的數(shù)據要轉發(fā)到CAN總線時,,USB中斷后續(xù)處理任務通知此任務運行,。讀出USB芯片接收緩沖區(qū)中的數(shù)據到內存緩沖區(qū),然后分解成小于或等于8字節(jié)的數(shù)據包,,增加CAN總線協(xié)議數(shù)據包頭,,送入C805lF040的發(fā)送緩沖區(qū)。微處理器的主要處理時間就是USB數(shù)據包的分解和重新打包發(fā)送,。

   此任務占用處理器的時間最長,。CAN發(fā)送任務每次等待USB接收中斷觸發(fā)USB_rd信號量后,開始讀取CP2102接收緩沖區(qū)數(shù)據到內存數(shù)組Ep2out_Bur[128],,然后采用查詢式發(fā)送方式,,將數(shù)據送到C8051F040的發(fā)送緩沖區(qū),每次8字節(jié),。在查詢過程中,,如果C8051F040處于正在發(fā)送中,將任務休眠3個時鐘嘀嗒(<5 ms),,然后再次查詢,,避免長時間占用處理器。

 

   (4)CAN總線接收任務

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

  結 語

   在遵守USB和CAN協(xié)議的基礎上,,USB和CAN都采用了接收中斷方式,通過通信同步的握手協(xié)議,,實現(xiàn)了USB數(shù)據與CAN數(shù)據之間的協(xié)議轉換和轉發(fā),,很好地解決了USB的高速率和CAN的低速率,以及USB的大數(shù)據包與CAN的小數(shù)據包之間的矛盾,,能夠保證數(shù)據完整和協(xié)議的可靠轉換,。

 

此內容為AET網站原創(chuàng),未經授權禁止轉載,。