新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA的CAN總線通信接口的設計

        基于FPGA的CAN總線通信接口的設計

        作者: 時間:2010-12-14 來源:網絡 收藏


        2.3 CY7C68013A通信控制程序
        CY7C68013A提供一種量子FIFO的處理架構,使USB接口和應用環境直接共享內部含有的4 K FIF0空間。本文CY7C68013A的控制是以異步SLAVE FIFO方式實現的,對CY7C68013A的邏輯控制實際上是對CY7C68013A內部FIFO的異步讀寫控制。設置CY7C68013A端點2為批量輸入端點(FIF0地址為00),端點6為批量輸出端點(FIF0地址為1O)。判斷CY7C68013A的PA[1:0]端口電平,當PA[1:0]為01時,將接收到的總線數據寫入端點2對應的FIF0空間并上傳給上位機,PA[1:0]為10時,FPGA讀取端點6對應的FIFO內數據。FPGA對CY7C68013A的時序控制嚴格按照芯片手冊完成。
        由于USB數據包與數據幀是基于兩種不同協議的數據格式,因此在FPGA內開辟了2個512x8bit的FIFO緩存,并要進行必要的格式轉換。例如,當從USB總線端注入的數據大于8字節時,需要將數據分成多幀傳送給總線;當數據小于8字節時則在數據后填充0。另外,在數據傳送給CAN總線之前還需要添加適當的幀信息與幀識別碼。

        3 軟件設計
        3.1 USB固件程序

        USB固件程序是在Keil工具上開發完成的,除了進行必要的端點及寄存器配置外,程序中使用了自定義請求命令。自定義請求碼通過USB控制傳輸的方式傳送給固件,固件程序需要響應自定義請求碼的請求信息。本文使用的自定義請求碼為Oxa8,在響應代碼中設置端口PA[1:0]電平值,產生USB控制命令,代碼如下所示。SETUPDAT[2]對應控制傳輸端點的Value值,由上位機應用程序設定。

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


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



        5 結論
        使用該方法設計的CAN總線轉換器優點在于:使用USB總線完成CAN總線與計算機的數據交換,不會影響CAN總線的整體通信速率;通過FPGA控制完成通信,可擴展性好,靈活性強,穩定性高。作為空間相機下位機地檢設備的一部分,FPGA同時還可以完成RS422等總線的通信控制。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 蓬莱市| 江川县| 张家口市| 南充市| 墨玉县| 高唐县| 宁晋县| 德兴市| 阳东县| 名山县| 林周县| 泽普县| 高雄市| 台东县| 神木县| 西盟| 旬邑县| 香格里拉县| 崇文区| 开远市| 湖北省| 淳安县| 叶城县| 乐业县| 翁牛特旗| 清河县| 民权县| 板桥市| 明溪县| 综艺| 贞丰县| 额济纳旗| 博罗县| 寿阳县| 湘潭县| 墨脱县| 临城县| 江源县| 莒南县| 项城市| 望城县|