USB 设备驱动开发备忘
[声明]
1. 本文仅是开发过程中过程的简单记述和杂散心得,并非教程或技术资料文章。
2. 本文旨在为 USB 设备开发过程提供基本过程的参考,而非详细的解决方案。
3. 本文以杂乱无章的形式堆砌,但基本以开发过程的先后为序,如有阅读不便之处请见谅。
4. 若对本文中部分内容感兴趣,欲详细交流,请跟贴指出。
希望本贴能能为大家研讨 USB 设备开发技术提供方便。 本文为开发工作过程中的心得体会,认识粗浅表述不周之处
请见谅。
KKND 08 年 11 月 21 日清晨 发表于 VBGood 论坛
Dreamon-II Labs.
[连载 1]
费了九牛二虎的力气,终于把驱动调通了,前后整整一个月时间,有种欲哭无泪的感觉。。。
泡饭老版曾发过 VB 开发 USB 相关资料的的主题贴,当初看的时候完全是一头雾水。经过一个月的痛苦煎熬,终于领会
了其中奥妙之处。。。
虽然现在 VB 部分的前台应用程序还没开始动手写,但前期设计硬件和开发驱动程序的部分也是开发人员难以回避的问
题,因此想先挖个坑,把从写驱动开始直到完成 VB 前台的过程中遇到的问题和心得记录下来,供日后有需要的坛友参
详。。。
进入正题吧。。。
硬件的设计这里就不具体说了,简单介绍一下配置 CPU 和接口芯片:
CPU:ATMega128 16AU
主频:14.7456MHz
USB 接口:PDIUSBD12
主要功能和资源如下:
4 路高速 AD (12bit,200KSPS),提供 24V 电源,可直接连接传感器;
8 路 PWM (带驱动,2A/通道)可驱动电动机等;
16 路开关量输出 (带驱动0.2A/通道),可驱动小型继电器等器件;
3*8 位并行 I/O (其中 16 路可作外部中断,8 路可作 10 位低速 A/D 输入),可用于多机通讯或键盘/显示接口等;
2 路频率/计数输入,可接转速或流量传感器等;
2 路旋转编码器接口;
1 个 USB1.1 接口;
1 个 COM 接口;
2 个 ISP 分别对应主/协处理器,工作时可用作外部 SPI 接口;
驱动电路提供双电压选择 (=12V),提供两路电源接口和一个电源选择控制接口;
两 CPU 以 USART 相连,也可通过外部 SPI 或并行总线相连,板上实现双机通信功能。
可多板级连实现扩展。
要开发一个完整的 USB 设备,需要制定一个完整的开发计划,以本文所述的电路为例,大致有如下步骤:
硬件部分:
功能需求分析-器件选型-电路结构设计-电路原理图设计-PCB 设计-PCB 制板-
软件部分:
按照常规的设计方法,软件部分设计步骤如下:
固件程序设计-驱动程序设计-应用程序设计
但考虑到前台应用程序要使用 VB 语言实现,并且要为用户提供二次开发的接口,因此采用了如下开发步骤:
固件程序设计(WinAVR 4)-驱动程序设计(DriverWorks+DDK+VC6)-SDK 开发接口设计(VC6)-应用程序设计(VB6)
目前的工作进行到固件程序和驱动程序的开发环节。
由于采用了USB 接口,因此这里说的驱动开发就是 USB 设备驱动程序的开发。
查阅了大量的资料,了解了 USB 协议的基本原理,知道了 USB 通信的大致过程,遍查网络,总算找到了 AVR+D12 固件
的例子。几经周折写出了能实现基本通讯功能的固件程序。于是开始写驱动。
安装 DDK,DriverStudio3.2 (过程及注意事项网上 N 多,从略)。
用 DriverWizard 创建了一个 USB 设备驱动程序的框架,修改了 VID 和 PID,定义了接口和端点,参照示例修改了框架
里一些代码,拼凑出一个基本的驱动程序,编译成 SYS 文件。
把自动生成的 inf 文件和
原创力文档

文档评论(0)