網站導航:首頁開源項目 USB開源項目:Easy USB 51 Programer  

目錄導航

   
  1、項目簡介
USB開發基礎
1、USB接口的優點及開發難易度
2、USB設備的開發流程
3、USB接口芯片(USB控制器)的選擇
4、了解USB的通訊過程
5、USB命令(請求)和USB描述符
6、實例講解USB的枚舉(配置)過程
准備工作
1、需要哪些工具
2、電路原理圖
3、手工制作您的電路板
4、測試您的硬件
HID設備類
1、讓PC機找到我們的硬件
2、如何成爲一個HID設備(模擬鼠標)
3、如何成爲一個HID設備(模擬鍵盤)
4、如何與HID設備通訊(一)
5、如何與HID設備通訊(二)
6、51編程器的實現
Windows USB 驱动程序(自定义设备)
1、Windows驅動開發基礎
2、開發環境配置
3、第一个实例-Hello Wdm(一)
4、第一个实例-Hello Wdm(二)
5、真正的實例—驅動我們的實驗板
6、真正的實例—測試驅動程序
7、真正的實例—控制LED及讀取按鍵狀態
8、如何編寫應用程序
   

相关産品    淘寶網店
     
 

 
  更多...  
 
 
真正的實例—驅動我們的實驗板 查看/参与此開源項目相关讨论
 

  在“HID 设备类-让PC机找到我们的硬件”一节中,第五步我们修改好的下位机程序在插入主机后提示要求安装驱动程序,现在我们就来完成这个驱动程序。

  首先得准備好下位機程序。

1、首先下載上面提到的下位機程序,將其燒到錄實驗板的主控芯片中,然後將實驗板插到電腦上。

HEX文件

源代碼

 2、打开VC6,选择菜单“DriverStudio”->“DriverWizard”,在下面的对话框中选择“DriverWorks Project”,如下图所示:

3、在下面的對話框中填入工程名,然後點“Next”

4、“Step 2 of 11”设置驱动程序类型,我们选择WDM类型的驱动程序,然后点Next

5、“Step 3 of 11”中选择WDM功能驱动程序

6、“Step 4 of 11”中,一定要选择USB总线,USB Vendor ID和USB Product ID一定要和被驱动的硬件一致,这里的VID是0x0471,PID是0x0666(可以查看设备固件程序设备描述符中的idVendor和idProduct字段取得,也可从设备管理器中找到这个设备的VID和PID)。这里填写的PID和VID是方便生成INF文件使用,所以也可以在以后直接更INF文件

7、“Step 5 of 12”中可以添加所用端点的输入或输出管道,由于USB规定Endpoint0(端点0)是必须存在的默认控制管道,所以我们不需单独对其进行定义,在生成的驱动程序设备类中KusbLowerDevice的实例m_Lower就代表了端点0。这里我们添加两个端点所对应的四个管道

8、“Step 6 of 14”步中使用默认值也可以

9、“Step 7of 14”选择需要处理的IRP

10、“Step 8 of 14”和“Step 9 of 14”:DriverWorks能自动生成批量传输的读和写代码,对于同步传输,可以参考USBISOCH实例,对于中断传输,只需要根据批量传输示例代码作些修改就可以了

11、“Step 10 of 14”直接点Next

12、“Step 11 of 14”也可以直接点Next

13、“Step 12 of 14”:打开设备(Open Device)的方法有两种(最后都用CreateFile函数来打开),一种通过设备连接符(Symbolic Link),另一种是通过Device Interface(不知如何翻译好),第一种方式打开设备所写的代码要比第二种少一些,在后面的例子中我会分别介绍这两种方法。如果选择了“Exclusive”,则此设备在同一时刻只由一个程序打开。

  切換到Buffer頁,選擇“Buffered”選項,對小批量數據的傳輸,可以選擇Buffered,而對于大批量數據的傳輸最好選擇Direct

14、“Step 13 of 14”中可以添加一些自定义的控制请求(一般通过向设备发送厂商请求Vendor Request来实现),应用程序端通过DeviceControl函数来调用这个请求而非WriteFile函数。这里我们添加两个请求,如下所示(IOCTL_LED用来控制扩展板EXT-BOARD-A上的LED状态,IOCTL_GET_KEY用来取得扩展板EXT-BOARD-A上按键状态)

15、最後一步設置如下,最好將FileName項設得簡單一點,運行測試程序時能方便一些

16、打開Easy_USB_51_Programer.rc文件,找到

 
  1. #define VER_FILEDESCRIPTION_STR     "Description string for Easy_USB_51_Programer driver"  

  將其修改爲

 
  1. #define VER_FILEDESCRIPTION_STR     "USB"  

  编译:选择菜单“Driver Studio”->“DDK Build Settings”,查看DDK的路径是否设置正确;然后选择菜单“Build”->“Batch Build”进行编译。

  修改自動生成的INF文件,將[string]字段修改如下:

 
  1. [Strings]       
  2. ProviderName="百合電子工作室"      
  3. MfgName="www.baiheee.com"      
  4. DeviceDesc="Easy USB 51 Programer"      
  5. DeviceClassName="USB"      
  6. SvcDesc="Driver for Easy USB 51 Programer"     

 

將[Version]字段的內容個性如下(影響設備大類):

 
  1. Class="USB"  
  2. ClassGUID={36fc9e60-c465-11cf-8056-444553540000}  

將修改後的INF文件拷貝到驅動程序SYS所在目錄。

 下載編譯好的驅動 

下载源代碼(需要放到C:\Easy_USB_51_Programer目錄)

  然后为我们的设备安装驱动程序,安装过程在这里就不详述了,相信大家都会。当安装好驱动后,在设备管里器里发现多了一个名叫“Easy USB 51 Programer”的设备,如图所示:

 
 
 
本站程序由百合電子工作室開發和維護
Copyright @ baihe electric studio
渝ICP備09006681號-4