第1章 USB总线概述
1.1 USB总线简介1
1.2 USB总线的优点1
1.3 PHILIPS公司的USB器件介绍1
1.3.1 PHILIPS公司的USB设备器件2
1.3.2 PHILIPS公司的USB主控器件3
1.3.3 PHILIPS公司的OTG器件10
第2章 USB 1.1协议简介
2.1 USB系统构成13
2.2 USB设备的枚举过程14
2.3 USB的分组标识14
2.4 USB标准设备请求16
2.5 USB设备的描述符18
第3章 PDIUSBD12器件介绍
3.1 功能描述25
3.1.1 PDIUSBD12器件特性25
3.1.2 管脚配置25
3.1.3 描述27
3.2 端点描述30
3.3 命令汇总31
3.3.1 初始化命令32
3.3.2 数据流命令36
3.3.3 普通命令40
第4章 USB开发套件
4.1 USB D12 SMART开发套件42
4.1.1 简介42
4.1.2 设置USB D12 SMART套件43
4.1.3 D12端点描述46
4.1.4 连接器描述48
4.2 DP-51下载仿真实验仪52
第5章 单片机的固件编程
5.1 固件编程的思想54
5.2 固件编程的实现56
5.2.1 硬件提取层--EPPHAL.C57
5.2.2 PDIUSBD12命令接口--D12CI.C57
5.2.3 中断服务程序--ISR.C61
5.2.4 协议层--CHAP_9.C, PROTODMA.C69
5.2.5 标准设备请求处理--CHAP_9.C70
5.2.6 厂商请求处理--PROTODMA.C81
5.2.7 主循环--MAINLOOP.C84
5.2.8 其他CPU平台的固件接口的移植89
5.2.9 USB设备枚举的数据传输过程89
第6章 USB驱动程序开发
6.1 使用Windows DDK开发驱动程序96
6.2 驱动程序设计中的基本概念98
6.2.1 五层模型98
6.2.2 IRP(IO请求包)99
6.2.3 FDO. PDO. Filter DO以及IRP在一个设备对象堆栈中的流程99
6.2.4 USB驱动程序相关概念99
6.2.5 USB驱动程序的入口详解100
6.2.6 驱动程序的初始化:BulkUsb_AddDevice101
6.2.7 驱动程序的卸载:BulkUsb_DriverUnload105
6.3 即插即用(PNP)处理例程的编写(IRP_MJ_PNP)105
6.3.1 设备即插即用状态图解105
6.3.2 处理即插即用IRP的主例程BulkUsb_DispatchPnP分析106
6.3.3 处理设备启动IRP:IRP_MN_START_DEVICE108
6.3.3 处理查询停止设备IRP:IRP_MN_QUERY_STOP_DEVICE117
6.3.4 处理取消停止设备IRP:IRP_MN_CANCEL_STOP_DEVICE118
6.3.5 处理停止设备IRP:IRP_MN_STOP_DEVICE119
6.3.6 处理查询卸载设备IRP:IRP_MN_QUERY_REMOVE_DEVICE120
6.3.7 处理取消卸载设备IRP:IRP_MN_CANCEL_REMOVE_DEVICE121
6.3.8 处理意外卸载设备IRP:IRP_MN_SURPRISE_REMOVAL122
6.3.9 处理卸载设备IRP:IRP_MN_REMOVE_DEVICE124
6.3.10 处理查询设备性能IRP:IRP_MN_QUERY_CAPABILITIES125
6.4 电源管理例程的编写(IRP_MJ_POWER)127
6.4.1 电源管理中的基本概念127
6.4.2 处理电源管理IRP的基本规则128
6.4.3 处理电源管理IRP的主例程BulkUsb_DispatchPower分析129
6.4.4 处理电源状态查询IRP:IRP_MN_QUERY_POWER131
6.4.5 处理电源状态设置IRP:IRP_MN_SET_POWER135
6.4.6 处理等待/唤醒IRP:IRP_MN_WAIT_WAKE138
6.4.7 电源操作中的回调例程138
6.5 设备控制例程的编写(IRP_MJ_DEVICE_CONTROL)143
6.6 数据读写例程的编写(IRP_MJ_READ, IRP_MJ_WRITE)146
6.6.1 USB设备数据读写的基本概念146
6.6.2 打开USB设备的IRP:IRP_MJ_CREATE146
6.6.3 关闭USB设备的IRP:IRP_MJ_CLOSE148
6.6.4 读写USB设备的IRP:IRP_MJ_READ, IRP_MJ_WRITE149
6.7 WMI例程的编写(IRP_MJ_SYSTEM_CONTROL)153
6.7.1 关于WMI的基本知识153
6.7.2 处理WMI的主例程:BulkUsb_DispatchSysCtrl154
6.7.3 各种具体的WMI的处理l155
6.8 公用处理例程的编写159
6.8.1 对USB设备的选择性挂起159
6.8.2 对USB设备的等待/唤醒操作(Wait/Wake)168
6.8.3 利用信号量机制确定处理中的IRP的个数171
6.8.4 使用系统IRP来提交URB173
6.8.5 处理堆积的IRP174
6.8.6 取消IRP的工作176
第7章 USB应用程序设计
7.1 查找设备179
7.1.1 获取设备信息集180
7.1.2 识别接口信息181
7.1.3 获得设备路径名182
7.2 打开设备183
7.3 读写USB设备184
7.4 关闭通信187
第8章 USB51S及其EASYD12库的使用
8.1 各端点在固件中的使用188
8.2 固件函数库子程序说明189
8.3 增加用户请求191
8.4 示例程序191
8.5 EasyD12驱动程序库的使用196
第9章 基于USB接口的E2PROM编程器
9.1 概述198
9.2 硬件接口198
9.3 通信协议200
9.3.1 上位机命令(使用端点1)200
9.3.2 读操作回应201
9.3.3 写操作201
9.4 使用说明202
9.4.1 增加D12接收缓冲区监视位202
9.4.2 USB事件标志定义202
9.4.3 USB设备请求寄存器203
9.4.4 Setup包数据缓冲区203
9.4.5 注意事项203
9.5 源代码203
9.5.1 文件MAINLOOP.C清单204
9.5.2 文件ISR.C清单213
9.5.3 文件VI2C_C51.C清单217
9.6 上位机软件设计224
9.6.1 概述224
9.6.2 EasyD12.dll简介225
9.6.3 ZlgEasyD12演示程序简介225
9.6.4 操作演示程序225
9.6.5 使用EasyD12.dll226
9.6.6 注意事项及程序设计227
9.6.7 创意与超越236
第10章 USB开发的注意事项
10.1 电源供电237
10.2 数据传输238
10.3 传输速度238
10.4 PDIUSBD12常见问题解答238
10.4.1 普通产品信息238
10.4.2 关于上电239
10.4.3 上电复位239
10.4.4 挂起239
10.4.5 时钟241
10.4.6 接口242
10.4.7 PDIUSBD12的编程245
10.4.8 其他245
10.5 SMART D12板常见问题解答247
附录
附录1TKS系列单片机实时在线仿真器249
附录2CP系列通用编程器253
附录3周立功单片机发展有限公司通讯录256