《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計 > 設(shè)計應(yīng)用 > 一種CAN總線轉(zhuǎn)換USB接口的設(shè)計方案
一種CAN總線轉(zhuǎn)換USB接口的設(shè)計方案
電子市場
摘要: 為實現(xiàn)CAN總線與計算機的通信,便于CAN總線系統(tǒng)調(diào)試,提出一種基于FPGA的CAN總線轉(zhuǎn)換USB接口設(shè)計方案。利用USB總線與計算機通信,詳細論述了FPGA對SJA1000與CY7C68013A的具體控制過程以及CAN總線的通信實現(xiàn)。這種方法數(shù)據(jù)傳輸速率高,設(shè)計靈活,可擴展成多路總線的通信接口。目前已成功應(yīng)用于空間相機下位機系統(tǒng)的地面檢測設(shè)備中。
Abstract:
Key words :

     摘要:為實現(xiàn)CAN總線與計算機的通信,便于CAN總線系統(tǒng)調(diào)試,提出一種基于FPGA的CAN總線轉(zhuǎn)換USB接口設(shè)計方案。利用USB總線與計算機通信,詳細論述了FPGA對SJA1000與CY7C68013A的具體控制過程以及CAN總線的通信實現(xiàn)。這種方法數(shù)據(jù)傳輸速率高,設(shè)計靈活,可擴展成多路總線的通信接口。目前已成功應(yīng)用于空間相機下位機系統(tǒng)的地面檢測設(shè)備中。

  CAN總線是現(xiàn)場總線的一種,因為其成本低、容錯能力強、支持分布式控制、通信速率高等優(yōu)點在汽車、工業(yè)控制、航天等領(lǐng)域得到廣泛應(yīng)用。但是計算機沒有CAN總線接口,為了進行CAN總線的調(diào)試,必須具有專用的適配卡才能實現(xiàn)與計算機的通信。目前常用的CAN轉(zhuǎn)換器是基于單片機設(shè)計的,一般只適用于單路CAN總線的數(shù)據(jù)轉(zhuǎn)換,可擴展性差。

  在小衛(wèi)星相機下位機系統(tǒng)中使用了多種總線,如CAN總線與衛(wèi)星管理計算機的通信;RS422(或RS485)總線與成像單元等下行單元的通信。在進行相機下位機系統(tǒng)地面調(diào)試時,可能需要多種總線轉(zhuǎn)換器。采用FPGA將不同總線協(xié)議轉(zhuǎn)換成USB2.0、RS232等可與計算機直接交換數(shù)據(jù)的協(xié)議,可增強設(shè)計的靈活性,降低設(shè)計的成本和復(fù)雜性,且可實現(xiàn)多路總線的數(shù)據(jù)通信接口。

  這里以CAN總線通信接口為例,詳細論述了基于FPGA的CAN總線轉(zhuǎn)換USB接口的設(shè)計方案。

  1 系統(tǒng)硬件組成

  實現(xiàn)CAN總線與計算機雙向通信接口的核心是FPGA。它首先接收來自CAN總線的數(shù)據(jù),保存在FPGA內(nèi)部設(shè)計的FIF0緩存中,經(jīng)過內(nèi)部數(shù)據(jù)格式的轉(zhuǎn)換后,由USB控制器讀取并上傳給計算機。而總線數(shù)據(jù)注入過程的數(shù)據(jù)流向與之相反。FPCA選用Xilinx公司的Spartan3的XC3S200,系統(tǒng)硬件結(jié)構(gòu)如圖1所示。

硬件結(jié)構(gòu)框圖

圖1 硬件結(jié)構(gòu)框圖

  1.1 USB接口電路

  USB是一種支持即插即用及熱插拔的串行總線,它具有傳輸速率高、連接靈活、使用方便等優(yōu)點。CYPRESS公司的EZ-USB芯片CY7C68013A支持USB2.0協(xié)議,通信可靠,傳輸速率可達480 Mb/s。CY7C68013A工作在SLAVE FIF0異步通信方式下,接口電路如圖2所示。

CY7C68013A接口電路

