新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ATmega8515的USB-CAN適配器的實現

        基于ATmega8515的USB-CAN適配器的實現

        作者: 時間:2013-10-26 來源:網絡 收藏



        圖5  EP2 的Rx 中斷子程序流程

        2. 2  驅動程序編程
          設備驅動程序采用Win2000DDK編寫,在VC6.0+ +環境中編譯. 驅動程序運行于內核模式,其程序組織主要是按功能進行劃分,而不是一種層次結構. 即插即用例程和電源管理例程完全按照USB 標準總線驅動程序參考編寫.一個驅動程序可以被多個類似的硬件使用,但驅動程序的某些全局初始化操作只能在第一次被裝入時執行一次. 而DriverEntry例程就是用于這個目的,它是內核模式驅動程序主入口點. I/O管理器按下面方式調用該例程:
        extern“C”NTSTATUS DriverEntry ( IN PDRIVER OBJ ECT DriverObject , INPUNICODE STRING RegistryPath)
        DriverEntry 的第一個參數是一個指針,指向一個剛被創建的驅動程序對象.
        DriverEntry 的第二個參數是設備服務鍵的鍵名.

        本設計中該例程的各個域設置如下:
        DriverObject - > DriverUnload =
          UsbCan- DriverUnload ;
        DriverObject - > DriverExtension - > AddDevice =
          UsbCan- AddDevice ;
        DriverObject - >MajorFunction[ IRP- MJ - CREATE] =
          UsbCan- DispatchCreate ;
        DriverObject - >MajorFunction[ IRP- MJ - CLOSE] =
          UsbCan- DispatchClose ;
        DriverObject - >MajorFunction[ IRP- MJ - READ] =
           
          UsbCan- DispatchRead ;
        DriverObject - >MajorFunction[ IRP- MJ - WRITE] =
          UsbCan- DispatchWrite ;
        DriverObject - > MajorFunction[ IRP- MJ - INTERNAL - DEVICECONTROL
        ] =
          UsbCan- DispatchInternalControl ;
        DriverObject - >MajorFunction[ IRP- MJ - POWER] =
          UsbCan- DispatchPower ;
        DriverObject - >MajorFunction[ IRP- MJ - PNP] =
          UsbCan- DispatchPnp ;
        DriverObject - > MajorFunction [ IRP- MJ - DEVICE- CONTROL ]
        =
          UsbCan- DispatchControl.

        3  的應用



          本文設計的USB-CAN適配器在分布式PLC 控制系統中的應用如圖6 所示,筆記本電腦通過該適配器和PLC控制系統的CAN總線進行連接,實現了一個筆記本對多個PLC進行程序下載及對多個PLC運行狀況進行監視,特別是在上位機只進行監視的情況下,可以進行熱插拔而不影響系統的運行,給系統調試帶來極大的方便. 經USB測試軟件測試,其最高傳輸速率在40m內達到了1Mb/s.

        參考文獻:

        [1].datasheethttp://www.dzsc.com/datasheet/_.html.
        [2].USBN9603datasheethttp://www.dzsc.com/datasheet/USBN9603_6750.html.
        [3].SJA1000 datasheethttp://www.dzsc.com/datasheet/SJA1000+_609075.html.
        [4].RS-232 datasheethttp://www.dzsc.com/datasheet/RS-232+_584855.html.
        [5].RISCdatasheethttp://www.dzsc.com/datasheet/RISC_1189725.html.
        [6].AT90S1200 datasheethttp://www.dzsc.com/datasheet/AT90S1200+_143803.html.
        [7].EPC1datasheethttp://www.dzsc.com/datasheet/EPC1_300880.html.
        [8].EPC2datasheethttp://www.dzsc.com/datasheet/EPC2_2058984.html.
        [9].EPC4 datasheethttp://www.dzsc.com/datasheet/EPC4+_2058981.html.
        [10].PCA82C200datasheethttp://www.dzsc.com/datasheet/PCA82C200_html.
        [11].6N137datasheethttp://www.dzsc.com/datasheet/6N137_91364.html.
        [12].PCA82C250datasheethttp://www.dzsc.com/datasheet/PCA82C250_.html.
        [13].PLC datasheethttp://www.dzsc.com/datasheet/PLC+_1248813.html.


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 巴林右旗| 武平县| 克什克腾旗| 温宿县| 城市| 綦江县| 电白县| 明星| 文水县| 龙州县| 织金县| 庆城县| 利辛县| 渭南市| 哈密市| 富宁县| 雷州市| 理塘县| 重庆市| 兴仁县| 新邵县| 巴彦县| 商洛市| 团风县| 滦平县| 宝坻区| 合江县| 宝山区| 青铜峡市| 夹江县| 荔浦县| 静海县| 广饶县| 江油市| 通道| 阳泉市| 平和县| 夏邑县| 博爱县| 东明县| 芜湖县|