當前位置:首頁 > 模擬 > 模擬
[導(dǎo)讀] 在遵守USB和CAN協(xié)議的基礎(chǔ)上,USB和CAN都采用了接收中斷方式,通過通信同步的握手協(xié)議,實現(xiàn)了USB數(shù)據(jù)與CAN數(shù)據(jù)之間的協(xié)議轉(zhuǎn)換和轉(zhuǎn)發(fā),很好地解決了USB的高速率和CAN的低速率,以及USB的大數(shù)據(jù)包與CAN的小數(shù)據(jù)包之間的矛盾,能夠保證數(shù)據(jù)完整和協(xié)議的可靠轉(zhuǎn)換。

引 言
    CAN(Controller Area Network,控制器局域網(wǎng))總線是德國Bosch公司在20世紀80年代初為解決汽車中眾多控制與測試儀器間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信協(xié)議,主要用于各種設(shè)備檢測及控制。CAN總線是一種多主機控制局域網(wǎng)標準,具有物理層和數(shù)據(jù)鏈路層的網(wǎng)絡(luò)協(xié)議、多主節(jié)點、無損仲裁、高可靠性及擴充性能好等特點,能有效支持分布式控制系統(tǒng)的串行通信網(wǎng)絡(luò)。一方面,其通信方式靈活,可實現(xiàn)多主方式工作,還可實現(xiàn)點對點、點對多點等多種數(shù)據(jù)收發(fā)方式;另一方面,它能在相對較大的距離間進行較高位速率的數(shù)據(jù)通信。因此無論是在高速網(wǎng)絡(luò)還是在低成本的節(jié)點系統(tǒng),CAN總線都得到了廣泛的應(yīng)用。USB(Universal Serial Bus,通用串行總線)是1995年以Intel為首的7家公司推出的一種協(xié)議規(guī)范,具有即插即用、軟硬件支持廣泛、功耗低、價格低、數(shù)據(jù)傳輸率高、硬件結(jié)構(gòu)標準化和總線拓撲結(jié)構(gòu)完備等特點,因此USB自1995年問世以來,顯示出了強大的生命力。在以計算機為上位機的控制系統(tǒng)中,USB口比較適合作為計算機與測控網(wǎng)絡(luò)的接口。
    隨著計算機技術(shù)的飛速發(fā)展,PC這個已經(jīng)把USB采納為通用總線和通用接口標準的控制器幾乎已經(jīng)成為各個領(lǐng)域操控終端的不二之選。只要接口標準統(tǒng)一,并安裝必要的應(yīng)用軟件和驅(qū)動程序,PC就能接入到各個控制系統(tǒng)中去。因此,為了應(yīng)用的高效率和操控的便利性,完全有必要采用技術(shù)手段實現(xiàn)通過PC的USB接口接入CAN專業(yè)網(wǎng)絡(luò),把USB的通用性和CAN的專業(yè)性結(jié)合起來,把它們的優(yōu)勢融合。

1 芯片的選擇
1.1 CP2102芯片介紹

    CP2102是Silicon Labs公司研發(fā)的一種高度集成的USB轉(zhuǎn)UART橋接芯片,具有價格低、開發(fā)簡單等特點,能夠用最簡單的外部電路和最少的外部器件簡便地實現(xiàn)USB到UART的轉(zhuǎn)換。CP2102包含USB2.O全速功能控制器、USB收發(fā)器、振蕩器和帶有全部調(diào)制解調(diào)器控制信號的異步串行數(shù)據(jù)總線(UART)。該芯片的全部功能集成在一個5mm×5 mm的QFN28封裝的IC中。CP2102內(nèi)置與計算機通信的協(xié)議,工作時,所提供的免費的實用COM口器件驅(qū)動器允許基于CP2102的產(chǎn)品將其作為1個口使用,也就是通常所說的產(chǎn)生1個虛擬的口,而電路無需任何外部的USB器件即可工作,工作特性可以滿足CAN總線的傳輸波特率要求。
1.2 C8051F040芯片介紹
    C8051F系列單片機是Silicon Labs公司推出的混合信號系統(tǒng)級芯片,具有與80C51兼容的CIP一51內(nèi)核,指令集與MCS一51完全兼容。C8051F040內(nèi)部集成的CAN控制器包括一個CAN內(nèi)核、消息RAM(獨立于CIP一51內(nèi)核)、消息處理單元、控制寄存器等。C8051F040內(nèi)部的CAN控制器是一個協(xié)議控制器,它并沒有提供物理層的驅(qū)動器,實現(xiàn)與CAN總線的接口,例如82C250、TJAl050等。數(shù)據(jù)接收和濾波都由CAN控制器完成,不需要CIP一51內(nèi)核的參與。通過這種方式使CAN通信時占用的系統(tǒng)資源最小。CIP一51內(nèi)核通過其內(nèi)部的特殊功能寄存器來配置CAN控制器以及實現(xiàn)數(shù)據(jù)交互。C8051F040內(nèi)部的CAN結(jié)構(gòu)框圖如圖1所示。

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

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