圖2 CY7C68013A接口電路

  SLAVE FIFO異步寫周期中,高電平需維持70ns,低電平需維持50ns,理論最高傳輸速率為8Mb/s,而CAN總線的最高傳輸速率為1Mb/s,符合通信要求。端口PA0~PA1用作USB控制器端向FPGA發(fā)送讀寫命令的控制線,由USB固件程序配合上位機端自定義請求代碼產(chǎn)生PA端口的控制信號。另外使用了EEPROM芯片24LC128存放USB固件程序。

  1.2 CAN總線接口電路

  選用Philips公司的SJA1000作為CAN控制器,采用PCA82C250作為CAN收發(fā)器,并在CAN控制器與收發(fā)器之間使用6N137進行光電隔離,以增強抗干擾能力。將MODE引腳接高電平即SJA1000工作在INTEL模式,引腳與復(fù)位芯片MAX706T的RESET引腳相連,進行全局復(fù)位。在FPGA與SJA1000連接時需要使用741V164245電平轉(zhuǎn)換器完成CAN總線5 V TTL電平向3.3 V FPGA I/O電平的轉(zhuǎn)換。另外,SJA1000的RX1引腳與PCA-82C 250的VREF引腳相連,使用輸入比較器旁路功能,可減少內(nèi)部延時,增加正常通信的總線長度。具體的接口電路如圖3所示。

SJA1000接口電路

圖3 SJA1000接口電路

  2 FPGA邏輯控制程序

  2.1 SJA1000邏輯控制

  由于SJA1000地址線與數(shù)據(jù)總線復(fù)用,F(xiàn)PGA不僅僅要產(chǎn)生SJA1000讀寫控制引腳的信號邏輯,還需要模擬單片機等處理器產(chǎn)生對SJA1000的尋址信號,實際上是一個向SJA1000寫地址的過程。根據(jù)SJA1000技術(shù)手冊的時序要求,要完成對SJA1000內(nèi)寄存器的正確讀寫,接口邏輯必須在地址鎖存信號ALE為高電平時將SJA1000的寄存器地址當作數(shù)據(jù)寫入,然后在ALE和片選信號為低電平后使能SJA1000的讀寫控制信號(WR或RD)。SJA1000的邏輯控制采用狀態(tài)機的方式完成,狀態(tài)機流程圖如圖4所示。起始態(tài)為IDLE態(tài),當接收到數(shù)據(jù)讀寫等命令時,進入ADDR-ESS態(tài),向SJA1000寫入相應(yīng)寄存器的地址值。然后根據(jù)命令類型決定下一個態(tài)是寫寄存器狀態(tài)(WR1~WR3)還是讀寄存器狀態(tài)(RD1~RD4)。以寫寄存器為例,在WR1態(tài)ALE、等信號置為非有效態(tài)。將置為有效狀態(tài);在WR2態(tài)ALE、為非有效態(tài).而將信號置為有效態(tài),在時鐘的下降沿將數(shù)據(jù)寫入寄存器。WR3狀態(tài)保持有效,WR信號變?yōu)闊o效,進入IDLE態(tài),一次寫周期完成。

SJA1000邏輯控制狀態(tài)機流程圖

圖4  SJA1000邏輯控制狀態(tài)機流程圖

  2.2 SJA1000讀寫數(shù)據(jù)流程控制

  FPGA對SJA1000控制程序包括SJA1000初始化、SJA1000讀數(shù)據(jù)、SJA1000寫數(shù)據(jù)等部分。SJA1000的初始化是在復(fù)位模式下進行的,在復(fù)位模式下分別設(shè)置時鐘分頻器CDR、總線定時器(BTR0、BTR1)、輸出控制寄存器(OCR)等重要寄存器。SJA1000通信波特率由總線定時器決定,需要與后端節(jié)點的波特率相同才能進行節(jié)點間的正常通信。FPGA上電后需要延時一段時間.等待SJA1000復(fù)位完成才能進行SJA1000初始化。初始化仿真波形如圖5(a)所示。SJA1000內(nèi)部有一個接收緩沖器和一個發(fā)送緩沖器。FPGA對SJA1000的讀寫操作,實際上對這兩個緩沖器的讀寫控制。當FPGA接收CAN總線數(shù)據(jù)時首先讀取SJA1000中斷寄存器IR判斷是否有接收中斷。如果有接收中斷到來則開始讀取緩沖器內(nèi)的8字節(jié)數(shù)據(jù),然后釋放接收緩沖器(寫命令寄存器CMR)。使用Xilinx公司的Chipseope軟件進行板上測試,測試數(shù)據(jù)為(E0,E1,……E7),抓取到的波形如圖5(b)所示。FPGA讀寫SJA1000的流程控制圖如圖6所示。

