電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>工控技術(shù)>CP2102與C8051F040的USB-CAN轉(zhuǎn)換器設(shè)計(jì)資料下載

CP2102與C8051F040的USB-CAN轉(zhuǎn)換器設(shè)計(jì)資料下載

2021-04-10 | pdf | 197.75KB | 次下載 | 2積分

資料介紹

引言CAN(Controller Area Network,控制器局域網(wǎng))總線是德國Bosch公司在20世紀(jì)80年代初為解決汽車中眾多控制與測(cè)試儀器間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信協(xié)議,主要用于各種設(shè)備檢測(cè)及控制。CAN總線是一種多主機(jī)控制局域網(wǎng)標(biāo)準(zhǔn),具有物理層和數(shù)據(jù)鏈路層的網(wǎng)絡(luò)協(xié)議、多主節(jié)點(diǎn)、無損仲裁、高可靠性及擴(kuò)充性能好等特點(diǎn),能有效支持分布式控制系統(tǒng)的串行通信網(wǎng)絡(luò)。一方面,其通信方式靈活,可實(shí)現(xiàn)多主方式工作,還可實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)、點(diǎn)對(duì)多點(diǎn)等多種數(shù)據(jù)收發(fā)方式;另一方面,它能在相對(duì)較大的距離間進(jìn)行較高位速率的數(shù)據(jù)通信。因此無論是在高速網(wǎng)絡(luò)還是在低成本的節(jié)點(diǎn)系統(tǒng),CAN總線都得到了廣泛的應(yīng)用。USB(Universal Serial Bus,通用串行總線)是1995年以Intel為首的7家公司推出的一種協(xié)議規(guī)范,具有即插即用、軟硬件支持廣泛、功耗低、價(jià)格低、數(shù)據(jù)傳輸率高、硬件結(jié)構(gòu)標(biāo)準(zhǔn)化和總線拓?fù)浣Y(jié)構(gòu)完備等特點(diǎn),因此USB自1995年問世以來,顯示出了強(qiáng)大的生命力。在以計(jì)算機(jī)為上位機(jī)的控制系統(tǒng)中,USB口比較適合作為計(jì)算機(jī)與測(cè)控網(wǎng)絡(luò)的接口。隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,PC這個(gè)已經(jīng)把USB采納為通用總線和通用接口標(biāo)準(zhǔn)的控制器幾乎已經(jīng)成為各個(gè)領(lǐng)域操控終端的不二之選。只要接口標(biāo)準(zhǔn)統(tǒng)一,并安裝必要的應(yīng)用軟件和驅(qū)動(dòng)程序,PC就能接入到各個(gè)控制系統(tǒng)中去。因此,為了應(yīng)用的高效率和操控的便利性,完全有必要采用技術(shù)手段實(shí)現(xiàn)通過PC的USB接口接入CAN專業(yè)網(wǎng)絡(luò),把USB的通用性和CAN的專業(yè)性結(jié)合起來,把它們的優(yōu)勢(shì)融合。1 芯片的選擇1.1 CP2102芯片介紹CP2102是Silicon Labs公司研發(fā)的一種高度集成的USB轉(zhuǎn)UART橋接芯片,具有價(jià)格低、開發(fā)簡(jiǎn)單等特點(diǎn),能夠用最簡(jiǎn)單的外部電路和最少的外部器件簡(jiǎn)便地實(shí)現(xiàn)USB到UART的轉(zhuǎn)換。CP2102包含USB2.0全速功能控制器、USB收發(fā)器、振蕩器和帶有全部調(diào)制解調(diào)器控制信號(hào)的異步串行數(shù)據(jù)總線(UART)。該芯片的全部功能集成在一個(gè)5 mm×5 mm的QFN28封裝的IC中。CP2102內(nèi)置與計(jì)算機(jī)通信的協(xié)議,工作時(shí),所提供的免費(fèi)的實(shí)用COM口器件驅(qū)動(dòng)器允許基于CP2102的產(chǎn)品將其作為1個(gè)口使用,也就是通常所說的產(chǎn)生1個(gè)虛擬的口,而電路無需任何外部的USB器件即可工作,工作特性可以滿足CAN總線的傳輸波特率要求。1.2 C8051F040芯片介紹C8051F系列單片機(jī)是Silicon Labs公司推出的混合信號(hào)系統(tǒng)級(jí)芯片,具有與80C51兼容的CIP51內(nèi)核,指令集與MCS51完全兼容。C8051F040內(nèi)部集成的CAN控制器包括一個(gè)CAN內(nèi)核、消息RAM(獨(dú)立于CIP51內(nèi)核)、消息處理單元、控制寄存器等。C8051F040內(nèi)部的CAN控制器是一個(gè)協(xié)議控制器,它并沒有提供物理層的驅(qū)動(dòng)器,實(shí)現(xiàn)與CAN總線的接口,例如82C250、TJA1050等。數(shù)據(jù)接收和濾波都由CAN控制器完成,不需要CIP51內(nèi)核的參與。通過這種方式使CAN通信時(shí)占用的系統(tǒng)資源最小。CIP51內(nèi)核通過其內(nèi)部的特殊功能寄存器來配置CAN控制器以及實(shí)現(xiàn)數(shù)據(jù)交互。C8051F040內(nèi)部的CAN結(jié)構(gòu)框圖如圖1所示。CAN的控制協(xié)議寄存器包括控制寄存器CAN0CN、狀態(tài)寄存器CAN0STA、測(cè)試寄存器CAN0TST、錯(cuò)誤計(jì)數(shù)寄存器、位定時(shí)寄存器、波特CAN控制器、處理中斷、監(jiān)視總線狀態(tài)、設(shè)定控制器的測(cè)試模式等。CAN控制器收發(fā)的數(shù)據(jù)存放在消息RAM中,CAN處理器有32個(gè)消息目標(biāo),可以通過配置用于數(shù)據(jù)發(fā)送或接收。這些消息RAM的數(shù)據(jù)不能被直接訪問,而必須通過接口寄存器IF1或IF2來訪問。除此之外,可以被直接訪問的寄存器是CAN0CN、CAN0STA、CAN0TST。CAN內(nèi)部其他不能被直接訪問的寄存器通過CAN0ADR、CAN0DATH、CAN0DATL這三個(gè)寄存器來訪問,這三個(gè)寄存器分別表示要訪問的寄存器的地址和數(shù)據(jù),向CAN0ADR中寫入要訪問的寄存器地址后,對(duì)CAN0DAT的讀/寫就相當(dāng)于讀/寫相應(yīng)的寄存器。由于C8051F040內(nèi)部集成了CAN總線控制器,所以只需外加總線驅(qū)動(dòng)器并加上適當(dāng)?shù)母綦x就可以了,電路顯得非常簡(jiǎn)潔。2 硬件實(shí)現(xiàn)系統(tǒng)電路如圖2所示,由CP2102、C8051F040、CAN驅(qū)動(dòng)芯片PCA82C250以及光電隔離芯片6N137等組成。CP2102的RTX、TXD引腳分別是串口的接收及輸出端,與單片機(jī)的對(duì)應(yīng)引腳相連。USB的終止和恢復(fù)信號(hào)支持功能便于CP2102器件以及外部電路的電源管理。當(dāng)在總線上檢測(cè)到終止信號(hào)時(shí),CP2102將進(jìn)入終止模式。在進(jìn)入終止模式時(shí),CP2102會(huì)發(fā)SUSPEND和SUSPEND信號(hào)。但是,SUSPEND和SUSPEND在CP2102復(fù)位期間會(huì)暫時(shí)處于高電平。為避免這種情況出現(xiàn),需要用1個(gè)10 kΩ的電阻來確保SUSPEND在復(fù)位期間保持在低電平。PCA82C250是CAN收發(fā)器,可增加總線驅(qū)動(dòng)能力,RS端接地,系統(tǒng)處于高速工作方式。6N137是光電隔離芯片,CAN總線信號(hào)CANTX和CANRX從C8051F040出來后先分別經(jīng)過高速光耦6N137進(jìn)行電氣隔離,再經(jīng)過CAN總線控制器接口芯片82C250驅(qū)動(dòng),然后接到CAN數(shù)據(jù)線上。6N137實(shí)現(xiàn)智能節(jié)點(diǎn)與CAN總線之間的電氣隔離,不但提高了節(jié)點(diǎn)的可靠性和系統(tǒng)的抗干擾能力,而且也保護(hù)了總線及總線上的其他節(jié)點(diǎn)??偩€兩端124 Ω的電阻對(duì),防止通信信號(hào)傳輸?shù)綄?dǎo)線端點(diǎn)時(shí)發(fā)生反射。3USB與CAN之間協(xié)議轉(zhuǎn)換的實(shí)現(xiàn)設(shè)計(jì)在充分遵守USB和CAN協(xié)議的基礎(chǔ)上,實(shí)現(xiàn)了USB數(shù)據(jù)與CAN數(shù)據(jù)之間的協(xié)議轉(zhuǎn)換和轉(zhuǎn)發(fā)。在設(shè)計(jì)過程中,USB的高速率和CAN的低速率,以及USB的大數(shù)據(jù)包和CAN的小數(shù)據(jù)包之間存在著矛盾,必須認(rèn)真解決,否則可能造成數(shù)據(jù)丟失、協(xié)議轉(zhuǎn)換不可靠、設(shè)備工作不穩(wěn)定。本設(shè)計(jì)中USB和CAN都采用了接收中斷方式,將USB和CAN的數(shù)據(jù)包先存儲(chǔ)下來,作為緩沖進(jìn)一步處理。在接收中斷服務(wù)程序的數(shù)據(jù)時(shí),只有將數(shù)據(jù)準(zhǔn)確地收取下來,才將接收緩沖區(qū)釋放,在此之前拒絕接收新的數(shù)據(jù)。在數(shù)據(jù)發(fā)送時(shí),先確認(rèn)發(fā)送緩沖區(qū)可用才寫入數(shù)據(jù)。由于兩端接口芯片都有內(nèi)部的發(fā)送和接收緩沖區(qū),主程序的主要任務(wù)就是完成數(shù)據(jù)的轉(zhuǎn)發(fā),以及提供通信同步的握手協(xié)議,防止數(shù)據(jù)丟失和順序錯(cuò)誤。相對(duì)于CAN總線傳輸速率,USB總線速率要高得多,128字節(jié)的緩沖區(qū)也比CAN總線芯片8字節(jié)緩沖區(qū)大得多。因此,向CAN接口發(fā)送數(shù)據(jù)需要完成拆包和重新打包的任務(wù),屬較慢的操作,采用定時(shí)查詢式發(fā)送。CAN接收任務(wù)時(shí),每次直接轉(zhuǎn)發(fā)CAN接口收到的8字節(jié)數(shù)據(jù)到USB接口發(fā)送緩沖區(qū),采用2個(gè)信號(hào)量(CANrcv,USBwr)完成數(shù)據(jù)同步操作。數(shù)據(jù)轉(zhuǎn)發(fā)工作共有以下4個(gè)任務(wù)協(xié)調(diào)配合完成。(1) USB中斷后續(xù)處理任務(wù)CP2102接收到數(shù)據(jù)或發(fā)送完成,都會(huì)觸發(fā)中斷程序運(yùn)行。中斷處理程序只需要簡(jiǎn)單地通知此任務(wù)有中斷發(fā)生,以盡量減少中斷關(guān)閉的時(shí)間。因此,這個(gè)任務(wù)的優(yōu)先級(jí)最高,并且一旦開始運(yùn)行便不再等待其他事件,要盡快處理完成。此任務(wù)根據(jù)USB接口的不同中斷原因,通知其他任務(wù)進(jìn)行后續(xù)的數(shù)據(jù)處理或轉(zhuǎn)發(fā)工作。(2) 控制端點(diǎn)信息處理任務(wù)當(dāng)USB接口接收到主機(jī)發(fā)來的USB協(xié)議信息時(shí),此任務(wù)得到通知。根據(jù)主機(jī)的要求,該任務(wù)按照USB協(xié)議規(guī)范的數(shù)據(jù)格式對(duì)主機(jī)應(yīng)答。它主要用于USB設(shè)備枚舉階段,與主機(jī)之間進(jìn)行信息交換。其他時(shí)間,此任務(wù)不占用處理器時(shí)間。(3) CAN總線發(fā)送任務(wù)當(dāng)USB接口有新的數(shù)據(jù)要轉(zhuǎn)發(fā)到CAN總線時(shí),USB中斷后續(xù)處理任務(wù)通知此任務(wù)運(yùn)行。讀出USB芯片接收緩沖區(qū)中的數(shù)據(jù)到內(nèi)存緩沖區(qū),然后分解成小于或等于8字節(jié)的數(shù)據(jù)包,增加CAN總線協(xié)議數(shù)據(jù)包頭,送入C8051F040的發(fā)送緩沖區(qū)。微處理器的主要處理時(shí)間就是USB數(shù)據(jù)包的分解和重新打包發(fā)送。此任務(wù)占用處理器的時(shí)間最長(zhǎng)。CAN發(fā)送任務(wù)每次等待USB接收中斷觸發(fā)USB_ rd信號(hào)量后,開始讀取CP2102接收緩沖區(qū)數(shù)據(jù)到內(nèi)存數(shù)組Ep2out_ Buf[128],然后采用查詢式發(fā)送方式,將數(shù)據(jù)送到C8051F040的發(fā)送緩沖區(qū),每次8字節(jié)。在查詢過程中,如果C8051F040處于正在發(fā)送中,將任務(wù)休眠3個(gè)時(shí)鐘嘀嗒(<5 ms),然后再次查詢,避免長(zhǎng)時(shí)間占用處理器。(4) CAN總線接收任務(wù)當(dāng)CAN總線接收到數(shù)據(jù)后,由于數(shù)據(jù)包最多只有8個(gè)字節(jié),因此可以一次放入U(xiǎn)SB接口芯片發(fā)送緩沖區(qū),由主機(jī)讀取。此任務(wù)很少占用處理器時(shí)間。主要是為了協(xié)調(diào)CAN總線與USB總線之間數(shù)據(jù)轉(zhuǎn)發(fā)的同步,使數(shù)據(jù)包可以按照原來的順序接收到,并且不覆蓋尚未發(fā)送的上一個(gè)數(shù)據(jù)包,避免數(shù)據(jù)丟失。CAN接收中斷首先讀C8051F040中斷寄存器,清除中斷標(biāo)志。然后觸發(fā)CANrcv信號(hào)量,使CAN接收任務(wù)得以運(yùn)行。CAN接收任務(wù)然后等待USB發(fā)送完成中斷觸發(fā)USBwr信號(hào)量,表示USB接口可以發(fā)送新的數(shù)據(jù)。由于USB接口緩沖區(qū)較大,并且發(fā)送速度快,CAN接收任務(wù)直接將CAN接收到的數(shù)據(jù)送入U(xiǎn)SB接口芯片CP2012的發(fā)送緩沖區(qū)。然后打開CAN接收中斷。結(jié)語在遵守USB和CAN協(xié)議的基礎(chǔ)上,USB和CAN都采用了接收中斷方式,通過通信同步的握手協(xié)議,實(shí)現(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)換。(mbbeetchina)
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1TC358743XBG評(píng)估板參考手冊(cè)
  2. 1.36 MB  |  330次下載  |  免費(fèi)
  3. 2開關(guān)電源基礎(chǔ)知識(shí)
  4. 5.73 MB  |  11次下載  |  免費(fèi)
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計(jì)
  8. 0.60 MB  |  3次下載  |  免費(fèi)
  9. 5DIY動(dòng)手組裝LED電子顯示屏
  10. 0.98 MB  |  3次下載  |  免費(fèi)
  11. 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
  12. 0.70 MB  |  2次下載  |  免費(fèi)
  13. 751單片機(jī)PM2.5檢測(cè)系統(tǒng)程序
  14. 0.83 MB  |  2次下載  |  免費(fèi)
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537797次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191186次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)