3 USB與CAN之間協(xié)議轉(zhuǎn)換的實現(xiàn)
    設(shè)計在充分遵守USB和CAN協(xié)議的基礎(chǔ)上,實現(xiàn)了USB數(shù)據(jù)與CAN數(shù)據(jù)之間的協(xié)議轉(zhuǎn)換和轉(zhuǎn)發(fā)。在設(shè)計過程中,USB的高速率和CAN的低速率,以及USB的大數(shù)據(jù)包和CAN的小數(shù)據(jù)包之間存在著矛盾,必須認真解決,否則可能造成數(shù)據(jù)丟失、協(xié)議轉(zhuǎn)換不可靠、設(shè)備工作不穩(wěn)定。本設(shè)計中USB和CAN都采用了接收中斷方式,將USB和CAN的數(shù)據(jù)包先存儲下來,作為緩沖進一步處理。在接收中斷服務(wù)程序的數(shù)據(jù)時,只有將數(shù)據(jù)準確地收取下來,才將接收緩沖區(qū)釋放,在此之前拒絕接收新的數(shù)據(jù)。在數(shù)據(jù)發(fā)送時,先確認發(fā)送緩沖區(qū)可用才寫入數(shù)據(jù)。由于兩端接口芯片都有內(nèi)部的發(fā)送和接收緩沖區(qū),主程序的主要任務(wù)就是完成數(shù)據(jù)的轉(zhuǎn)發(fā),以及提供通信同步的握手協(xié)議,防止數(shù)據(jù)丟失和順序錯誤。
    相對于CAN總線傳輸速率,USB總線速率要高得多,128字節(jié)的緩沖區(qū)也比CAN總線芯片8字節(jié)緩沖區(qū)大得多。因此,向CAN接口發(fā)送數(shù)據(jù)需要完成拆包和重新打包的任務(wù),屬較慢的操作,采用定時查詢式發(fā)送。CAN接收任務(wù)時,每次盲接轉(zhuǎn)發(fā)CAN接口收到的8字節(jié)數(shù)據(jù)到USB接口發(fā)送緩沖區(qū),采用2個信號量(CAN—rcv,USB—wr)完成數(shù)據(jù)同步操作。數(shù)據(jù)轉(zhuǎn)發(fā)工作共有以下4個任務(wù)協(xié)調(diào)配合完成。
    (1)USB中斷后續(xù)處理任務(wù)
    CP2102接收到數(shù)據(jù)或發(fā)送完成,都會觸發(fā)中斷程序運行。中斷處理程序只需要簡單地通知此任務(wù)有中斷發(fā)生,以盡量減少中斷關(guān)閉的時間。因此,這個任務(wù)的優(yōu)先級最高,并且一旦開始運行便不再等待其他事件,要盡快處理完成。此任務(wù)根據(jù)USB接口的不同中斷原因,通知其他任務(wù)進行后續(xù)的數(shù)據(jù)處理或轉(zhuǎn)發(fā)工作。
    (2)控制端點信息處理任務(wù)
   
當USB接口接收到主機發(fā)來的USB協(xié)議信息時,此任務(wù)得到通知。根據(jù)主機的要求,該任務(wù)按照USB協(xié)議規(guī)范的數(shù)據(jù)格式對主機應(yīng)答。它主要用于USB設(shè)備枚舉階段,與主機之間進行信息交換。其他時間,此任務(wù)不占用處理器時間。
    (3)CAN總線發(fā)送任務(wù)
   
當USB接口有新的數(shù)據(jù)要轉(zhuǎn)發(fā)到CAN總線時,USB中斷后續(xù)處理任務(wù)通知此任務(wù)運行。讀出USB芯片接收緩沖區(qū)中的數(shù)據(jù)到內(nèi)存緩沖區(qū),然后分解成小于或等于8字節(jié)的數(shù)據(jù)包,增加CAN總線協(xié)議數(shù)據(jù)包頭,送入C805lF040的發(fā)送緩沖區(qū)。微處理器的主要處理時間就是USB數(shù)據(jù)包的分解和重新打包發(fā)送。
    此任務(wù)占用處理器的時間最長。CAN發(fā)送任務(wù)每次等待USB接收中斷觸發(fā)USB_rd信號量后,開始讀取CP2102接收緩沖區(qū)數(shù)據(jù)到內(nèi)存數(shù)組Ep2out_Bur[128],然后采用查詢式發(fā)送方式,將數(shù)據(jù)送到C8051F040的發(fā)送緩沖區(qū),每次8字節(jié)。在查詢過程中,如果C8051F040處于正在發(fā)送中,將任務(wù)休眠3個時鐘嘀嗒(<5 ms),然后再次查詢,避免長時間占用處理器。
    (4)CAN總線接收任務(wù)
    當CAN總線接收到數(shù)據(jù)后,由于數(shù)據(jù)包最多只有8個字節(jié),因此可以一次放入USB接口芯片發(fā)送緩沖區(qū),由主機讀取。此任務(wù)很少占用處理器時間。主要是為了協(xié)調(diào)CAN總線與USB總線之間數(shù)據(jù)轉(zhuǎn)發(fā)的同步,使數(shù)據(jù)包可以按照原來的順序接收到,并且不覆蓋尚未發(fā)送的上一個數(shù)據(jù)包,避免數(shù)據(jù)丟失。CAN接收中斷首先讀C8051F040中斷寄存器,清除中斷標志。然后觸發(fā)CAN—rcv信號量,使CAN接收任務(wù)得以運行。CAN接收任務(wù)然后等待USB發(fā)送完成中斷觸發(fā)USB—wr信號量,表示USB接口可以發(fā)送新的數(shù)據(jù)。由于USB接口緩沖區(qū)較大,并且發(fā)送速度快,CAN接收任務(wù)直接將CAN接收到的數(shù)據(jù)送入USB接口芯片CP2012的發(fā)送緩沖區(qū)。然后打開CAN接收中斷。


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

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