女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于芯片實現USB與CAN之間協議轉換設計

電子設計 ? 來源:單片機與嵌入式系統應用 ? 作者:王洪義,趙國豪, ? 2021-05-18 17:04 ? 次閱讀

作者:王洪義,趙國豪,朱銀波 來源:單片機嵌入式系統應用

引言

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

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

1 芯片的選擇

1.1 CP2102芯片介紹

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

1.2 C8051F040芯片介紹

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

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

2 硬件實現

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

3 USB與CAN之間協議轉換的實現

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

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

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

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

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

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

(3)CAN 總線發送任務

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

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

(4)CAN 總線接收任務

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

結語

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

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    459

    文章

    52169

    瀏覽量

    436108
  • 控制器
    +關注

    關注

    114

    文章

    16963

    瀏覽量

    182893
  • usb
    usb
    +關注

    關注

    60

    文章

    8139

    瀏覽量

    270811
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    基于ARM7的CAN-USB轉換器設計

    設計了一種CAN-USB轉換器,實現CAN總線與上位機的實時通信,完成了對CAN總線通信的實時信息采集。
    發表于 10-09 15:39 ?1844次閱讀
    基于ARM7的<b class='flag-5'>CAN-USB</b><b class='flag-5'>轉換</b>器設計

    USBCAN轉換器|CAN總線通信模塊

    模式,可通過軟件配置;支持自動離線管理模式,可通過軟件配置;支持USBCAN總線的協議轉換CAN控制器波特率最高可達1兆位/秒,可以軟件
    發表于 05-27 09:13

    STM32之間CAN協議通訊 精選資料分享

    本教程將介紹 STM32 中的基本 CAN 協議。 在這里我們將看到,如何使用 CAN 協議在兩個 STM32 板之間進行通信。
    發表于 08-03 06:04

    實現CAN與串口UART之間的雙向數據智能轉換

    CANUART-100TL系列智能雙向UART轉CAN模塊具有一路TTL UART串口通道和一路CAN通道,實現CAN與串口 UART之間
    發表于 12-20 07:46

    基于ARM9的USB與多通道CAN轉換器的設計

    介紹了基于嵌入式系統的USB與多通道CAN轉換器的設計。將USB總線與CAN總線的特點相結合,使上位機能夠通過
    發表于 09-15 11:35 ?59次下載

    USB-CAN-RS232總線轉換電路設計及實現

    USB-CAN-RS232總線轉換電路設計及實現 隨著電子設備的大量出現及針對各種控制系統的實際需求,各種通信網絡相繼產生。由于它們的總線結構,通信協議及傳輸特點
    發表于 04-22 17:56 ?2791次閱讀
    <b class='flag-5'>USB-CAN</b>-RS232總線<b class='flag-5'>轉換</b>電路設計及<b class='flag-5'>實現</b>

    基于STM32的CAN_USB轉換模塊

    基于STM32的CAN_USB轉換模塊
    發表于 09-28 14:29 ?103次下載
    基于STM32的<b class='flag-5'>CAN_USB</b><b class='flag-5'>轉換</b>模塊

    如何實現單片機UART串行數據與CAN數據之間相互轉換

    GCAN-601模塊是嵌入式單片機UART串口轉CAN模塊,可實現將UART串行數據與CAN數據之間相互轉換。搭載GCAN-601模塊,用戶
    的頭像 發表于 10-31 16:00 ?2.2w次閱讀

    什么芯片方案可以實現USB與SPI之間進行通信

    工程師,在研發設計電路項目,可能會使用不同標準協議的通信方式;常見的通信方式類型包含USB通信,如U盤的接口是采用USB通信; UART通信,如數字溫濕度傳感器的接口是采用UART通信
    的頭像 發表于 02-07 10:32 ?2.5w次閱讀

    基于FTDI芯片進行USB到UART的轉換設計方案實現

    如今,USB端口已廣泛用于電子設備和計算機之間的數據交易。在許多情況下,不需要直接與USB端口通信,因此電子設計人員使用USB到UART(RS232-Serial)
    的頭像 發表于 04-26 11:10 ?6344次閱讀
    基于FTDI<b class='flag-5'>芯片</b>進行<b class='flag-5'>USB</b>到UART的<b class='flag-5'>轉換</b>設計方案<b class='flag-5'>實現</b>

    CAN總線分析儀工具-CANUSB智能協議轉換

    ? ECAN-U01 CANUSB協議轉換CAN波特率:出廠默認 100K 通訊接口:USB
    發表于 04-23 12:03 ?632次閱讀
    <b class='flag-5'>CAN</b>總線分析儀工具-<b class='flag-5'>CAN</b>轉<b class='flag-5'>USB</b>智能<b class='flag-5'>協議</b><b class='flag-5'>轉換</b>器

    CAN接口與485接口如何實現互相轉換

    CAN接口與485接口如何實現互相轉換CAN總線和RS-485總線都是工業級數據傳輸總線,它們在不同的工業自動化控制應用中被廣泛應用。但是在一些特定的應用場景下,需要將
    的頭像 發表于 09-14 17:52 ?8652次閱讀

    虹科方案 | 如何破解CAN與車載以太網之間數據傳輸和協議轉換的難題?

    在車輛網絡時代,數據傳輸和協議轉換在通信領域中扮演著至關重要的角色。它們不僅能夠實現車輛內部系統之間的互聯互通,還支持車輛與外部網絡進行通信,從而為駕駛者帶來更智能、便捷的駕駛體驗。本
    的頭像 發表于 11-27 09:55 ?1230次閱讀
    虹科方案 | 如何破解<b class='flag-5'>CAN</b>與車載以太網<b class='flag-5'>之間</b>數據傳輸和<b class='flag-5'>協議</b><b class='flag-5'>轉換</b>的難題?

    EtherCAT從站轉CAN總線協議轉換網關(JM-ECT-CAN

    來自EtherCAT的數據給CAN設備使用。 應用廣泛:應用于支持CAN接口的變頻器、步進電機、伺服驅動器、儀表、PLC、DCS、FCS等等。在自動化倉庫和物流輸送系統中,各類搬運設備和傳感器可能使用CAN
    的頭像 發表于 08-15 17:38 ?606次閱讀
    EtherCAT從站轉<b class='flag-5'>CAN</b>總線<b class='flag-5'>協議</b><b class='flag-5'>轉換</b>網關(JM-ECT-<b class='flag-5'>CAN</b>)

    淺談CAN協議轉換模塊

    CAN(Controller Area Network)協議轉換模塊在現代工業自動化、汽車制造、航空航天等領域扮演著至關重要的角色。作為連接不同CAN網絡或
    的頭像 發表于 02-05 16:37 ?366次閱讀