SJA1000邏輯控制波形圖

圖5  SJA1000邏輯控制波形圖

SJA1000讀寫控制程序流程圖

圖6 SJA1000讀寫控制程序流程圖

  2.3 CY7C68013A通信控制程序

  CY7C68013A提供一種量子FIFO的處理架構(gòu),使USB接口和應(yīng)用環(huán)境直接共享內(nèi)部含有的4 K FIF0空間。本文CY7C68013A的控制是以異步SLAVE FIFO方式實現(xiàn)的,F(xiàn)PGA對CY7C68013A的邏輯控制實際上是對CY7C68013A內(nèi)部FIFO的異步讀寫控制。設(shè)置CY7C68013A端點2為批量輸入端點(FIF0地址為00),端點6為批量輸出端點(FIF0地址為1O)。FPGA判斷CY7C68013A的PA[1:0]端口電平,當PA[1:0]為01時,F(xiàn)PGA將接收到的CAN總線數(shù)據(jù)寫入端點2對應(yīng)的FIF0空間并上傳給上位機,PA[1:0]為10時,F(xiàn)PGA讀取端點6對應(yīng)的FIFO內(nèi)數(shù)據(jù)。FPGA對CY7C68013A的時序控制嚴格按照芯片手冊完成。

  由于USB數(shù)據(jù)包與CAN數(shù)據(jù)幀是基于兩種不同協(xié)議的數(shù)據(jù)格式,因此在FPGA內(nèi)開辟了2個512x8bit的FIFO緩存,并要進行必要的格式轉(zhuǎn)換。例如,當從USB總線端注入的數(shù)據(jù)大于8字節(jié)時,需要將數(shù)據(jù)分成多幀傳送給CAN總線;當數(shù)據(jù)小于8字節(jié)時則在數(shù)據(jù)后填充0。另外,在數(shù)據(jù)傳送給CAN總線之前還需要添加適當?shù)膸畔⑴c幀識別碼。

  3 軟件設(shè)計

  3.1 USB固件程序

  USB固件程序是在Keil工具上開發(fā)完成的,除了進行必要的端點及寄存器配置外,程序中使用了自定義請求命令。自定義請求碼通過USB控制傳輸?shù)姆绞絺魉徒o固件,固件程序需要響應(yīng)自定義請求碼的請求信息。本文使用的自定義請求碼為Oxa8,在響應(yīng)代碼中設(shè)置端口PA[1:0]電平值,產(chǎn)生USB控制命令,代碼如下所示。SETUPDAT對應(yīng)控制傳輸端點的Value值,由上位機應(yīng)用程序設(shè)定。

  3.2 USB驅(qū)動程序及應(yīng)用程序

  使用Cypress公司提供的CY7C68013A通用驅(qū)動程序CyUSB.sys。上位機應(yīng)用程序使用VC編寫,也是基于Cypress提供的C++類庫文件CyAP-I.lib設(shè)計完成的。使用的主要函數(shù)包括:BeginDataXfer、FinishDataXfer、XferData等函數(shù)。應(yīng)用程序中設(shè)計了獨立的數(shù)據(jù)接收線程,線程函數(shù)中不斷地發(fā)送USB數(shù)據(jù)讀命令,并完成批量輸人端點的讀操作。當有數(shù)據(jù)讀入時,與主線程之間采用事件的線程同步方式,將數(shù)據(jù)讀入計算機內(nèi)存并保存。以下是線程函數(shù)中用于發(fā)送USB控制命令的控制傳輸代碼:

  4 實驗調(diào)試與結(jié)果

  為驗證設(shè)計的正確性,使用了周立功公司的USBCAN-I產(chǎn)品,與目標電路板組成雙節(jié)點通信,2個節(jié)點設(shè)置相同波特率500 Kb/s(BTRO= 00,BTR1=1Ch)和相同幀格式,由測試軟件ZLGCANTest發(fā)送一組數(shù)據(jù)(e0h,e1h,……,e7h),上位機應(yīng)用程序接收到的數(shù)據(jù)如圖7所示。反過來由上位機應(yīng)用程序注入指令數(shù)據(jù)e0h,a8h,周立功軟件接收到的數(shù)據(jù)為e0h,a8h,00h,00h……。經(jīng)實驗表明,數(shù)據(jù)收發(fā)正確,近距離通信時,通信速率可高達1 Mb/s。

