USB开发手册
第一篇USB总线基础
第1章USB总线开发基础
1.1USB总线的发展
1.1.1USB1.0版本
1.1.2USB1.1版本
1.1.3USB2.0版本
1.1.4USB3.0版本
1.2USB总线对比其他计算机总线
1.2.1早期计算机总线接口的缺点
1.2.2USB总线接口的优势
查看完整
第1章USB总线开发基础
1.1USB总线的发展
1.1.1USB1.0版本
1.1.2USB1.1版本
1.1.3USB2.0版本
1.1.4USB3.0版本
1.2USB总线对比其他计算机总线
1.2.1早期计算机总线接口的缺点
1.2.2USB总线接口的优势
查看完整
傅志辉,副教授,高级架构师,移动电子商务专家库成员。从事企业信息化建设已有17年,具备丰富的移动软硬件开发实践经验,曾担任多个大型软件公司技术顾问,指导实施软硬件一体化产品开发。精通USB、PCI等总线协议开发,熟悉VSNET、PHP、JAVA等多种软件开发语言或平台,精通SQL、Oracle数据库软件,参与过多个大型数据中心的设计与调优。
★《USB开发手册》系统地介绍了当前USB总线接口的协议、工作原理,以及驱动程序设计。本书中还以大量篇幅,全面详细地介绍了在各种应用场合下USB接口的设计实例。本书言简意赅、通俗易懂、知识点介绍详细、实例丰富,使读者能够更快、更好地掌握USB接口的原理及设计方法。
★《USB开发手册》分为三篇,共23章,全面详细地讲述了USB接口的原理及应用实例。一、介绍了USB总线开发基础,总线数据流的结构、管理、类型,以及设备管理;二、介绍了USB程序的开发,包括USB驱动程序开发和USB固件程序开发;三、通过8大实例,详细介绍了在不同的应用场合下USB接口设备的设计,包括完整的电路图和程序设计。
★本书内容全面、结构紧凑、实例丰富。USB接口的初学者通过学习本书可以快速入门,此外本书对具有一定开发经验的设计人员也有很好的参考价值。
查看完整
★《USB开发手册》分为三篇,共23章,全面详细地讲述了USB接口的原理及应用实例。一、介绍了USB总线开发基础,总线数据流的结构、管理、类型,以及设备管理;二、介绍了USB程序的开发,包括USB驱动程序开发和USB固件程序开发;三、通过8大实例,详细介绍了在不同的应用场合下USB接口设备的设计,包括完整的电路图和程序设计。
★本书内容全面、结构紧凑、实例丰富。USB接口的初学者通过学习本书可以快速入门,此外本书对具有一定开发经验的设计人员也有很好的参考价值。
查看完整
第一篇USB总线基础
第1章USB总线开发基础
1.1USB总线的发展
1.1.1USB1.0版本
1.1.2USB1.1版本
1.1.3USB2.0版本
1.1.4USB3.0版本
1.2USB总线对比其他计算机总线
1.2.1早期计算机总线接口的缺点
1.2.2USB总线接口的优势
1.2.3USB总线对比其他计算机总线
1.3认识USB总线
1.3.1USB主机
1.3.2USB集线器设备
1.3.3USB功能设备
1.3.4USB电缆
1.3.5USB连接器
1.4认识USB总线规范
1.4.1USB总线设备类规范
1.4.2USB系统的结构
1.4.3USB总线的供电
1.4.4USB总线电源分配
1.4.5USB总线电源管理
1.5认识USB接口开发
1.5.1USB硬件开发
1.5.2USB驱动开发
1.5.3USB软件开发
第2章USB总线数据流结构
2.1USB总线数据流概述
2.2USB数据流单元:字段
2.2.1同步字段:SYNC
2.2.2包标识字段:PID
2.2.3地址字段:ADDR
2.2.4端点字段:ENDP
2.2.5帧号字段:NUM
2.2.6数据字段:DATA
2.2.7校验字段:CRC
2.3USB数据流构成:信息包
2.3.1令牌包:USB传输类型
2.3.2数据包:USB传输数据
2.3.3握手包:USB传输状态
第3章USB总线数据流管理
3.1USB总线数据流分类
3.2USBIN数据流管理
3.2.1USB设备响应
3.2.2USB主机响应
3.3USBOUT数据流管理
3.4USBSETUP数据流管理
3.5USBPING数据流管理
3.6USBSOF数据流管理
3.7USBSPLIT数据流管理
3.7.1SSPLIT数据流管理
3.7.2CSPLIT数据流管理
3.8USBPRE数据流管理
3.9USB设备列举状态
3.9.1典型的USB设备状态
3.9.2USB设备的连接
3.9.3USB设备的断开
第4章USB总线数据流类型
4.1USB总线数据流传输类型概述
4.2USB控制数据流传输:Control
4.2.1控制传输数据包
4.2.2控制数据流管理
4.3USB中断数据流传输:Interrupt
4.3.1中断传输的数据包
4.3.2中断数据流管理
4.4USB块数据流传输:Bulk
4.4.1块传输的数据包
4.4.2块数据流管理
4.5USB同步数据流传输:Isochronous
4.5.1同步传输的数据包
4.5.2同步数据流管理
4.6USB3.0与USB2.0数据传输的区别
4.6.1数据传输方式
4.6.2编码方式
4.7USB总线容错管理
4.7.1超时管理机制
4.7.2信息包错误管理机制
4.7.3数据触发管理机制
4.7.4EOP错误管理机制
4.7.5总线活动丢失管理机制
第5章USB标准设备管理
5.1USB标准设备管理:描述符
5.1.1USB设备描述符
5.1.2USB配置描述符
5.1.3USB接口描述符
5.1.4USB端点描述符
5.1.5USB字符串描述符
5.1.6USB设备限定描述符
5.1.7USB其他速率配置描述符
5.2USB标准设备管理:设备请求
5.2.1读取状态请求GetStatus
5.2.2清除特性请求ClearFeature
5.2.3设置特性请求SetFeature
5.2.4设置地址请求SetAddress
5.2.5读取描述符请求GetDescription
5.2.6设置描述符请求SetDescriptor
5.2.7读取配置请求GetConfiguration
5.2.8设置配置请求SetConfiguration
5.2.9读取接口请求GetInterface
5.2.10设置接口请求SetInterface
5.2.11同步帧请求SynchFrame
5.3USB标准设备管理示例
5.3.1声明设备请求
5.3.2设备请求的响应
第6章USBHID设备管理
6.1USBHID设备类
6.1.1HID设备的特点
6.1.2HID设备的定义
6.2USBHID设备管理:描述符
6.2.1设备描述符
6.2.2配置描述符
6.2.3接口描述符
6.2.4端点描述符
6.2.5字符串描述符
6.2.6HID类描述符
6.3USBHID设备管理:HID设备类请求
6.3.1GetReport请求(获取报告请求)
6.3.2GetIdle请求(获取空闲速率请求)
6.3.3GetProtocol请求(获取HID协议请求)
6.3.4SetReport请求(设置报告请求)
6.3.5SetIdle请求(设置空闲速率请求)
6.3.6SetProtocol请求(设置HID协议请求)
第7章USB集线器设备管理
7.1USB集线器配置原理
7.1.1集线器设备类
7.1.2集线器的配置过程
7.1.3USB集线器的状态
7.2USB集线器设备管理:描述符
7.2.1集线器设备描述符
7.2.2集线器配置描述符
7.2.3集线器接口描述符
7.2.4集线器端点描述符
7.2.5集线器类描述符
7.3USB集线器设备管理:集线器类请求
7.3.1读取集线器状态请求GetHubStatus
7.3.2读取下行端口状态请求GetPortStatus
7.3.3禁止集线器的特性请求ClearHubFeature
7.3.4禁止下行端口特性请求ClearPortFeature
7.3.5使能集线器特性请求SetHubFeature
7.3.6使能下行端口特性请求SetPortFeature
7.3.7读取描述符请求GetHubDescriptor
7.3.8设置描述符请求SetHubDescriptor
7.3.9清除TT块请求ClearTTBuffer
7.3.10复位TT块请求ResetTT
7.3.11读取TT内部状态请求GetTTState
7.3.12停止TT正常工作请求StopTT
第二篇USB程序开发
第8章Windows驱动程序管理
8.1Windows驱动管理模型:WDM
8.1.1WDM驱动程序特征
8.1.2WDM驱动程序结构
8.1.3WDM驱动程序模型
8.1.4WDM驱动程序构成
8.2入口例程的实现
8.3即插即用例程的实现
8.4分发例程的实现
8.5卸载例程的实现
8.6电源管理例程的实现
8.7设备的即插即用管理
8.7.1WDMPnPIRP的处理规则
8.7.2WDM即插即用的管理
8.7.3USB设备的即插即用
第9章DriverStudio驱动开发工具
9.1DriverStudio驱动开发工具简介
9.1.1DriverStudio软件工具
9.1.2DriverStudio软件的安装及配置
9.1.3配置DriverStudio编译环境
9.2DriverStudio环境下WDM驱动结构
9.2.1基类KDriver
9.2.2即插即用类KPnPDevice
9.2.3物理对象类KPnpLowerDevice
9.3DriverStudio环境下WDM驱动程序实例
9.3.1简单的驱动程序的建立
9.3.2驱动程序设计
9.3.3驱动的安装
9.3.4驱动程序测试
第10章基于DriverStudio的USB接口编程类
10.1USB编程类函数概述
10.2USB设备编程类KUsbLowerDevice
10.2.1激活USB设备配置函数ActivateConfiguration
10.2.2终止USB设备配置函数DeActivateConfiguration
10.2.3初始化厂商请求函数BuildVendorRequest
10.2.4分配类请求函数BuildClassRequest
10.2.5清除特征标志函数ClearFeature
10.2.6设置特征标志函数SetFeature
10.2.7获取状态函数GetStatus
10.2.8获取USB帧号函数GetCurrentFrameNumber
10.2.9未配置状态函数Unconfigure
10.2.10配置状态函数Configure
10.2.11配置接口函数PreconfigureInterface
10.2.12接口描述符函数LocateInterface
10.2.13配置描述符函数Preconfigure
10.2.14删除USB资源函数ReleaseResources
10.2.15字符串描述符函数GetStringDescriptor
10.2.16设备描述符函数GetDeviceDescriptor
10.2.17初始化函数Initialize
10.2.18发送URB函数SubmitUrb
10.3USB接口编程类KUsbInterface
10.3.1使能接口函数SelectAlternate
10.3.2清除特征标志函数ClearFeature
10.3.3设置特征标志函数SetFeature
10.3.4获取状态函数GetStatus
10.3.5初始化厂商请求函数BuildVendorRequest
10.3.6分配类请求函数BuildClassRequest
10.3.7管道函数Pipes
10.3.8管道数量函数NumberOfPipes
10.3.9接口协议函数Protocol
10.3.10接口子类函数Subclass
10.3.11接口类函数Class
10.3.12使能接口号函数AlternateSetting
10.3.13接口数量函数InterfaceNumber
10.3.14初始化函数Initialize
10.3.15关闭接口函数Close
10.3.16是否打开函数IsOpen
10.3.17打开实例函数Open
10.3.18发送URB函数SubmitUrb
10.3.19是否可用函数IsValid
10.4USB管道编程类KUsbPipe
10.4.1初始化函数Initialize
10.4.2打开接口函数Open
10.4.3是否打开函数IsOpen
10.4.4关闭管道函数Close
10.4.5中断传输函数BuildInterruptTransfer
10.4.6控制传输函数BuildControlTransfer
10.4.7块传输函数BuildBulkTransfer
10.4.8同步传输函数BuildIsochronousTransfer
10.4.9清除特征标志函数ClearFeature
10.4.10设置特征标志函数SetFeature
10.4.11获取状态函数GetStatus
10.4.12复位管道函数Reset
10.4.13丢弃函数Abort
10.4.14初始化厂商请求函数BuildVendorRequest
10.4.15初始化类请求函数BuildClassRequest
10.4.16最大帧字节数函数MaximumPacketSize
10.4.17最大传输字节数函数MaximumTransferSize
10.4.18管道句柄函数Handle
10.4.19中断检查间隔函数PollInterval
10.4.20管道端点地址函数EndpointAddress
10.4.21设置最大传输字节数函数SetMaximumTransferSize
10.4.22发送URB函数SubmitUrb
10.4.23传输类型函数Type
10.5USB驱动创建实例
10.5.1USB驱动程序建立
10.5.2USB驱动程序设计
第11章Cypress通用USB驱动程序
11.1驱动程序INF文件简介
11.2驱动程序INF文件处理过程
11.3驱动程序INF文件的结构
11.3.1版本节[Version]
11.3.2源文件盘符节[SourceDisksNames]
11.3.3源文件节[SourceDisksFiles]
11.3.4目标磁盘节[DestinationDirs]
11.3.5供应商节[Manufacturer]
11.3.6默认安装节[DefaultInstall]
11.3.7字符串节[String]
11.4Cypress的通用USB驱动程序概述
11.5CyLoad.inf文件解析
11.5.1CyLoad.inf文件
11.5.2修改设备的VID/PID
11.5.3修改字符串
11.5.4修改GUID
11.5.5修改驱动名称
11.6CyUSB.inf文件解析
11.6.1CyUSB.inf文件
11.6.2修改设备的VID/PID
11.6.3修改字符串
11.6.4修改驱动名称
11.7EZ-USB驱动程序的安装
第12章Cypress的USB接口控制函数
12.1cyioctl控制函数类
12.1.1头文件cyioctl.h
12.1.2获取设备句柄
12.1.3中止I/O端点的请求接口IOCTL_ADAPT_ABORT_PIPE
12.1.4断开USB设备接口IOCTL_ADAPT_CYCLE_PORT
12.1.5获得设备地址接口IOCTL_ADAPT_GET_ADDRESS
12.1.6获取替换接口IOCTL_ADAPT_GET_ALT_INTERFACE_SETTING
12.1.7获取字符串接口IOCTL_ADAPT_GET_DEVICE_NAME
12.1.8获取电源接口IOCTL_ADAPT_GET_DEVICE_POWER_STATE
12.1.9获取版本接口IOCTL_ADAPT_GET_DRIVER_VERSION
12.1.10获取替换名称接口IOCTL_ADAPT_GET_FRIENDLY_NAME
12.1.11获取端点数接口IOCTL_ADAPT_GET_NUMBER_ENDPOINTS
12.1.12获取传输大小接口IOCTL_ADAPT_GET_TRANSFER_SIZE
12.1.13获取USBDI接口IOCTL_ADAPT_GET_USBDI_VERSION
12.1.14复位设备接口IOCTL_ADAPT_RESET_PARENT_PORT
12.1.15复位端点接口IOCTL_ADAPT_RESET_PIPE
12.1.16设置替换接口IOCTL_ADAPT_SELECT_INTERFACE
12.1.17发送控制请求接口IOCTL_ADAPT_SEND_EP0_CONTROL_TRANSFER
12.1.18数据传输接口IOCTL_ADAPT_SEND_NON_EP0_TRANSFER
12.1.19设置电源接口IOCTL_ADAPT_SET_DEVICE_POWER_STATE
12.1.20设置传输字节接口IOCTL_ADAPT_SET_TRANSFER_SIZE
12.2CyAPI控制函数类
12.2.1头文件CyAPI.h
12.2.2块传输端点控制类CCyBulkEndPoint
12.2.3控制传输端点类CCyControlEndPoint
12.2.4中断传输端点控制类CCyInterruptEndPoint
12.2.5同步传输端点控制类CCyIsocEndPoint
12.2.6设备控制类CCyUSBDevice
12.2.7配置信息类CCyUSBConfig
12.2.8端点控制类CCyUSBEndPoint
12.2.9接口控制类CCyUSBInterface
12.3USB控制函数示例
第13章CypressEZ-USB接口芯片
13.1EZ-USB芯片简介
13.2增强型8051CPU结构
13.3特殊功能寄存器
13.4中断系统
13.5I/O端口
13.5.1普通I/O功能
13.5.2第二扩展功能
13.5.3从属FIFO接口模式
13.5.4GPIF模式
13.6指令系统
第14章CypressEZ-USB寄存器详解
14.1特殊功能寄存器
14.1.1端口PA读/写寄存器IOA
14.1.2端口PB读/写寄存器IOB
14.1.3自动指针1地址高字节寄存器AUTOPTRH1
14.1.4自动指针1地址低字节寄存器AUTOPTRL1
14.1.5自动指针2地址高字节寄存器AUTOPTRH2
14.1.6自动指针2地址低字节寄存器AUTOPTRL2
14.1.7端口PC读/写寄存器IOC
14.1.8中断请求INT2清除寄存器INT2CLR
14.1.9中断请求INT4清除寄存器INT4CLR
14.1.10端点状态标志寄存器EP2468STAT
14.1.11数据传输状态标志寄存器EP24FIFOFLGS
14.1.12数据传输状态标志寄存器EP68FIFOFLGS
14.1.13自动指针设置寄存器AUTOPTRSETUP
14.1.14端口PD读/写寄存器IOD
14.1.15端口PE读/写寄存器IOE
14.1.16端口使能寄存器OEA~OEE
14.1.17端点0和1的状态寄存器EP01STAT
14.1.18触发GPIF寄存器GPIFTRIG
14.1.19GPIF数据寄存器GPIFSGLDATH
14.1.20GPIF数据寄存器GPIFSGLDATLX
14.1.21GPIF数据寄存器GPIFSGLDATLNOX
14.2GPIF波形描述寄存器
14.3通用配置寄存器
14.3.1CPU控制和状态寄存器
14.3.2接口配置
14.3.3SlaveFIFO引脚配置
14.3.4FIFO复位
14.3.5断点
14.3.6串行时钟
14.3.7SlaveFIFO接口引脚的极性
14.3.8芯片版本ID
14.3.9芯片版本控制
14.3.10GPIF保持时间
14.4端点配置寄存器
14.4.1端点1IN和端点1OUT配置
14.4.2端点2、4、6、8配置
14.4.3端点2、4、6、8的SlaveFIFO配置
14.4.4端点2、4、6、8的AUTOIN包长度
14.4.5端点的ISOIN包
14.4.6IN数据包强制结束
14.4.7OUT数据包强制结束
14.5中断寄存器
14.5.1端点SlaveFIFO中断
14.5.2BulkIn中断
14.5.3端点握手中断
14.5.4USB中断
14.5.5端点中断
14.5.6GPIF中断
14.5.7USB错误中断
14.5.8USB错误计数限制
14.5.9清除错误计数
14.5.10INT2自动向量
14.5.11INT4自动向量
14.5.12INT2和INT4的SETUP
14.6输入/输出寄存器
14.6.1端口A的替换配置
14.6.2端口C的替换配置
14.6.3端口E的替换配置
14.6.4XTALIN时钟源
14.6.5I2C总线控制和状态
14.6.6I2C总线数据
14.6.7I2C总线控制
14.6.8自动指针的MOVX操作
14.7USB控制寄存器
14.7.1USB控制和状态
14.7.2进入挂起状态
14.7.3唤醒控制及状态
14.7.4数据触发控制
14.7.5USB帧计数
14.7.6USB微帧计数
14.7.7USB功能地址
14.8端点操作寄存器
14.8.1端点0计数
14.8.2端点1计数
14.8.3端点2和端点6的Byte计数高位
14.8.4端点4和端点8的Byte计数高位
14.8.5端点2、4、6、8计数的低位
14.8.6端点0控制和状态
14.8.7端点1控制和状态
14.8.8端点2控制和状态
14.8.9端点4控制和状态
14.8.10端点6控制和状态
14.8.11端点8控制和状态
14.8.12端点2和端点4的FIFO标志
14.8.13端点6和端点8的FIFO标志
14.8.14端点2的SlaveFIFO字节计数高位
14.8.15端点6的SlaveFIFO字节计数高位
14.8.16端点4和端点8的SlaveFIFO字节计数高位
14.8.17端点2、4、6和端点8SlaveFIFO字节计数低位
14.8.18Setup数据指针地址
14.8.19Setup指针自动模式
14.8.208字节Setup数据
14.9GPIF/FIFOs寄存器
14.9.1GPIF波形选择
14.9.2GPIF完成和空闲
14.9.3CTL的输出状态
14.9.4GPIF地址
14.9.5GPIF流动状态
14.9.6GPIF处理字节计数
14.9.7端点2、4、6和端点8的GPIF标志选择
14.9.8端点2、4、6和端点8的GPIF停止事务
14.9.9端点2、4、6和端点8的GPIF触发
14.9.10GPIF数据
14.9.11GPIFRDY引脚的配置
14.9.12GPIFRDY引脚状态
14.9.13终止GPIF循环
14.1端点缓冲寄存器
14.10.1端点0
14.10.2端点1IN
14.10.3端点1OUT
14.10.4端点2
14.10.5端点4
14.10.6端点6
14.10.7端点8
第15章CypressEZ-USB固件设计
15.1EZ-USB开发工具包
15.1.1安装开发工具包
15.1.2开发包工具简介
15.2EZ-USB基本固件框架
15.2.1基本固件框架的建立
15.2.2基本电路图
15.2.3固件设计和运行
15.3EZ-USB固件程序设计
15.3.1USB端口读/写的程序设计
15.3.2USB端口读/写的固件仿真调试
15.3.3USB端点的数据发送和采集
15.3.4数据发送和采集仿真调试
第三篇USB开发实例
第16章USB接口LED数码管显示器实例
16.1USB控制端点0请求
16.1.1USB控制传输流程
16.1.2USB设备请求及固件响应
16.1.3自定义请求
16.2LED数码管显示器
16.2.1共阳极7段LED
16.2.2共阴极7段LED
16.3电路原理图
16.3.1电源部分电路
16.3.2USB部分电路
16.4USB固件程序设计
16.4.1主程序文件
16.4.2功能实现代码
16.4.3自定义请求的定义
16.4.4USB描述符
16.4.5固件程序安装及调试
16.5USB主机程序设计
16.5.1控制函数
16.5.2建立项目
16.5.3程序设计
16.5.4编译程序并运行
第17章USB自定义设备实例
17.1EZ-USB的启动模式
17.1.1EZ-USB的启动模式
17.1.2默认USB设备状态
17.2EZ-USB的EEPROM引导启动
17.2.1没有EEPROM,或者EEPROM的首字节不合法
17.2.2首字节为0xC0的EEPROM启动
17.2.3首字节为0xC2的EEPROM启动
17.2.4配置字节
17.2.5设备请求控制位RENUM
17.2.6固件下载和重列举
17.3USB自定义设备实例
17.3.1硬件选型的写入
17.3.2EEPROM读/写电路设计
17.4EEPROM读/写程序
17.4.1宏定义
17.4.2延时函数
17.4.3基本操作函数
17.4.4I2C读/写函数
17.4.5主程序
17.4.6编译工程
17.5USB自定义设备电路设计
17.6USB自定义设备固件程序设计
17.6.1主程序文件
17.6.2请求响应函数
17.6.3初始化子程序
17.6.4功能子程序
17.6.5自定义请求的定义
17.7USB描述符
17.7.1设备描述符
17.7.2高速配置描述符
17.7.3全速配置描述符
17.7.4字符串描述符
17.8驱动程序设计
17.8.1编辑PMDriverLoad.inf文件
17.8.2编辑QKDPMDriver.inf文件
17.9驱动程序的安装
17.9.1安装驱动
17.9.2测试设备
17.1固件仿真调试
17.11主机程序设计
17.11.1建立工程
17.11.2用户界面设计
17.11.3程序代码设计
17.11.4编译执行
第18章USB的RAM读/写实例
18.1EZ-USBFX2LP的存储器
18.1.1内部数据RAM
18.1.2外部程序和数据存储空间
18.1.3EZ-USBFX2LP的内存映射
18.1.4Von-Neumannizing片外程序和数据存储器
18.1.50xE000~0xFFFF之间的片内数据存储器
18.2USB的RAM读/写电路设计
18.2.1电路原理图
18.2.2USB接口说明
18.2.3I2C总线接口芯片PCF8574
18.3建立USB固件程序项目
18.4主程序文件
18.4.1宏定义和函数变量声明
18.4.2读/写RAM区域函数
18.4.3错误码分析函数
18.4.4字符串输出函数
18.4.5主函数
18.5头文件简介
18.5.1常量定义
18.5.2宏定义
18.5.3数据类型
18.5.4全局声明
18.5.5函数声明
第19章USB自动数据传输实例
19.1SlaveFIFO模式简介
19.1.1SlaveFIFO模式的引脚
19.1.2典型的数据传输时序
19.2SlaveFIFO模式的固件设计
19.2.1SlaveFIFO固件基础
19.2.2AUTOIN/AUTOOUT方式
19.2.3CPU访问OUT数据包
19.2.4CPU访问IN数据包
19.2.5AUTOIN/AUTOOUT方式初始化
19.3USB自动数据传输实例
19.3.1电路设计
19.3.2外部控制逻辑程序设计
19.3.3USB固件程序设计
19.3.4固件仿真调试
19.3.5主机控制函数简介
19.3.6上位机程序设计
19.3.7程序运行
第20章USB高速数据采集实例
20.1EZ-USB的GPIF模式
20.1.1GPIF模式简介
20.1.2GPIF的硬件组成
20.1.3GPIF硬件配置
20.2GPIF波形图编辑
20.2.1GPIF寄存器
20.2.2可编程GPIF波形
20.2.3波形图设计工具
20.2.4波形图设计实例
20.3GPIF固件编程
20.3.1单字节读数据传输
20.3.2单字节写数据传输
20.3.3FIFO读数据传输
20.3.4FIFO写数据传输
20.4基于GPIF模式的高速数据采集电路
20.4.1数据采集电路图
20.4.2外部FIFO接口
20.5数据采集波形图编辑
20.5.1接口设计
20.5.2数据读/写设计
20.5.3波形描述符文件
20.6固件程序设计
20.6.1USB描述符
20.6.2主程序
20.6.3功能实现文件
20.6.4初始化代码
20.6.5数据传输函数
20.6.6调度函数
20.6.7自定义请求
20.7USB主机程序设计
20.7.1创建主机程序
20.7.2界面设计
20.7.3主机程序初始化
20.7.4按钮功能实现
20.7.5线程处理
第21章USBHID设备设计实例
21.1简易USBHID键盘原理图
21.2USB固件程序开发
21.2.1建立USB固件程序
21.2.2键盘描述符
21.2.3主程序文件
21.2.4功能实现代码
21.3设备测试
第22章USB转串口实例
22.1CH341芯片简介
22.1.1CH341芯片的特点
22.1.2异步串口方式
22.1.3打印口
22.1.4并口
22.1.5同步串口
22.1.6功能配置
22.2USB转串口实例
22.2.1电路图
22.2.2硬件介绍
22.2.3连接使用
第23章控制USB接口打印机实例
23.1CH375A接口芯片
23.1.1CH375A概述
23.1.2CH375A内部结构
23.2CH375A基本指令
23.2.1设置设备地址命令SET_USB_ADDR
23.2.2设置端点接收器命令SET_ENDP6
23.2.3设置端点发送器命令SET_ENDP7
23.2.4设置重试次数命令SET_RETRY
23.2.5事务执行命令ISSUE_TOKEN
23.2.6清除端点错误命令CLR_STALL
23.2.7设置地址命令SET_ADDRESS
23.2.8获取描述符命令GET_DESCR
23.2.9设置USB配置命令SET_CONFIG
23.2.10读取数据块命令RD_USB_DATA0
23.2.11延时100µS命令DELAY_100US
23.2.12查询连接状态命令TEST_CONNECT
23.2.13同步令牌事务命令ISSUE_TKN_X
23.2.14自动配置设备命令AUTO_SETUP
23.3USB存储设备类指令
23.3.1硬件复位命令RESET_ALL
23.3.2测试工作状态命令CHECK_EXIST
23.3.3设置工作模式命令SET_USB_MODE
23.3.4获取中断状态命令GET_STATUS
23.3.5设置串口波特率命令SET_BAUDRATE
23.3.6读取数据块命令RD_USB_DATA
23.3.7写入数据块命令WR_USB_DATA7
23.3.8终止命令ABORT_NAK
23.3.9初始化存储设备命令DISK_INIT
23.3.10获取物理容量命令DISK_SIZE
23.3.11读取数据块命令DISK_READ
23.3.12读操作命令DISK_RD_GO
23.3.13写入数据块命令DISK_WRITE
23.3.14写操作命令DISK_WR_GO
23.3.15获取版本命令GET_IC_VER
23.3.16低功耗状态命令ENTER_SLEEP
23.3.17设置逻辑单元号命令SET_DISK_LUN
23.3.18查询特性命令DISK_INQUIRY
23.3.19检查存储设备是否就绪命令DISK_READY
23.3.20检查错误命令DISK_R_SENSE
23.3.21获取最大逻辑单元号命令DISK_MAX_LUN
23.4接口方式
23.4.1并行接口
23.4.2串行接口
23.5USB打印机控制实例
23.5.1USB打印机控制方式
23.5.2电路图
23.5.3项目建立
23.6头文件
23.6.1指令声明
23.6.2操作状态及中断状态
23.6.3请求类型
23.7程序设计
23.7.1头文件
23.7.2参数及结构定义
23.7.3基本操作函数
23.7.4数据同步及读/写
23.7.5主机操作
23.7.6主函数
^ 收 起
第1章USB总线开发基础
1.1USB总线的发展
1.1.1USB1.0版本
1.1.2USB1.1版本
1.1.3USB2.0版本
1.1.4USB3.0版本
1.2USB总线对比其他计算机总线
1.2.1早期计算机总线接口的缺点
1.2.2USB总线接口的优势
1.2.3USB总线对比其他计算机总线
1.3认识USB总线
1.3.1USB主机
1.3.2USB集线器设备
1.3.3USB功能设备
1.3.4USB电缆
1.3.5USB连接器
1.4认识USB总线规范
1.4.1USB总线设备类规范
1.4.2USB系统的结构
1.4.3USB总线的供电
1.4.4USB总线电源分配
1.4.5USB总线电源管理
1.5认识USB接口开发
1.5.1USB硬件开发
1.5.2USB驱动开发
1.5.3USB软件开发
第2章USB总线数据流结构
2.1USB总线数据流概述
2.2USB数据流单元:字段
2.2.1同步字段:SYNC
2.2.2包标识字段:PID
2.2.3地址字段:ADDR
2.2.4端点字段:ENDP
2.2.5帧号字段:NUM
2.2.6数据字段:DATA
2.2.7校验字段:CRC
2.3USB数据流构成:信息包
2.3.1令牌包:USB传输类型
2.3.2数据包:USB传输数据
2.3.3握手包:USB传输状态
第3章USB总线数据流管理
3.1USB总线数据流分类
3.2USBIN数据流管理
3.2.1USB设备响应
3.2.2USB主机响应
3.3USBOUT数据流管理
3.4USBSETUP数据流管理
3.5USBPING数据流管理
3.6USBSOF数据流管理
3.7USBSPLIT数据流管理
3.7.1SSPLIT数据流管理
3.7.2CSPLIT数据流管理
3.8USBPRE数据流管理
3.9USB设备列举状态
3.9.1典型的USB设备状态
3.9.2USB设备的连接
3.9.3USB设备的断开
第4章USB总线数据流类型
4.1USB总线数据流传输类型概述
4.2USB控制数据流传输:Control
4.2.1控制传输数据包
4.2.2控制数据流管理
4.3USB中断数据流传输:Interrupt
4.3.1中断传输的数据包
4.3.2中断数据流管理
4.4USB块数据流传输:Bulk
4.4.1块传输的数据包
4.4.2块数据流管理
4.5USB同步数据流传输:Isochronous
4.5.1同步传输的数据包
4.5.2同步数据流管理
4.6USB3.0与USB2.0数据传输的区别
4.6.1数据传输方式
4.6.2编码方式
4.7USB总线容错管理
4.7.1超时管理机制
4.7.2信息包错误管理机制
4.7.3数据触发管理机制
4.7.4EOP错误管理机制
4.7.5总线活动丢失管理机制
第5章USB标准设备管理
5.1USB标准设备管理:描述符
5.1.1USB设备描述符
5.1.2USB配置描述符
5.1.3USB接口描述符
5.1.4USB端点描述符
5.1.5USB字符串描述符
5.1.6USB设备限定描述符
5.1.7USB其他速率配置描述符
5.2USB标准设备管理:设备请求
5.2.1读取状态请求GetStatus
5.2.2清除特性请求ClearFeature
5.2.3设置特性请求SetFeature
5.2.4设置地址请求SetAddress
5.2.5读取描述符请求GetDescription
5.2.6设置描述符请求SetDescriptor
5.2.7读取配置请求GetConfiguration
5.2.8设置配置请求SetConfiguration
5.2.9读取接口请求GetInterface
5.2.10设置接口请求SetInterface
5.2.11同步帧请求SynchFrame
5.3USB标准设备管理示例
5.3.1声明设备请求
5.3.2设备请求的响应
第6章USBHID设备管理
6.1USBHID设备类
6.1.1HID设备的特点
6.1.2HID设备的定义
6.2USBHID设备管理:描述符
6.2.1设备描述符
6.2.2配置描述符
6.2.3接口描述符
6.2.4端点描述符
6.2.5字符串描述符
6.2.6HID类描述符
6.3USBHID设备管理:HID设备类请求
6.3.1GetReport请求(获取报告请求)
6.3.2GetIdle请求(获取空闲速率请求)
6.3.3GetProtocol请求(获取HID协议请求)
6.3.4SetReport请求(设置报告请求)
6.3.5SetIdle请求(设置空闲速率请求)
6.3.6SetProtocol请求(设置HID协议请求)
第7章USB集线器设备管理
7.1USB集线器配置原理
7.1.1集线器设备类
7.1.2集线器的配置过程
7.1.3USB集线器的状态
7.2USB集线器设备管理:描述符
7.2.1集线器设备描述符
7.2.2集线器配置描述符
7.2.3集线器接口描述符
7.2.4集线器端点描述符
7.2.5集线器类描述符
7.3USB集线器设备管理:集线器类请求
7.3.1读取集线器状态请求GetHubStatus
7.3.2读取下行端口状态请求GetPortStatus
7.3.3禁止集线器的特性请求ClearHubFeature
7.3.4禁止下行端口特性请求ClearPortFeature
7.3.5使能集线器特性请求SetHubFeature
7.3.6使能下行端口特性请求SetPortFeature
7.3.7读取描述符请求GetHubDescriptor
7.3.8设置描述符请求SetHubDescriptor
7.3.9清除TT块请求ClearTTBuffer
7.3.10复位TT块请求ResetTT
7.3.11读取TT内部状态请求GetTTState
7.3.12停止TT正常工作请求StopTT
第二篇USB程序开发
第8章Windows驱动程序管理
8.1Windows驱动管理模型:WDM
8.1.1WDM驱动程序特征
8.1.2WDM驱动程序结构
8.1.3WDM驱动程序模型
8.1.4WDM驱动程序构成
8.2入口例程的实现
8.3即插即用例程的实现
8.4分发例程的实现
8.5卸载例程的实现
8.6电源管理例程的实现
8.7设备的即插即用管理
8.7.1WDMPnPIRP的处理规则
8.7.2WDM即插即用的管理
8.7.3USB设备的即插即用
第9章DriverStudio驱动开发工具
9.1DriverStudio驱动开发工具简介
9.1.1DriverStudio软件工具
9.1.2DriverStudio软件的安装及配置
9.1.3配置DriverStudio编译环境
9.2DriverStudio环境下WDM驱动结构
9.2.1基类KDriver
9.2.2即插即用类KPnPDevice
9.2.3物理对象类KPnpLowerDevice
9.3DriverStudio环境下WDM驱动程序实例
9.3.1简单的驱动程序的建立
9.3.2驱动程序设计
9.3.3驱动的安装
9.3.4驱动程序测试
第10章基于DriverStudio的USB接口编程类
10.1USB编程类函数概述
10.2USB设备编程类KUsbLowerDevice
10.2.1激活USB设备配置函数ActivateConfiguration
10.2.2终止USB设备配置函数DeActivateConfiguration
10.2.3初始化厂商请求函数BuildVendorRequest
10.2.4分配类请求函数BuildClassRequest
10.2.5清除特征标志函数ClearFeature
10.2.6设置特征标志函数SetFeature
10.2.7获取状态函数GetStatus
10.2.8获取USB帧号函数GetCurrentFrameNumber
10.2.9未配置状态函数Unconfigure
10.2.10配置状态函数Configure
10.2.11配置接口函数PreconfigureInterface
10.2.12接口描述符函数LocateInterface
10.2.13配置描述符函数Preconfigure
10.2.14删除USB资源函数ReleaseResources
10.2.15字符串描述符函数GetStringDescriptor
10.2.16设备描述符函数GetDeviceDescriptor
10.2.17初始化函数Initialize
10.2.18发送URB函数SubmitUrb
10.3USB接口编程类KUsbInterface
10.3.1使能接口函数SelectAlternate
10.3.2清除特征标志函数ClearFeature
10.3.3设置特征标志函数SetFeature
10.3.4获取状态函数GetStatus
10.3.5初始化厂商请求函数BuildVendorRequest
10.3.6分配类请求函数BuildClassRequest
10.3.7管道函数Pipes
10.3.8管道数量函数NumberOfPipes
10.3.9接口协议函数Protocol
10.3.10接口子类函数Subclass
10.3.11接口类函数Class
10.3.12使能接口号函数AlternateSetting
10.3.13接口数量函数InterfaceNumber
10.3.14初始化函数Initialize
10.3.15关闭接口函数Close
10.3.16是否打开函数IsOpen
10.3.17打开实例函数Open
10.3.18发送URB函数SubmitUrb
10.3.19是否可用函数IsValid
10.4USB管道编程类KUsbPipe
10.4.1初始化函数Initialize
10.4.2打开接口函数Open
10.4.3是否打开函数IsOpen
10.4.4关闭管道函数Close
10.4.5中断传输函数BuildInterruptTransfer
10.4.6控制传输函数BuildControlTransfer
10.4.7块传输函数BuildBulkTransfer
10.4.8同步传输函数BuildIsochronousTransfer
10.4.9清除特征标志函数ClearFeature
10.4.10设置特征标志函数SetFeature
10.4.11获取状态函数GetStatus
10.4.12复位管道函数Reset
10.4.13丢弃函数Abort
10.4.14初始化厂商请求函数BuildVendorRequest
10.4.15初始化类请求函数BuildClassRequest
10.4.16最大帧字节数函数MaximumPacketSize
10.4.17最大传输字节数函数MaximumTransferSize
10.4.18管道句柄函数Handle
10.4.19中断检查间隔函数PollInterval
10.4.20管道端点地址函数EndpointAddress
10.4.21设置最大传输字节数函数SetMaximumTransferSize
10.4.22发送URB函数SubmitUrb
10.4.23传输类型函数Type
10.5USB驱动创建实例
10.5.1USB驱动程序建立
10.5.2USB驱动程序设计
第11章Cypress通用USB驱动程序
11.1驱动程序INF文件简介
11.2驱动程序INF文件处理过程
11.3驱动程序INF文件的结构
11.3.1版本节[Version]
11.3.2源文件盘符节[SourceDisksNames]
11.3.3源文件节[SourceDisksFiles]
11.3.4目标磁盘节[DestinationDirs]
11.3.5供应商节[Manufacturer]
11.3.6默认安装节[DefaultInstall]
11.3.7字符串节[String]
11.4Cypress的通用USB驱动程序概述
11.5CyLoad.inf文件解析
11.5.1CyLoad.inf文件
11.5.2修改设备的VID/PID
11.5.3修改字符串
11.5.4修改GUID
11.5.5修改驱动名称
11.6CyUSB.inf文件解析
11.6.1CyUSB.inf文件
11.6.2修改设备的VID/PID
11.6.3修改字符串
11.6.4修改驱动名称
11.7EZ-USB驱动程序的安装
第12章Cypress的USB接口控制函数
12.1cyioctl控制函数类
12.1.1头文件cyioctl.h
12.1.2获取设备句柄
12.1.3中止I/O端点的请求接口IOCTL_ADAPT_ABORT_PIPE
12.1.4断开USB设备接口IOCTL_ADAPT_CYCLE_PORT
12.1.5获得设备地址接口IOCTL_ADAPT_GET_ADDRESS
12.1.6获取替换接口IOCTL_ADAPT_GET_ALT_INTERFACE_SETTING
12.1.7获取字符串接口IOCTL_ADAPT_GET_DEVICE_NAME
12.1.8获取电源接口IOCTL_ADAPT_GET_DEVICE_POWER_STATE
12.1.9获取版本接口IOCTL_ADAPT_GET_DRIVER_VERSION
12.1.10获取替换名称接口IOCTL_ADAPT_GET_FRIENDLY_NAME
12.1.11获取端点数接口IOCTL_ADAPT_GET_NUMBER_ENDPOINTS
12.1.12获取传输大小接口IOCTL_ADAPT_GET_TRANSFER_SIZE
12.1.13获取USBDI接口IOCTL_ADAPT_GET_USBDI_VERSION
12.1.14复位设备接口IOCTL_ADAPT_RESET_PARENT_PORT
12.1.15复位端点接口IOCTL_ADAPT_RESET_PIPE
12.1.16设置替换接口IOCTL_ADAPT_SELECT_INTERFACE
12.1.17发送控制请求接口IOCTL_ADAPT_SEND_EP0_CONTROL_TRANSFER
12.1.18数据传输接口IOCTL_ADAPT_SEND_NON_EP0_TRANSFER
12.1.19设置电源接口IOCTL_ADAPT_SET_DEVICE_POWER_STATE
12.1.20设置传输字节接口IOCTL_ADAPT_SET_TRANSFER_SIZE
12.2CyAPI控制函数类
12.2.1头文件CyAPI.h
12.2.2块传输端点控制类CCyBulkEndPoint
12.2.3控制传输端点类CCyControlEndPoint
12.2.4中断传输端点控制类CCyInterruptEndPoint
12.2.5同步传输端点控制类CCyIsocEndPoint
12.2.6设备控制类CCyUSBDevice
12.2.7配置信息类CCyUSBConfig
12.2.8端点控制类CCyUSBEndPoint
12.2.9接口控制类CCyUSBInterface
12.3USB控制函数示例
第13章CypressEZ-USB接口芯片
13.1EZ-USB芯片简介
13.2增强型8051CPU结构
13.3特殊功能寄存器
13.4中断系统
13.5I/O端口
13.5.1普通I/O功能
13.5.2第二扩展功能
13.5.3从属FIFO接口模式
13.5.4GPIF模式
13.6指令系统
第14章CypressEZ-USB寄存器详解
14.1特殊功能寄存器
14.1.1端口PA读/写寄存器IOA
14.1.2端口PB读/写寄存器IOB
14.1.3自动指针1地址高字节寄存器AUTOPTRH1
14.1.4自动指针1地址低字节寄存器AUTOPTRL1
14.1.5自动指针2地址高字节寄存器AUTOPTRH2
14.1.6自动指针2地址低字节寄存器AUTOPTRL2
14.1.7端口PC读/写寄存器IOC
14.1.8中断请求INT2清除寄存器INT2CLR
14.1.9中断请求INT4清除寄存器INT4CLR
14.1.10端点状态标志寄存器EP2468STAT
14.1.11数据传输状态标志寄存器EP24FIFOFLGS
14.1.12数据传输状态标志寄存器EP68FIFOFLGS
14.1.13自动指针设置寄存器AUTOPTRSETUP
14.1.14端口PD读/写寄存器IOD
14.1.15端口PE读/写寄存器IOE
14.1.16端口使能寄存器OEA~OEE
14.1.17端点0和1的状态寄存器EP01STAT
14.1.18触发GPIF寄存器GPIFTRIG
14.1.19GPIF数据寄存器GPIFSGLDATH
14.1.20GPIF数据寄存器GPIFSGLDATLX
14.1.21GPIF数据寄存器GPIFSGLDATLNOX
14.2GPIF波形描述寄存器
14.3通用配置寄存器
14.3.1CPU控制和状态寄存器
14.3.2接口配置
14.3.3SlaveFIFO引脚配置
14.3.4FIFO复位
14.3.5断点
14.3.6串行时钟
14.3.7SlaveFIFO接口引脚的极性
14.3.8芯片版本ID
14.3.9芯片版本控制
14.3.10GPIF保持时间
14.4端点配置寄存器
14.4.1端点1IN和端点1OUT配置
14.4.2端点2、4、6、8配置
14.4.3端点2、4、6、8的SlaveFIFO配置
14.4.4端点2、4、6、8的AUTOIN包长度
14.4.5端点的ISOIN包
14.4.6IN数据包强制结束
14.4.7OUT数据包强制结束
14.5中断寄存器
14.5.1端点SlaveFIFO中断
14.5.2BulkIn中断
14.5.3端点握手中断
14.5.4USB中断
14.5.5端点中断
14.5.6GPIF中断
14.5.7USB错误中断
14.5.8USB错误计数限制
14.5.9清除错误计数
14.5.10INT2自动向量
14.5.11INT4自动向量
14.5.12INT2和INT4的SETUP
14.6输入/输出寄存器
14.6.1端口A的替换配置
14.6.2端口C的替换配置
14.6.3端口E的替换配置
14.6.4XTALIN时钟源
14.6.5I2C总线控制和状态
14.6.6I2C总线数据
14.6.7I2C总线控制
14.6.8自动指针的MOVX操作
14.7USB控制寄存器
14.7.1USB控制和状态
14.7.2进入挂起状态
14.7.3唤醒控制及状态
14.7.4数据触发控制
14.7.5USB帧计数
14.7.6USB微帧计数
14.7.7USB功能地址
14.8端点操作寄存器
14.8.1端点0计数
14.8.2端点1计数
14.8.3端点2和端点6的Byte计数高位
14.8.4端点4和端点8的Byte计数高位
14.8.5端点2、4、6、8计数的低位
14.8.6端点0控制和状态
14.8.7端点1控制和状态
14.8.8端点2控制和状态
14.8.9端点4控制和状态
14.8.10端点6控制和状态
14.8.11端点8控制和状态
14.8.12端点2和端点4的FIFO标志
14.8.13端点6和端点8的FIFO标志
14.8.14端点2的SlaveFIFO字节计数高位
14.8.15端点6的SlaveFIFO字节计数高位
14.8.16端点4和端点8的SlaveFIFO字节计数高位
14.8.17端点2、4、6和端点8SlaveFIFO字节计数低位
14.8.18Setup数据指针地址
14.8.19Setup指针自动模式
14.8.208字节Setup数据
14.9GPIF/FIFOs寄存器
14.9.1GPIF波形选择
14.9.2GPIF完成和空闲
14.9.3CTL的输出状态
14.9.4GPIF地址
14.9.5GPIF流动状态
14.9.6GPIF处理字节计数
14.9.7端点2、4、6和端点8的GPIF标志选择
14.9.8端点2、4、6和端点8的GPIF停止事务
14.9.9端点2、4、6和端点8的GPIF触发
14.9.10GPIF数据
14.9.11GPIFRDY引脚的配置
14.9.12GPIFRDY引脚状态
14.9.13终止GPIF循环
14.1端点缓冲寄存器
14.10.1端点0
14.10.2端点1IN
14.10.3端点1OUT
14.10.4端点2
14.10.5端点4
14.10.6端点6
14.10.7端点8
第15章CypressEZ-USB固件设计
15.1EZ-USB开发工具包
15.1.1安装开发工具包
15.1.2开发包工具简介
15.2EZ-USB基本固件框架
15.2.1基本固件框架的建立
15.2.2基本电路图
15.2.3固件设计和运行
15.3EZ-USB固件程序设计
15.3.1USB端口读/写的程序设计
15.3.2USB端口读/写的固件仿真调试
15.3.3USB端点的数据发送和采集
15.3.4数据发送和采集仿真调试
第三篇USB开发实例
第16章USB接口LED数码管显示器实例
16.1USB控制端点0请求
16.1.1USB控制传输流程
16.1.2USB设备请求及固件响应
16.1.3自定义请求
16.2LED数码管显示器
16.2.1共阳极7段LED
16.2.2共阴极7段LED
16.3电路原理图
16.3.1电源部分电路
16.3.2USB部分电路
16.4USB固件程序设计
16.4.1主程序文件
16.4.2功能实现代码
16.4.3自定义请求的定义
16.4.4USB描述符
16.4.5固件程序安装及调试
16.5USB主机程序设计
16.5.1控制函数
16.5.2建立项目
16.5.3程序设计
16.5.4编译程序并运行
第17章USB自定义设备实例
17.1EZ-USB的启动模式
17.1.1EZ-USB的启动模式
17.1.2默认USB设备状态
17.2EZ-USB的EEPROM引导启动
17.2.1没有EEPROM,或者EEPROM的首字节不合法
17.2.2首字节为0xC0的EEPROM启动
17.2.3首字节为0xC2的EEPROM启动
17.2.4配置字节
17.2.5设备请求控制位RENUM
17.2.6固件下载和重列举
17.3USB自定义设备实例
17.3.1硬件选型的写入
17.3.2EEPROM读/写电路设计
17.4EEPROM读/写程序
17.4.1宏定义
17.4.2延时函数
17.4.3基本操作函数
17.4.4I2C读/写函数
17.4.5主程序
17.4.6编译工程
17.5USB自定义设备电路设计
17.6USB自定义设备固件程序设计
17.6.1主程序文件
17.6.2请求响应函数
17.6.3初始化子程序
17.6.4功能子程序
17.6.5自定义请求的定义
17.7USB描述符
17.7.1设备描述符
17.7.2高速配置描述符
17.7.3全速配置描述符
17.7.4字符串描述符
17.8驱动程序设计
17.8.1编辑PMDriverLoad.inf文件
17.8.2编辑QKDPMDriver.inf文件
17.9驱动程序的安装
17.9.1安装驱动
17.9.2测试设备
17.1固件仿真调试
17.11主机程序设计
17.11.1建立工程
17.11.2用户界面设计
17.11.3程序代码设计
17.11.4编译执行
第18章USB的RAM读/写实例
18.1EZ-USBFX2LP的存储器
18.1.1内部数据RAM
18.1.2外部程序和数据存储空间
18.1.3EZ-USBFX2LP的内存映射
18.1.4Von-Neumannizing片外程序和数据存储器
18.1.50xE000~0xFFFF之间的片内数据存储器
18.2USB的RAM读/写电路设计
18.2.1电路原理图
18.2.2USB接口说明
18.2.3I2C总线接口芯片PCF8574
18.3建立USB固件程序项目
18.4主程序文件
18.4.1宏定义和函数变量声明
18.4.2读/写RAM区域函数
18.4.3错误码分析函数
18.4.4字符串输出函数
18.4.5主函数
18.5头文件简介
18.5.1常量定义
18.5.2宏定义
18.5.3数据类型
18.5.4全局声明
18.5.5函数声明
第19章USB自动数据传输实例
19.1SlaveFIFO模式简介
19.1.1SlaveFIFO模式的引脚
19.1.2典型的数据传输时序
19.2SlaveFIFO模式的固件设计
19.2.1SlaveFIFO固件基础
19.2.2AUTOIN/AUTOOUT方式
19.2.3CPU访问OUT数据包
19.2.4CPU访问IN数据包
19.2.5AUTOIN/AUTOOUT方式初始化
19.3USB自动数据传输实例
19.3.1电路设计
19.3.2外部控制逻辑程序设计
19.3.3USB固件程序设计
19.3.4固件仿真调试
19.3.5主机控制函数简介
19.3.6上位机程序设计
19.3.7程序运行
第20章USB高速数据采集实例
20.1EZ-USB的GPIF模式
20.1.1GPIF模式简介
20.1.2GPIF的硬件组成
20.1.3GPIF硬件配置
20.2GPIF波形图编辑
20.2.1GPIF寄存器
20.2.2可编程GPIF波形
20.2.3波形图设计工具
20.2.4波形图设计实例
20.3GPIF固件编程
20.3.1单字节读数据传输
20.3.2单字节写数据传输
20.3.3FIFO读数据传输
20.3.4FIFO写数据传输
20.4基于GPIF模式的高速数据采集电路
20.4.1数据采集电路图
20.4.2外部FIFO接口
20.5数据采集波形图编辑
20.5.1接口设计
20.5.2数据读/写设计
20.5.3波形描述符文件
20.6固件程序设计
20.6.1USB描述符
20.6.2主程序
20.6.3功能实现文件
20.6.4初始化代码
20.6.5数据传输函数
20.6.6调度函数
20.6.7自定义请求
20.7USB主机程序设计
20.7.1创建主机程序
20.7.2界面设计
20.7.3主机程序初始化
20.7.4按钮功能实现
20.7.5线程处理
第21章USBHID设备设计实例
21.1简易USBHID键盘原理图
21.2USB固件程序开发
21.2.1建立USB固件程序
21.2.2键盘描述符
21.2.3主程序文件
21.2.4功能实现代码
21.3设备测试
第22章USB转串口实例
22.1CH341芯片简介
22.1.1CH341芯片的特点
22.1.2异步串口方式
22.1.3打印口
22.1.4并口
22.1.5同步串口
22.1.6功能配置
22.2USB转串口实例
22.2.1电路图
22.2.2硬件介绍
22.2.3连接使用
第23章控制USB接口打印机实例
23.1CH375A接口芯片
23.1.1CH375A概述
23.1.2CH375A内部结构
23.2CH375A基本指令
23.2.1设置设备地址命令SET_USB_ADDR
23.2.2设置端点接收器命令SET_ENDP6
23.2.3设置端点发送器命令SET_ENDP7
23.2.4设置重试次数命令SET_RETRY
23.2.5事务执行命令ISSUE_TOKEN
23.2.6清除端点错误命令CLR_STALL
23.2.7设置地址命令SET_ADDRESS
23.2.8获取描述符命令GET_DESCR
23.2.9设置USB配置命令SET_CONFIG
23.2.10读取数据块命令RD_USB_DATA0
23.2.11延时100µS命令DELAY_100US
23.2.12查询连接状态命令TEST_CONNECT
23.2.13同步令牌事务命令ISSUE_TKN_X
23.2.14自动配置设备命令AUTO_SETUP
23.3USB存储设备类指令
23.3.1硬件复位命令RESET_ALL
23.3.2测试工作状态命令CHECK_EXIST
23.3.3设置工作模式命令SET_USB_MODE
23.3.4获取中断状态命令GET_STATUS
23.3.5设置串口波特率命令SET_BAUDRATE
23.3.6读取数据块命令RD_USB_DATA
23.3.7写入数据块命令WR_USB_DATA7
23.3.8终止命令ABORT_NAK
23.3.9初始化存储设备命令DISK_INIT
23.3.10获取物理容量命令DISK_SIZE
23.3.11读取数据块命令DISK_READ
23.3.12读操作命令DISK_RD_GO
23.3.13写入数据块命令DISK_WRITE
23.3.14写操作命令DISK_WR_GO
23.3.15获取版本命令GET_IC_VER
23.3.16低功耗状态命令ENTER_SLEEP
23.3.17设置逻辑单元号命令SET_DISK_LUN
23.3.18查询特性命令DISK_INQUIRY
23.3.19检查存储设备是否就绪命令DISK_READY
23.3.20检查错误命令DISK_R_SENSE
23.3.21获取最大逻辑单元号命令DISK_MAX_LUN
23.4接口方式
23.4.1并行接口
23.4.2串行接口
23.5USB打印机控制实例
23.5.1USB打印机控制方式
23.5.2电路图
23.5.3项目建立
23.6头文件
23.6.1指令声明
23.6.2操作状态及中断状态
23.6.3请求类型
23.7程序设计
23.7.1头文件
23.7.2参数及结构定义
23.7.3基本操作函数
23.7.4数据同步及读/写
23.7.5主机操作
23.7.6主函数
^ 收 起
傅志辉,副教授,高级架构师,移动电子商务专家库成员。从事企业信息化建设已有17年,具备丰富的移动软硬件开发实践经验,曾担任多个大型软件公司技术顾问,指导实施软硬件一体化产品开发。精通USB、PCI等总线协议开发,熟悉VSNET、PHP、JAVA等多种软件开发语言或平台,精通SQL、Oracle数据库软件,参与过多个大型数据中心的设计与调优。
★《USB开发手册》系统地介绍了当前USB总线接口的协议、工作原理,以及驱动程序设计。本书中还以大量篇幅,全面详细地介绍了在各种应用场合下USB接口的设计实例。本书言简意赅、通俗易懂、知识点介绍详细、实例丰富,使读者能够更快、更好地掌握USB接口的原理及设计方法。
★《USB开发手册》分为三篇,共23章,全面详细地讲述了USB接口的原理及应用实例。一、介绍了USB总线开发基础,总线数据流的结构、管理、类型,以及设备管理;二、介绍了USB程序的开发,包括USB驱动程序开发和USB固件程序开发;三、通过8大实例,详细介绍了在不同的应用场合下USB接口设备的设计,包括完整的电路图和程序设计。
★本书内容全面、结构紧凑、实例丰富。USB接口的初学者通过学习本书可以快速入门,此外本书对具有一定开发经验的设计人员也有很好的参考价值。
★适合阅读本书的读者:USB接口的初学者、具有一定开发经验的USB设计人员、电子设计爱好者、电子工程师、系统开发人员、大学、大专等相关专业的学生及教师。
^ 收 起
★《USB开发手册》分为三篇,共23章,全面详细地讲述了USB接口的原理及应用实例。一、介绍了USB总线开发基础,总线数据流的结构、管理、类型,以及设备管理;二、介绍了USB程序的开发,包括USB驱动程序开发和USB固件程序开发;三、通过8大实例,详细介绍了在不同的应用场合下USB接口设备的设计,包括完整的电路图和程序设计。
★本书内容全面、结构紧凑、实例丰富。USB接口的初学者通过学习本书可以快速入门,此外本书对具有一定开发经验的设计人员也有很好的参考价值。
★适合阅读本书的读者:USB接口的初学者、具有一定开发经验的USB设计人员、电子设计爱好者、电子工程师、系统开发人员、大学、大专等相关专业的学生及教师。
^ 收 起
比价列表
2人想要
公众号、微信群
缺书网
微信公众号
微信公众号
扫码进群
实时获取购书优惠
实时获取购书优惠