上位機應(yīng)用程序圖

圖7 上位機應(yīng)用程序圖

  5 結(jié)論

  使用該方法設(shè)計的CAN總線轉(zhuǎn)換器優(yōu)點在于:使用USB總線完成CAN總線與計算機的數(shù)據(jù)交換,不會影響CAN總線的整體通信速率;通過FPGA控制完成通信接口的設(shè)計,可擴展性好,靈活性強,穩(wěn)定性高。作為空間相機下位機地檢設(shè)備的一部分,F(xiàn)PGA同時還可以完成RS422等總線的通信控制。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲精品影院| 久久精品国产69国产精品亚洲| 亚洲图色在线| 亚洲娇小video精品| 激情综合色综合久久| 国产欧美日韩麻豆91| 国产精品国产馆在线真实露脸| 欧美激情视频一区二区三区在线播放| 久久噜噜亚洲综合| 欧美一级淫片播放口| 亚洲一区二区三区在线| 中文一区在线| 一区二区欧美亚洲| 这里只有精品视频在线| 99精品国产在热久久下载| 亚洲欧洲综合另类| 亚洲日本一区二区| 亚洲日本aⅴ片在线观看香蕉| 亚洲高清在线播放| 亚洲国产激情| 91久久精品美女高潮| 亚洲国产精品一区二区尤物区| 久久国产手机看片| 亚洲成人在线网| 亚洲黄色小视频| 亚洲精品免费电影| 夜夜嗨av色综合久久久综合网 | 亚洲视频一二区| 在线综合亚洲欧美在线视频| 一本一本久久a久久精品牛牛影视| 一本色道久久综合精品竹菊| 亚洲视频一区| 香蕉国产精品偷在线观看不卡| 西瓜成人精品人成网站| 午夜精品一区二区三区四区 | 欧美成人精品影院| 欧美精品二区| 欧美午夜精品久久久久免费视 | 久久亚洲欧洲| 欧美二区在线| 欧美日韩中文字幕精品| 国产精品美女久久久久久久| 国产精品自拍在线| 激情久久综艺| 亚洲精品专区| 亚洲一线二线三线久久久| 先锋资源久久| 亚洲黄色视屏| 亚洲视屏在线播放| 香蕉成人伊视频在线观看| 久久九九99视频| 欧美成年视频| 国产精品久久久久久亚洲调教| 国产毛片一区二区| 在线观看国产一区二区| 亚洲国产精品一区二区第一页 | 好吊色欧美一区二区三区视频| 在线播放一区| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 国产一区二区欧美日韩| 亚洲国产高潮在线观看| 亚洲无限av看| 久久精品国产第一区二区三区最新章节| 亚洲精品一区二区在线观看| 午夜一区不卡| 女女同性精品视频| 国产精品高潮呻吟| 亚洲电影欧美电影有声小说| 亚洲一区在线播放| 亚洲日本中文| 久久www成人_看片免费不卡| 欧美顶级少妇做爰| 国产日韩在线看片| 亚洲美女视频网| 久久国产成人| 亚洲自拍偷拍福利| 欧美凹凸一区二区三区视频| 国产精品一区二区三区观看| 亚洲区一区二| 亚洲大胆在线| 欧美亚洲综合在线| 欧美日韩精品欧美日韩精品| 黑人一区二区三区四区五区| 一区二区三区偷拍| 亚洲欧洲一区二区三区在线观看| 香蕉久久精品日日躁夜夜躁| 欧美精品日韩www.p站| 国产欧美一区二区三区久久人妖| 91久久精品久久国产性色也91| 亚洲免费伊人电影在线观看av| 日韩亚洲欧美成人一区| 久久国产婷婷国产香蕉| 欧美日韩国产在线观看| 在线观看视频一区二区| 午夜精品久久久久久久久久久久久| 99热这里只有精品8| 免费观看成人www动漫视频| 国产日韩精品一区| 中文高清一区| 99国产精品视频免费观看一公开 | 一区二区动漫| 日韩视频一区二区三区在线播放免费观看 | 久久人人爽国产| 国产精品日韩精品欧美精品| 亚洲精品欧美在线| 最近看过的日韩成人| 久久免费国产| 国产亚洲欧美日韩一区二区| 国产精品99久久不卡二区| 在线亚洲免费视频| 欧美精品首页| 亚洲区第一页| 亚洲免费电影在线| 欧美电影免费观看| 亚洲国产精品久久久久| 亚洲国产精品精华液网站| 久久精品色图| 国产日韩av在线播放| 亚洲欧美日韩精品久久亚洲区 | 欧美高清在线视频观看不卡| 在线观看成人av| 91久久黄色| 欧美黑人在线播放| 亚洲激情在线观看视频免费| 亚洲精品黄色| 欧美激情一区二区三区在线| 亚洲国产成人久久综合| 最新中文字幕亚洲| 欧美国产国产综合| 亚洲精品乱码久久久久久蜜桃麻豆| 99精品国产一区二区青青牛奶| 欧美极品aⅴ影院| 亚洲精品欧美一区二区三区| 一区二区三区回区在观看免费视频| 欧美精品一区二区三区蜜桃| 亚洲精品一区在线| 亚洲午夜av在线| 国产精品成人在线| 亚洲午夜伦理| 欧美一级理论性理论a| 国产欧美日韩激情| 久久精品国产69国产精品亚洲| 欧美成人一区二区三区| 亚洲精品在线观| 亚洲欧美日本国产有色| 国产人成一区二区三区影院| 久久不射2019中文字幕| 嫩草成人www欧美| 亚洲精品一区二区三区福利| 亚洲伊人色欲综合网| 国产欧美日韩在线视频| 久久国产加勒比精品无码| 麻豆精品在线视频| 亚洲片国产一区一级在线观看| 亚洲色诱最新| 国产精品一区二区三区乱码| 久久精品99国产精品| 欧美激情a∨在线视频播放| 一区二区三区四区蜜桃| 欧美在线视频网站| 在线观看日韩专区| 亚洲午夜久久久| 国产一区二区成人久久免费影院| 91久久久亚洲精品| 欧美色图麻豆| 欧美一区二区大片| 欧美激情第1页| 亚洲自拍偷拍麻豆| 免费视频一区二区三区在线观看| 亚洲精品女av网站| 欧美永久精品| 亚洲欧洲精品一区二区三区 | 亚洲尤物视频网| 麻豆91精品91久久久的内涵| 亚洲精品欧洲| 久久九九精品| 日韩一区二区高清| 久久裸体视频| 亚洲手机视频| 蜜臀av一级做a爰片久久| 日韩一二三在线视频播| 久久精品中文字幕一区二区三区 | 亚洲理伦电影| 久久久av毛片精品| 99爱精品视频| 久久亚洲一区二区三区四区| 99riav国产精品| 久久亚洲精品欧美| 在线亚洲精品福利网址导航| 久久综合久久久| 亚洲一区二区三区在线| 免费短视频成人日韩| 亚洲一区二区三区影院| 欧美成人精精品一区二区频| 亚洲综合日韩| 欧美极品aⅴ影院| 亚洲国产精品黑人久久久| 国产精品美女| 一本色道久久88综合日韩精品| 国产一区二区三区久久 |