
USB 3.0编程宝典
USB汇流排接口技术是当前计算机接口最流行的技术,本书系统地介绍了USB汇流排接口的协定、工作原理、驱动程式设计以及上位机控制函式。本书中还以大量实例,全面详细地介绍了不同场合下USB接口的套用。本书言简意赅、通俗易懂,知识点介绍全面详细,实例完整丰富。通过本书,读者能够更快、更好地掌握当前最新USB接口的原理及设计方法。本书分为4部分,共26章,全面详细地讲述了USB接口的编程原理及套用实例。第1部分是USB汇流排接口技术基础,介绍了USB汇流排接口的协定、事务处理、数据传输方式以及设备配置等;第2部分重点介绍了USB接口驱动程式的设计,包括使用DriverStudio进行驱动程式设计、使用通用USB驱动程式以及LabVIEW平台下的驱动程式设计。第3部分是USB编程基础,详细介绍了在DriverStudio、C++、C#和LabVIEW平台下如何对USB接口进行读写控制;第4部分为USB开发实战,通过11个例子,详细介绍了在不同的套用场合下USB接口设备的设计,包括完整的电路图、固件程式、驱动程式和上位机程式设计。本书内容全面、结构紧凑、实例丰富。对于USB接口开发的初学者,通过学习本书可以快速掌握USB接口开发。本书对具有一定开发经验的设计人员也有很好的参考价值。
基本介绍
- 书名:USB 3.0编程宝典
- 类型:计算机与网际网路
- 出版日期:2013年9月1日
- 语种:简体中文
- ISBN:712121296X
- 作者:郑杰
- 出版社:电子工业出版社
- 页数:753页
- 开本:16
- 品牌:电子工业出版社
内容简介
《USB 3.0编程宝典》由电子工业出版社出版。
图书目录
第1部分 USB汇流排接口技术基础
第1章 USB技术概述
1.1 USB汇流排技术的产生
1.2 认识USB汇流排接口
1.2.1 USB A型插座和插头
1.2.2 USB B型插座和插头
1.2.3 USB mini型插座和插头
1.2.4 USB micro型插座和插头
1.2.5 USB 3.0型插座和插头
1.2.6 USB电缆结构
1.3 USB汇流排版本
1.3.1 USB 1.0
1.3.2 USB 1.1
1.3.3 USB 2.0
1.3.4 USB 3.0
1.3.5 其他USB规範
1.4 USB规範概览
1.5 USB汇流排结构
1.5.1 USB主机
1.5.2 USB电缆
1.5.3 USB设备
1.6 USB汇流排特点
1.7 USB的竞争技术解析
1.7.1 IEEE 1394接口技术
1.7.2 eSATA接口技术
1.7.3 USB PLUS接口技术
1.7.4 Thunder Bolt超高速接口技术
1.7.5 USB接口与其他计算机接口的对比
1.8 USB设备的开发
1.9 小结
第2章 USB电源管理
2.1 USB的供电
2.1.1 USB接口的电源指标
2.1.2 USB外设功率需求
2.2 典型USB外设的电源设计
2.2.1 USB根集线器
2.2.2 USB汇流排供电集线器
2.2.3 USB自供电集线器
2.2.4 USB汇流排供电低功率设备
2.2.5 USB汇流排供电高功率设备
2.2.6 USB自供电设备
2.2.7 USB设备功率需求的设定
2.3 USB电源管理
2.3.1 激活(ACTIVE)
2.3.2 挂起(SUSPEND)
2.3.3 空闲(FAST EXIT IDLE)
2.3.4 睡眠(SLOW EXIT IDLE)
2.3.5 USB 2.0与USB 3.0电源管理的区别
2.4 小结
第3章 USB事务处理
3.1 USB事务处理概述
3.2 令牌阶段
3.2.1 同步栏位
3.2.2 令牌包
3.3 数据阶段
3.3.1 同步栏位
3.3.2 数据包
3.4 握手阶段
3.4.1 同步栏位
3.4.2 握手包
3.5 USB事务处理
3.5.1 IN事务处理
3.5.2 OUT事务处理
3.5.3 SETUP事务处理
3.5.4 PING事务处理
3.5.5 SOF事务处理
3.5.6 SPLIT事务处理
3.5.7 PRE事务处理
3.6 USB设备的汇流排状态
3.7 USB设备的汇流排列举
3.7.1 连线USB设备
3.7.2 断开USB设备
3.8 小结
第4章 USB数据传输类型
4.1 USB数据传输概述
4.1.1 USB下传数据
4.1.2 USB上传数据
4.1.3 USB的数据传输类型
4.2 USB块传输
4.2.1 USB块传输方式
4.2.2 块传输的数据包长度
4.2.3 块事务处理
4.3 USB中断传输
4.3.1 USB中断传输方式
4.3.2 中断传输的数据包长度
4.3.3 中断事务处理
4.4 USB同步传输
4.4.1 USB同步传输方式
4.4.2 同步传输的数据包长度
4.4.3 同步事务处理
4.5 USB控制传输
4.5.1 USB控制传输方式
4.5.2 控制传输数据包长度
4.5.3 控制事务处理
4.6 USB 3.0与USB 2.0数据传输的对比
4.6.1 接口不同
4.6.2 数据传输方式不同
4.6.3 编码方式不同
4.6.4 数据传输对比
4.7 小结
第5章 USB设备配置
5.1 USB描述符概述
5.2 设备描述符(Device)
5.2.1 设备描述符定义
5.2.2 设备描述符示例
5.3 配置描述符(Configuration)
5.3.1 配置描述符定义
5.3.2 配置描述符示例
5.4 字元串描述符(String)
5.4.1 字元串描述符定义
5.4.2 字元串描述符示例
5.5 接口描述符(Interface)
5.5.1 接口描述符定义
5.5.2 接口描述符示例
5.6 端点描述符(Endpoint)
5.6.1 端点描述符定义
5.6.2 端点描述符示例
5.7 设备限定描述符(Device Qualifier)
5.7.1 设备限定描述符的定义
5.7.2 设备限定描述符示例
5.8 其他速率配置描述符(Other SpeedConfiguration)
5.8.1 其他速率配置描述符的定义
5.8.2 其他速率配置描述符示例
5.9 USB设备请求概述
5.9.1 标準USB设备请求概述
5.9.2 USB设备请求处理过程
5.10 读取状态请求(GetStatus)
5.10.1 读取设备
5.10.2 读取接口
5.10.3 读取端点
5.11 清除特性请求(ClearFeature)
5.11.1 清除设备特性
5.11.2 清除接口特性
5.11.3 清除端点特性
5.12 设定特性请求(SetFeature)
5.12.1 设定设备特性
5.12.2 设定接口特性
5.12.3 设定端点特性
5.12.4 设定测试特性
5.13 设定地址请求(SetAddress)
5.14 读取描述符请求(GetDescription)
5.15 设定描述符请求(SetDescriptor)
5.16 读取配置请求(GetConfiguration)
5.17 设定配置请求(SetConfiguration)
5.18 读取接口请求(GetInterface)
5.19 设定接口请求(SetInterface)
5.20 同步帧请求(SynchFrame)
5.21 设备请求示例
5.21.1 声明设备请求
5.21.2 设备请求的回响
5.22 小结
第6章 USB集线器配置
6.1 USB集线器简介
6.1.1 集线器设备类
6.1.2 集线器的配置
6.2 USB集线器描述符
6.2.1 集线器设备描述符
6.2.2 集线器配置描述符
6.2.3 集线器接口描述符
6.2.4 集线器端点描述符
6.2.5 集线器类描述符
6.3 USB集线器类请求
6.3.1 读取集线器状态请求GetHubStatus
6.3.2 读取下行连线埠状态请求GetPortStatus
6.3.3 禁止集线器的特性请求ClearHubFeature
6.3.4 禁止下行连线埠特性请求ClearPortFeature
6.3.5 使能集线器特性请求SetHubFeature
6.3.6 使能下行连线埠特性请求SetPortFeature
6.3.7 读取集线器描述符请求GetHubDescriptor
6.3.8 设定集线器描述符请求SetHubDescriptor
6.3.9 清除TT块请求ClearTTBuffer
6.3.10 复位TT块请求ResetTT
6.3.11 读取TT内部状态请求GetTTState
6.3.12 停止TT正常工作请求
StopTT
6.4 小结
第7章 USB HID设备配置
7.1 USB HID设备简介
7.2 USB HID设备描述符
7.2.1 USB HID设备的定义
7.2.2 USB HID基本描述符
7.2.3 USB HID类描述符
7.3 USB HID设备类请求
7.3.1 获取报告请求GetReport
7.3.2 获取空闲速率请求GetIdle
7.3.3 获取HID协定请求GetProtocol
7.3.4 设定报告请求SetReport
7.3.5 设定空闲速率请求SetIdle
7.3.6 设定HID协定请求SetProtocol
7.4 小结
第8章 常用的USB晶片
8.1 USB晶片分类概述
8.1.1 通用USB晶片
8.1.2 专用USB晶片
8.2 通用USB 接口晶片
8.2.1 高速USB接口晶片EZ-USBFX2LP
8.2.2 可程式片上系统PSoC USB晶片
8.2.3 通用USB接口晶片CH375A
8.2.4 超速USB 3.0接口晶片CYUSB3014
8.3 专用USB接口晶片
8.3.1 USB HID类接口晶片CY7C63723
8.3.2 NEC USB3.0晶片µPD720200
8.3.3 USB转串口晶片CH341
8.4 USB接口的PCB设计技巧
8.4.1 差分阻抗匹配
8.4.2 供电和接地
8.4.3 USB接头禁止
8.4.4 晶体振荡器
8.5 小结
第2部分 USB驱动程式设计
第9章 USB驱动程式
9.1 WDM驱动程式概述
9.1.1 WDM驱动程式简介
9.1.2 WDM驱动程式的特点
9.1.3 WDM驱动程式的分层结构
9.2 WDM功能驱动程式的组成
9.2.1 入口例程
9.2.2 即插即用例程
9.2.3 分发例程
9.2.4 电源管理例程
9.2.5 卸载例程
9.3 USB设备的即插即用实现
9.3.1 即插即用设备状态
9.3.2 启动USB设备
9.3.3 停止USB设备
9.3.4 删除USB设备
9.4 即插即用IRP请求的处理规则
9.5 驱动开发工具——DriverStudio
9.5.1 DriverStudio软体工具集
9.5.2 搭建DriverStudio驱动开发环境
9.5.3 配置DriverStudio编译环境
9.6 WDM驱动程式基本结构
9.6.1 基类KDriver
9.6.2 即插即用类KPnPDevice
9.6.3 物理对象类KPnpLowerDevice
9.7 使用DriverStudio创建USB驱动
9.7.1 创建USB驱动程式框架
9.7.2 USB驱动程式设计
9.8 小结
第10章 通用USB驱动程式解析
10.1 驱动程式档案简介
10.1.1 USB设备驱动程式的安装
10.1.2 USB设备的识别
10.2 驱动程式INF档案的结构
10.2.1 版本节
10.2.2 源档案盘符节
10.2.3 源档案节
10.2.4 目标磁碟节
10.2.5 供应商节
10.2.6 默认安装节
10.2.7 字元串节
10.3 Cypress通用USB驱动——基于VC6.0平台
10.3.1 CyLoad.inf档案分析
10.3.2 CyUSB.inf档案分析
10.3.3 驱动程式的安装
10.4 Cypress通用USB驱动——基于.NET平台
10.4.1 CyUSB.inf档案
10.4.2 CyUSB.inf档案分析
10.5 微软通用USB驱动——WinUSB
10.5.1 WinUSB简介
10.5.2 WinUSB驱动程式安装包
10.5.3 WinUSB INF档案
10.6 小结
第11章 LabVIEW平台的USB驱动程式开发
11.1 NI LabVIEW平台简介
11.1.1 LabVIEW平台简介
11.1.2 NI-VISA开发平台
11.2 LabVIEW平台下的USB驱动开发
11.2.1 NI-VISA的USB驱动简介
11.2.2 创建USB驱动
11.2.3 INF安装档案
11.3 小结
第3部分 USB编程基础
第12章 基于DriverStudio的USB设备编程基础
12.1 USB编程类函式概述
12.2 设备编程类KUsbLowerDevice
12.2.1 激活设备配置函式ActivateConfiguration
12.2.2 终止设备配置函式DeActivateConfiguration
12.2.3 初始化厂商自定义请求函式BuildVendorRequest
12.2.4 分配USB类请求函式BuildClassRequest
12.2.5 清除USB特徵标誌函式ClearFeature
12.2.6 设定USB特徵标誌函式SetFeature
12.2.7 获取状态信息函式GetStatus
12.2.8 获取USB帧号函式GetCurrentFrameNumber
12.2.9 设定未配置状态函式Unconfigure
12.2.10 设定配置状态函式Configure
12.2.11 配置USB接口函式PreconfigureInterface
12.2.12 获取USB接口描述符函式LocateInterface
12.2.13 获取USB配置描述符函式Preconfigure
12.2.14 删除资源函式ReleaseResources
12.2.15 获取字元串描述符函式GetStringDescriptor
12.2.16 获取设备描述符函式GetDeviceDescriptor
12.2.17 初始化实例函式Initialize
12.2.18 URB传送函式SubmitUrb
12.3 接口编程类KUsbInterface
12.3.1 使能USB接口函式SelectAlternate
12.3.2 清除USB特徵标誌函式ClearFeature
12.3.3 设定USB特徵标誌函式SetFeature
12.3.4 获取状态信息函式GetStatus
12.3.5 厂商自定义请求函式BuildVendorRequest
12.3.6 分配USB类请求函式BuildClassRequest
12.3.7 设定管道函式Pipes
12.3.8 获取管道数量函式NumberOfPipes
12.3.9 获取接口协定函式Protocol
12.3.10 获取接口子类函式Subclass
12.3.11 获取接口类函式Class
12.3.12 获取接口号函式AlternateSetting
12.3.13 获取接口数量函式InterfaceNumber
12.3.14 初始化实例函式Initialize
12.3.15 关闭接口函式Close
12.3.16 判断是否打开函式IsOpen
12.3.17 打开实例函式Open
12.3.18 URB传送函式SubmitUrb
12.3.19 判断实例是否有效函式IsValid
12.4 管道编程类KUsbPipe
12.4.1 初始化实例函式Initialize
12.4.2 打开接口函式Open
12.4.3 判断是否打开函式IsOpen
12.4.4 关闭管道函式Close
12.4.5 中断数据传输函式BuildInterruptTransfer
12.4.6 控制数据传输函式BuildControlTransfer
12.4.7 块数据传输函式BuildBulkTransfer
12.4.8 同步数据传输函式BuildIsochronousTransfer
12.4.9 清除USB特徵标誌函式ClearFeature
12.4.10 设定USB特徵标誌函式SetFeature
12.4.11 获取状态信息函式GetStatus
12.4.12 管道复位函式Reset
12.4.13 丢弃传输函式Abort
12.4.14 初始化厂商自定义请求函式BuildVendorRequest
12.4.15 初始化类请求函式BuildClassRequest
12.4.16 获取最大帧位元组数函式MaximumPacketSize
12.4.17 获取最大传输位元组数函式MaximumTransferSize
12.4.18 获取管道句柄函式Handle
12.4.19 获取中断检查间隔函式PollInterval
12.4.20 获取管道端点地址函式EndpointAddress
12.4.21 设定最大传输位元组数函式SetMaximumTransferSize
12.4.22 URB传送函式SubmitUrb
12.4.23 获取传输类型函式Type
12.5 小结
第13章 基于Visual C++的USB设备编程基础
13.1 基于Visual C++的USB设备编程环境
13.1.1 cyioctl类控制函式
13.1.2 CyAPI控制函式类
13.2 cyioctl控制函式类
13.2.1 中止端点请求接口IOCTL_ADAPT_ABORT_PIPE
13.2.2 断开设备接口IOCTL_ADAPT_CYCLE_PORT
13.2.3 获取设备地址接口IOCTL_ADAPT_GET_ADDRESS
13.2.4 获取替换接口IOCTL_ ADAPT_GET_ALT_INTERFACE_SETTING
13.2.5 获取描述字元串接口IOCTL_ADAPT_GET_DEVICE_NAME
13.2.6 获取电源状态接口IOCTL_ADAPT_GET_DEVICE_POWER_STATE
13.2.7 获取版本号接口IOCTL_ADAPT_GET_DRIVER_VERSION
13.2.8 获取替换名称接口IOCTL_ADAPT_GET_FRIENDLY_NAME
13.2.9 获取端点数量接口IOCTL_ADAPT_GET_NUMBER_ENDPOINTS
13.2.10 获取单次传输大小接口IOCTL_ADAPT_GET_TRANSFER_SIZE
13.2.11 获取USBDI版本号接口IOCTL_ADAPT_GET_USBDI_VERSION
13.2.12 复位USB设备接口IOCTL_ADAPT_RESET_PARENT_PORT
13.2.13 复位USB端点接口IOCTL_ADAPT_RESET_PIPE
13.2.14 设定替换接口IOCTL_ADAPT_SELECT_INTERFACE
13.2.15 传送控制请求接口IOCTL_ADAPT_SEND_EP0_CONTROL_TRANSFER
13.2.16 数据通信接口IOCTL_ ADAPT_SEND_NON_EP0_TRANSFER
13.2.17 设定电源状态接口IOCTL_ADAPT_SET_DEVICE_POWER_STATE
13.2.18 设定传输位元组数接口IOCTL_ADAPT_SET_TRANSFER_SIZE
13.3 CyAPI控制函式类
13.3.1 USB设备控制类CCyUSBDevice
13.3.2 USB配置信息类CCyUSBConfig
13.3.3 USB端点控制类CCyUSBEndPoint
13.3.4 USB接口控制类CCyUSBInterface
13.3.5 USB块传输端点控制类CCyBulkEndPoint
13.3.6 USB控制传输端点类CCyControlEndPoint
13.3.7 USB中断传输端点控制类CCyInterruptEndPoint
13.3.8 USB同步传输端点控制类CCyIsocEndPoint
13.4 USB数据传输实例
13.5 小结
第14章 基于Visual C#的USB设备编程基础
14.1 基于Visual C#的USB设备编程环境
14.2 USBDeviceList类
14.2.1 USBDeviceList函式
14.2.2 Count成员变数
14.2.3 Dispose函式
14.2.4 USBDeviceList (int index)成员变数
14.2.5 USBDeviceList (string FriendlyName)成员变数
14.2.6 USBDeviceList (int VendorID, int ProductID)成员变数
14.2.7 USBDeviceList (int VendorID, int ProductID, int UsagePage, int Usage)成员变数
14.3 CyUSBDevice类
14.3.1 BcdUSB成员变数
14.3.2 DevClass成员变数
14.3.3 DevProtocol成员变数
14.3.4 DevSubClass成员变数
14.3.5 DriverName成员变数
14.3.6 FriendlyName成员变数
14.3.7 Manufacturer成员变数
14.3.8 Name成员变数
14.3.9 Path成员变数
14.3.10 ProductID成员变数
14.3.11 VendorID成员变数
14.3.12 SerialNumber成员变数
14.3.13 USBAddress成员变数
14.4 CyControlEndPoint类
14.4.1 Direction成员变数
14.4.2 Index成员变数
14.4.3 ReqCode成员变数
14.4.4 ReqType成员变数
14.4.5 Target成员变数
14.4.6 Value成员变数
14.4.7 XferData函式
14.4.8 Read函式
14.4.9 Write函式
14.5 CyIsocEndPoint类
14.5.1 GetPktBlockSize函式
14.5.2 BeginDataXfer函式
14.5.3 FinishDataXfer函式
14.5.4 GetPktCount函式
14.5.5 XferData函式
14.6 CyHidDevice类
14.6.1 GetFeature函式
14.6.2 GetInput函式
14.6.3 ReadInput函式
14.6.4 SetFeature函式
14.6.5 SetOutput函式
14.6.6 WriteOutput函式
14.6.7 ToString函式
14.7 CyUSBStorDevice类
14.7.1 SendScsiCmd函式
14.7.2 ToString函式
14.7.3 TimeOut成员变数
14.8 CyBulkEndPoint类
14.9 小结
第15章 基于LabVIEW的USB设备编程基础
15.1 NI-VISA USB设备互动控制
15.2 VISA控制函式
15.2.1 VISA打开
15.2.2 VISA关闭
15.2.3 VISA USB控制输出
15.2.4 VISA USB控制输入
15.2.5 VISA写入
15.2.6 VISA读取
15.3 小结
第4部分 USB开发实践
第16章 EZ-USB FX2LP固件设计
16.1 Cypress固件开发工具
16.1.1 安装开发包
16.1.2 开发包工具简介
16.2 基本固件框架
16.2.1 基本固件框架的建立
16.2.2 固件调试
16.3 固件程式设计
16.3.1 USB连线埠读写的程式设计
16.3.2 USB连线埠读写的固件仿真调试
16.3.3 USB端点的数据传送和採集
16.3.4 数据传送和採集仿真调试
16.4 小结
第17章 USB控制数码管显示实例
17.1 EZ-USB FX2LP的I/O连线埠
17.1.1 普通I/O功能
17.1.2 第二复用功能
17.2 控制端点0请求
17.2.1 USB控制传输
17.2.2 USB设备请求及固件回响
17.2.3 获得状态请求(Get Status)
17.2.4 设定特性请求(Set Feature)
17.2.5 清除特性请求(Clear Feature)
17.2.6 获得描述符请求(Get Descriptor)
17.2.7 设定描述符请求(Set Descriptor)
17.2.8 设定配置请求(Set Configuration)
17.2.9 获得配置请求(Get Configuration)
17.2.10 设定接口请求(Set Interface)
17.2.11 获得接口请求(Get Interface)
17.2.12 同步帧请求(Sync Frame)
17.2.13 固件载入请求(Firmware Load)
17.2.14 自定义请求
17.3 USB控制数码管实例
17.3.1 数码管显示原理
17.3.2 电路原理图
17.4 USB固件程式设计
17.4.1 主程式档案
17.4.2 功能实现代码
17.4.3 自定义请求的定义
17.4.4 USB描述
17.4.5 下载固件程式
17.5 USB主机程式设计
17.5.1 建立项目
17.5.2 程式设计
17.5.3 编译程式并运行
17.6 小结
第18章 使用EEPROM列举USB设备
18.1 USB启动配置模式
18.1.1 EZ-USB FX2LP的启动模式简介
18.1.2 默认USB设备状态
18.2 EEPROM引导USB启动
18.2.1 无EEPROM引导启动
18.2.2 EEPROM引导启动
18.2.3 启动配置暂存器
18.2.4 固件下载和重列举
18.2.5 不同晶片的接线
18.3 电路原理图
18.4 固件程式设计
18.4.1 主程式档案
18.4.2 请求回响函式
18.4.3 初始化子程式
18.4.4 功能子程式
18.4.5 自定义请求的定义
18.5 USB描述符
18.5.1 设备描述符
18.5.2 高速配置描述符
18.5.3 全速配置描述符
18.5.4 字元串描述符
18.6 下载固件程式
18.7 驱动程式设计
18.8 主机程式设计
18.8.1 建立工程
18.8.2 用户界面设计
18.8.3 程式代码设计
18.8.4 编译执行
18.9 小结
第19章 基于Slave FIFO模式的USB数据採集
19.1 Slave FIFO模式简介
19.1.1 Slave FIFO模式接口配置
19.1.2 典型的数据传输
19.2 Slave FIFO模式程式设计
19.2.1 Slave FIFO程式设计的基本概念
19.2.2 Slave FIFO模式暂存器介绍
19.2.3 Slave FIFO工作模式一:AUTO IN模式
19.2.4 Slave FIFO工作模式二:AUTO OUT模式
19.2.5 Slave FIFO工作模式三:CPU访问OUT数据包
18.2.6 Slave FIFO工作模式四:CPU访问IN数据包
19.3 Slave FIFO模式数据採集实例
19.3.1 电路设计
19.3.2 USB固件程式设计
19.3.3 上位机程式设计
19.3.4 程式运行
19.4 小结
第20章 PSoC USB设计实例
20.1 电路原理图设计
20.2 固件设计
20.2.1 创建项目
20.2.2 配置USB
20.2.3 配置引脚
20.2.4 配置时钟
20.2.5 固件程式设计
20.2.6 下载程式
20.3 驱动程式设计
20.3.1 製作驱动程式
20.3.2 安装驱动程式
20.4 上位机程式设计
20.4.1 调试固件
20.4.2 创建项目
20.4.3 软体设计
20.4.4 运行程式
20.5 小结
第21章 USB控制DA输出实例
21.1 D/A转换器概述
21.1.1 D/A转换原理
21.1.2 D/A转换器的类型
21.1.3 D/A转换器的性能参数
21.2 电路原理图设计
21.3 固件设计
21.3.1 创建项目
21.3.2 配置USB
21.3.3 配置时钟
21.3.4 配置DA
21.3.5 配置引脚
21.3.6 固件程式设计
21.4 驱动程式设计
21.5 上位机程式设计
21.5.1 创建项目
21.5.2 软体设计
21.5.3 运行程式
21.6 小结
第22章 USB控制A/D转换实例
22.1 A/D转换器概述
22.1.1 A/D转换原理
22.1.2 A/D转换器的技术参数
22.1.3 A/D转换器的选择原则
22.2 8通道AD转换器MAX1300
22.2.1 引脚接口
22.2.2 工作方式
22.2.3 控制指令
22.3 电路原理图设计
22.4 固件设计
22.4.1 创建项目
22.4.2 配置USB
22.4.3 配置时钟
22.4.4 配置SPI组件
22.4.5 配置引脚
22.4.6 固件程式设计
22.5 驱动程式设计
22.6 上位机程式设计
22.6.1 创建项目
22.6.2 软体设计
22.6.3 运行程式
22.7 小结
第23章 USB集线器开发实例
23.1 USB Hub晶片CY7C65642
23.1.1 CY7C65642接口
23.1.2 CY7C65642供电模式
23.1.3 EEPROM配置项
23.1.4 时钟配置
23.1.5 复位电路
23.1.6 过流监测
23.1.7 连线埠指示
23.2 四连线埠USB集线器设计
23.2.1 电路图
23.2.2 安装
23.3 小结
第24章 随身碟设计实例
24.1 随身碟存储晶片
24.1.1 Nor-Flash存储晶片和Nand-Flash存储晶片
24.1.2 Nand-Flash存储器K9K4G08U0M
24.1.3 Nand-Flash存储器的组织结构
24.1.4 Nand-Flash存储器的指令集
24.1.5 Nand-Flash存储器的操作
24.2 基于Nand-Flash的档案系统
24.2.1 磁碟分区格式简介
24.2.2 基于Nand-Flash的档案系统
24.2.3 Nand-Flash存储器上的FAT结构
24.3 Nand-Flash控制器
24.3.1 CY7C68024简介
24.3.2 兼容Nand-Flash存储器
24.4 随身碟设计实例
24.4.1 电路原理图
24.4.2 重新配置随身碟
24.5 小结
第25章 USB接口控制示波器实例
25.1 示波器简介
25.1.1 示波器分类
25.1.2 示波器的主要技术指标
25.1.3 主要示波器生产商
25.1.4 示波器的使用注意事项
25.2 示波器编程接口
25.2.1 USBTMC简介
25.2.2 DPO2024示波器
25.2.3 安装符合USBTMC的驱动程式
25.3 USB读写示波器实例
25.3.1 创建项目
25.3.2 程式设计
25.3.3 程式演示
25.4 使用NI-VISA控制示波器实例
25.4.1 创建项目
25.4.2 程式设计
25.4.3 运行程式
25.5 小结
第26章 Android平台USB接口开发
26.1 Android平台简介
26.1.1 Android开放手机联盟
26.1.2 Android的特性
26.1.3 Android对比其他主流作业系统
26.1.4 Android系统构架
26.1.5 Android开发工具
26.1.6 Android程式结构分析
26.2 Android的USB接口
26.2.1 Android USB接口模式
26.2.2 USB附属档案模式
26.2.3 USB主机模式
26.2.4 调试注意事项
26.3 USB硬体设计
26.3.1 电路原理图
26.3.2 固件程式设计
26.3.3 固件程式代码
26.4 Android程式设计
26.4.1 创建项目
26.4.2 界面布局
26.4.3 程式实现
26.4.4 运行结果
26.5 小结
第1章 USB技术概述
1.1 USB汇流排技术的产生
1.2 认识USB汇流排接口
1.2.1 USB A型插座和插头
1.2.2 USB B型插座和插头
1.2.3 USB mini型插座和插头
1.2.4 USB micro型插座和插头
1.2.5 USB 3.0型插座和插头
1.2.6 USB电缆结构
1.3 USB汇流排版本
1.3.1 USB 1.0
1.3.2 USB 1.1
1.3.3 USB 2.0
1.3.4 USB 3.0
1.3.5 其他USB规範
1.4 USB规範概览
1.5 USB汇流排结构
1.5.1 USB主机
1.5.2 USB电缆
1.5.3 USB设备
1.6 USB汇流排特点
1.7 USB的竞争技术解析
1.7.1 IEEE 1394接口技术
1.7.2 eSATA接口技术
1.7.3 USB PLUS接口技术
1.7.4 Thunder Bolt超高速接口技术
1.7.5 USB接口与其他计算机接口的对比
1.8 USB设备的开发
1.9 小结
第2章 USB电源管理
2.1 USB的供电
2.1.1 USB接口的电源指标
2.1.2 USB外设功率需求
2.2 典型USB外设的电源设计
2.2.1 USB根集线器
2.2.2 USB汇流排供电集线器
2.2.3 USB自供电集线器
2.2.4 USB汇流排供电低功率设备
2.2.5 USB汇流排供电高功率设备
2.2.6 USB自供电设备
2.2.7 USB设备功率需求的设定
2.3 USB电源管理
2.3.1 激活(ACTIVE)
2.3.2 挂起(SUSPEND)
2.3.3 空闲(FAST EXIT IDLE)
2.3.4 睡眠(SLOW EXIT IDLE)
2.3.5 USB 2.0与USB 3.0电源管理的区别
2.4 小结
第3章 USB事务处理
3.1 USB事务处理概述
3.2 令牌阶段
3.2.1 同步栏位
3.2.2 令牌包
3.3 数据阶段
3.3.1 同步栏位
3.3.2 数据包
3.4 握手阶段
3.4.1 同步栏位
3.4.2 握手包
3.5 USB事务处理
3.5.1 IN事务处理
3.5.2 OUT事务处理
3.5.3 SETUP事务处理
3.5.4 PING事务处理
3.5.5 SOF事务处理
3.5.6 SPLIT事务处理
3.5.7 PRE事务处理
3.6 USB设备的汇流排状态
3.7 USB设备的汇流排列举
3.7.1 连线USB设备
3.7.2 断开USB设备
3.8 小结
第4章 USB数据传输类型
4.1 USB数据传输概述
4.1.1 USB下传数据
4.1.2 USB上传数据
4.1.3 USB的数据传输类型
4.2 USB块传输
4.2.1 USB块传输方式
4.2.2 块传输的数据包长度
4.2.3 块事务处理
4.3 USB中断传输
4.3.1 USB中断传输方式
4.3.2 中断传输的数据包长度
4.3.3 中断事务处理
4.4 USB同步传输
4.4.1 USB同步传输方式
4.4.2 同步传输的数据包长度
4.4.3 同步事务处理
4.5 USB控制传输
4.5.1 USB控制传输方式
4.5.2 控制传输数据包长度
4.5.3 控制事务处理
4.6 USB 3.0与USB 2.0数据传输的对比
4.6.1 接口不同
4.6.2 数据传输方式不同
4.6.3 编码方式不同
4.6.4 数据传输对比
4.7 小结
第5章 USB设备配置
5.1 USB描述符概述
5.2 设备描述符(Device)
5.2.1 设备描述符定义
5.2.2 设备描述符示例
5.3 配置描述符(Configuration)
5.3.1 配置描述符定义
5.3.2 配置描述符示例
5.4 字元串描述符(String)
5.4.1 字元串描述符定义
5.4.2 字元串描述符示例
5.5 接口描述符(Interface)
5.5.1 接口描述符定义
5.5.2 接口描述符示例
5.6 端点描述符(Endpoint)
5.6.1 端点描述符定义
5.6.2 端点描述符示例
5.7 设备限定描述符(Device Qualifier)
5.7.1 设备限定描述符的定义
5.7.2 设备限定描述符示例
5.8 其他速率配置描述符(Other SpeedConfiguration)
5.8.1 其他速率配置描述符的定义
5.8.2 其他速率配置描述符示例
5.9 USB设备请求概述
5.9.1 标準USB设备请求概述
5.9.2 USB设备请求处理过程
5.10 读取状态请求(GetStatus)
5.10.1 读取设备
5.10.2 读取接口
5.10.3 读取端点
5.11 清除特性请求(ClearFeature)
5.11.1 清除设备特性
5.11.2 清除接口特性
5.11.3 清除端点特性
5.12 设定特性请求(SetFeature)
5.12.1 设定设备特性
5.12.2 设定接口特性
5.12.3 设定端点特性
5.12.4 设定测试特性
5.13 设定地址请求(SetAddress)
5.14 读取描述符请求(GetDescription)
5.15 设定描述符请求(SetDescriptor)
5.16 读取配置请求(GetConfiguration)
5.17 设定配置请求(SetConfiguration)
5.18 读取接口请求(GetInterface)
5.19 设定接口请求(SetInterface)
5.20 同步帧请求(SynchFrame)
5.21 设备请求示例
5.21.1 声明设备请求
5.21.2 设备请求的回响
5.22 小结
第6章 USB集线器配置
6.1 USB集线器简介
6.1.1 集线器设备类
6.1.2 集线器的配置
6.2 USB集线器描述符
6.2.1 集线器设备描述符
6.2.2 集线器配置描述符
6.2.3 集线器接口描述符
6.2.4 集线器端点描述符
6.2.5 集线器类描述符
6.3 USB集线器类请求
6.3.1 读取集线器状态请求GetHubStatus
6.3.2 读取下行连线埠状态请求GetPortStatus
6.3.3 禁止集线器的特性请求ClearHubFeature
6.3.4 禁止下行连线埠特性请求ClearPortFeature
6.3.5 使能集线器特性请求SetHubFeature
6.3.6 使能下行连线埠特性请求SetPortFeature
6.3.7 读取集线器描述符请求GetHubDescriptor
6.3.8 设定集线器描述符请求SetHubDescriptor
6.3.9 清除TT块请求ClearTTBuffer
6.3.10 复位TT块请求ResetTT
6.3.11 读取TT内部状态请求GetTTState
6.3.12 停止TT正常工作请求
StopTT
6.4 小结
第7章 USB HID设备配置
7.1 USB HID设备简介
7.2 USB HID设备描述符
7.2.1 USB HID设备的定义
7.2.2 USB HID基本描述符
7.2.3 USB HID类描述符
7.3 USB HID设备类请求
7.3.1 获取报告请求GetReport
7.3.2 获取空闲速率请求GetIdle
7.3.3 获取HID协定请求GetProtocol
7.3.4 设定报告请求SetReport
7.3.5 设定空闲速率请求SetIdle
7.3.6 设定HID协定请求SetProtocol
7.4 小结
第8章 常用的USB晶片
8.1 USB晶片分类概述
8.1.1 通用USB晶片
8.1.2 专用USB晶片
8.2 通用USB 接口晶片
8.2.1 高速USB接口晶片EZ-USBFX2LP
8.2.2 可程式片上系统PSoC USB晶片
8.2.3 通用USB接口晶片CH375A
8.2.4 超速USB 3.0接口晶片CYUSB3014
8.3 专用USB接口晶片
8.3.1 USB HID类接口晶片CY7C63723
8.3.2 NEC USB3.0晶片µPD720200
8.3.3 USB转串口晶片CH341
8.4 USB接口的PCB设计技巧
8.4.1 差分阻抗匹配
8.4.2 供电和接地
8.4.3 USB接头禁止
8.4.4 晶体振荡器
8.5 小结
第2部分 USB驱动程式设计
第9章 USB驱动程式
9.1 WDM驱动程式概述
9.1.1 WDM驱动程式简介
9.1.2 WDM驱动程式的特点
9.1.3 WDM驱动程式的分层结构
9.2 WDM功能驱动程式的组成
9.2.1 入口例程
9.2.2 即插即用例程
9.2.3 分发例程
9.2.4 电源管理例程
9.2.5 卸载例程
9.3 USB设备的即插即用实现
9.3.1 即插即用设备状态
9.3.2 启动USB设备
9.3.3 停止USB设备
9.3.4 删除USB设备
9.4 即插即用IRP请求的处理规则
9.5 驱动开发工具——DriverStudio
9.5.1 DriverStudio软体工具集
9.5.2 搭建DriverStudio驱动开发环境
9.5.3 配置DriverStudio编译环境
9.6 WDM驱动程式基本结构
9.6.1 基类KDriver
9.6.2 即插即用类KPnPDevice
9.6.3 物理对象类KPnpLowerDevice
9.7 使用DriverStudio创建USB驱动
9.7.1 创建USB驱动程式框架
9.7.2 USB驱动程式设计
9.8 小结
第10章 通用USB驱动程式解析
10.1 驱动程式档案简介
10.1.1 USB设备驱动程式的安装
10.1.2 USB设备的识别
10.2 驱动程式INF档案的结构
10.2.1 版本节
10.2.2 源档案盘符节
10.2.3 源档案节
10.2.4 目标磁碟节
10.2.5 供应商节
10.2.6 默认安装节
10.2.7 字元串节
10.3 Cypress通用USB驱动——基于VC6.0平台
10.3.1 CyLoad.inf档案分析
10.3.2 CyUSB.inf档案分析
10.3.3 驱动程式的安装
10.4 Cypress通用USB驱动——基于.NET平台
10.4.1 CyUSB.inf档案
10.4.2 CyUSB.inf档案分析
10.5 微软通用USB驱动——WinUSB
10.5.1 WinUSB简介
10.5.2 WinUSB驱动程式安装包
10.5.3 WinUSB INF档案
10.6 小结
第11章 LabVIEW平台的USB驱动程式开发
11.1 NI LabVIEW平台简介
11.1.1 LabVIEW平台简介
11.1.2 NI-VISA开发平台
11.2 LabVIEW平台下的USB驱动开发
11.2.1 NI-VISA的USB驱动简介
11.2.2 创建USB驱动
11.2.3 INF安装档案
11.3 小结
第3部分 USB编程基础
第12章 基于DriverStudio的USB设备编程基础
12.1 USB编程类函式概述
12.2 设备编程类KUsbLowerDevice
12.2.1 激活设备配置函式ActivateConfiguration
12.2.2 终止设备配置函式DeActivateConfiguration
12.2.3 初始化厂商自定义请求函式BuildVendorRequest
12.2.4 分配USB类请求函式BuildClassRequest
12.2.5 清除USB特徵标誌函式ClearFeature
12.2.6 设定USB特徵标誌函式SetFeature
12.2.7 获取状态信息函式GetStatus
12.2.8 获取USB帧号函式GetCurrentFrameNumber
12.2.9 设定未配置状态函式Unconfigure
12.2.10 设定配置状态函式Configure
12.2.11 配置USB接口函式PreconfigureInterface
12.2.12 获取USB接口描述符函式LocateInterface
12.2.13 获取USB配置描述符函式Preconfigure
12.2.14 删除资源函式ReleaseResources
12.2.15 获取字元串描述符函式GetStringDescriptor
12.2.16 获取设备描述符函式GetDeviceDescriptor
12.2.17 初始化实例函式Initialize
12.2.18 URB传送函式SubmitUrb
12.3 接口编程类KUsbInterface
12.3.1 使能USB接口函式SelectAlternate
12.3.2 清除USB特徵标誌函式ClearFeature
12.3.3 设定USB特徵标誌函式SetFeature
12.3.4 获取状态信息函式GetStatus
12.3.5 厂商自定义请求函式BuildVendorRequest
12.3.6 分配USB类请求函式BuildClassRequest
12.3.7 设定管道函式Pipes
12.3.8 获取管道数量函式NumberOfPipes
12.3.9 获取接口协定函式Protocol
12.3.10 获取接口子类函式Subclass
12.3.11 获取接口类函式Class
12.3.12 获取接口号函式AlternateSetting
12.3.13 获取接口数量函式InterfaceNumber
12.3.14 初始化实例函式Initialize
12.3.15 关闭接口函式Close
12.3.16 判断是否打开函式IsOpen
12.3.17 打开实例函式Open
12.3.18 URB传送函式SubmitUrb
12.3.19 判断实例是否有效函式IsValid
12.4 管道编程类KUsbPipe
12.4.1 初始化实例函式Initialize
12.4.2 打开接口函式Open
12.4.3 判断是否打开函式IsOpen
12.4.4 关闭管道函式Close
12.4.5 中断数据传输函式BuildInterruptTransfer
12.4.6 控制数据传输函式BuildControlTransfer
12.4.7 块数据传输函式BuildBulkTransfer
12.4.8 同步数据传输函式BuildIsochronousTransfer
12.4.9 清除USB特徵标誌函式ClearFeature
12.4.10 设定USB特徵标誌函式SetFeature
12.4.11 获取状态信息函式GetStatus
12.4.12 管道复位函式Reset
12.4.13 丢弃传输函式Abort
12.4.14 初始化厂商自定义请求函式BuildVendorRequest
12.4.15 初始化类请求函式BuildClassRequest
12.4.16 获取最大帧位元组数函式MaximumPacketSize
12.4.17 获取最大传输位元组数函式MaximumTransferSize
12.4.18 获取管道句柄函式Handle
12.4.19 获取中断检查间隔函式PollInterval
12.4.20 获取管道端点地址函式EndpointAddress
12.4.21 设定最大传输位元组数函式SetMaximumTransferSize
12.4.22 URB传送函式SubmitUrb
12.4.23 获取传输类型函式Type
12.5 小结
第13章 基于Visual C++的USB设备编程基础
13.1 基于Visual C++的USB设备编程环境
13.1.1 cyioctl类控制函式
13.1.2 CyAPI控制函式类
13.2 cyioctl控制函式类
13.2.1 中止端点请求接口IOCTL_ADAPT_ABORT_PIPE
13.2.2 断开设备接口IOCTL_ADAPT_CYCLE_PORT
13.2.3 获取设备地址接口IOCTL_ADAPT_GET_ADDRESS
13.2.4 获取替换接口IOCTL_ ADAPT_GET_ALT_INTERFACE_SETTING
13.2.5 获取描述字元串接口IOCTL_ADAPT_GET_DEVICE_NAME
13.2.6 获取电源状态接口IOCTL_ADAPT_GET_DEVICE_POWER_STATE
13.2.7 获取版本号接口IOCTL_ADAPT_GET_DRIVER_VERSION
13.2.8 获取替换名称接口IOCTL_ADAPT_GET_FRIENDLY_NAME
13.2.9 获取端点数量接口IOCTL_ADAPT_GET_NUMBER_ENDPOINTS
13.2.10 获取单次传输大小接口IOCTL_ADAPT_GET_TRANSFER_SIZE
13.2.11 获取USBDI版本号接口IOCTL_ADAPT_GET_USBDI_VERSION
13.2.12 复位USB设备接口IOCTL_ADAPT_RESET_PARENT_PORT
13.2.13 复位USB端点接口IOCTL_ADAPT_RESET_PIPE
13.2.14 设定替换接口IOCTL_ADAPT_SELECT_INTERFACE
13.2.15 传送控制请求接口IOCTL_ADAPT_SEND_EP0_CONTROL_TRANSFER
13.2.16 数据通信接口IOCTL_ ADAPT_SEND_NON_EP0_TRANSFER
13.2.17 设定电源状态接口IOCTL_ADAPT_SET_DEVICE_POWER_STATE
13.2.18 设定传输位元组数接口IOCTL_ADAPT_SET_TRANSFER_SIZE
13.3 CyAPI控制函式类
13.3.1 USB设备控制类CCyUSBDevice
13.3.2 USB配置信息类CCyUSBConfig
13.3.3 USB端点控制类CCyUSBEndPoint
13.3.4 USB接口控制类CCyUSBInterface
13.3.5 USB块传输端点控制类CCyBulkEndPoint
13.3.6 USB控制传输端点类CCyControlEndPoint
13.3.7 USB中断传输端点控制类CCyInterruptEndPoint
13.3.8 USB同步传输端点控制类CCyIsocEndPoint
13.4 USB数据传输实例
13.5 小结
第14章 基于Visual C#的USB设备编程基础
14.1 基于Visual C#的USB设备编程环境
14.2 USBDeviceList类
14.2.1 USBDeviceList函式
14.2.2 Count成员变数
14.2.3 Dispose函式
14.2.4 USBDeviceList (int index)成员变数
14.2.5 USBDeviceList (string FriendlyName)成员变数
14.2.6 USBDeviceList (int VendorID, int ProductID)成员变数
14.2.7 USBDeviceList (int VendorID, int ProductID, int UsagePage, int Usage)成员变数
14.3 CyUSBDevice类
14.3.1 BcdUSB成员变数
14.3.2 DevClass成员变数
14.3.3 DevProtocol成员变数
14.3.4 DevSubClass成员变数
14.3.5 DriverName成员变数
14.3.6 FriendlyName成员变数
14.3.7 Manufacturer成员变数
14.3.8 Name成员变数
14.3.9 Path成员变数
14.3.10 ProductID成员变数
14.3.11 VendorID成员变数
14.3.12 SerialNumber成员变数
14.3.13 USBAddress成员变数
14.4 CyControlEndPoint类
14.4.1 Direction成员变数
14.4.2 Index成员变数
14.4.3 ReqCode成员变数
14.4.4 ReqType成员变数
14.4.5 Target成员变数
14.4.6 Value成员变数
14.4.7 XferData函式
14.4.8 Read函式
14.4.9 Write函式
14.5 CyIsocEndPoint类
14.5.1 GetPktBlockSize函式
14.5.2 BeginDataXfer函式
14.5.3 FinishDataXfer函式
14.5.4 GetPktCount函式
14.5.5 XferData函式
14.6 CyHidDevice类
14.6.1 GetFeature函式
14.6.2 GetInput函式
14.6.3 ReadInput函式
14.6.4 SetFeature函式
14.6.5 SetOutput函式
14.6.6 WriteOutput函式
14.6.7 ToString函式
14.7 CyUSBStorDevice类
14.7.1 SendScsiCmd函式
14.7.2 ToString函式
14.7.3 TimeOut成员变数
14.8 CyBulkEndPoint类
14.9 小结
第15章 基于LabVIEW的USB设备编程基础
15.1 NI-VISA USB设备互动控制
15.2 VISA控制函式
15.2.1 VISA打开
15.2.2 VISA关闭
15.2.3 VISA USB控制输出
15.2.4 VISA USB控制输入
15.2.5 VISA写入
15.2.6 VISA读取
15.3 小结
第4部分 USB开发实践
第16章 EZ-USB FX2LP固件设计
16.1 Cypress固件开发工具
16.1.1 安装开发包
16.1.2 开发包工具简介
16.2 基本固件框架
16.2.1 基本固件框架的建立
16.2.2 固件调试
16.3 固件程式设计
16.3.1 USB连线埠读写的程式设计
16.3.2 USB连线埠读写的固件仿真调试
16.3.3 USB端点的数据传送和採集
16.3.4 数据传送和採集仿真调试
16.4 小结
第17章 USB控制数码管显示实例
17.1 EZ-USB FX2LP的I/O连线埠
17.1.1 普通I/O功能
17.1.2 第二复用功能
17.2 控制端点0请求
17.2.1 USB控制传输
17.2.2 USB设备请求及固件回响
17.2.3 获得状态请求(Get Status)
17.2.4 设定特性请求(Set Feature)
17.2.5 清除特性请求(Clear Feature)
17.2.6 获得描述符请求(Get Descriptor)
17.2.7 设定描述符请求(Set Descriptor)
17.2.8 设定配置请求(Set Configuration)
17.2.9 获得配置请求(Get Configuration)
17.2.10 设定接口请求(Set Interface)
17.2.11 获得接口请求(Get Interface)
17.2.12 同步帧请求(Sync Frame)
17.2.13 固件载入请求(Firmware Load)
17.2.14 自定义请求
17.3 USB控制数码管实例
17.3.1 数码管显示原理
17.3.2 电路原理图
17.4 USB固件程式设计
17.4.1 主程式档案
17.4.2 功能实现代码
17.4.3 自定义请求的定义
17.4.4 USB描述
17.4.5 下载固件程式
17.5 USB主机程式设计
17.5.1 建立项目
17.5.2 程式设计
17.5.3 编译程式并运行
17.6 小结
第18章 使用EEPROM列举USB设备
18.1 USB启动配置模式
18.1.1 EZ-USB FX2LP的启动模式简介
18.1.2 默认USB设备状态
18.2 EEPROM引导USB启动
18.2.1 无EEPROM引导启动
18.2.2 EEPROM引导启动
18.2.3 启动配置暂存器
18.2.4 固件下载和重列举
18.2.5 不同晶片的接线
18.3 电路原理图
18.4 固件程式设计
18.4.1 主程式档案
18.4.2 请求回响函式
18.4.3 初始化子程式
18.4.4 功能子程式
18.4.5 自定义请求的定义
18.5 USB描述符
18.5.1 设备描述符
18.5.2 高速配置描述符
18.5.3 全速配置描述符
18.5.4 字元串描述符
18.6 下载固件程式
18.7 驱动程式设计
18.8 主机程式设计
18.8.1 建立工程
18.8.2 用户界面设计
18.8.3 程式代码设计
18.8.4 编译执行
18.9 小结
第19章 基于Slave FIFO模式的USB数据採集
19.1 Slave FIFO模式简介
19.1.1 Slave FIFO模式接口配置
19.1.2 典型的数据传输
19.2 Slave FIFO模式程式设计
19.2.1 Slave FIFO程式设计的基本概念
19.2.2 Slave FIFO模式暂存器介绍
19.2.3 Slave FIFO工作模式一:AUTO IN模式
19.2.4 Slave FIFO工作模式二:AUTO OUT模式
19.2.5 Slave FIFO工作模式三:CPU访问OUT数据包
18.2.6 Slave FIFO工作模式四:CPU访问IN数据包
19.3 Slave FIFO模式数据採集实例
19.3.1 电路设计
19.3.2 USB固件程式设计
19.3.3 上位机程式设计
19.3.4 程式运行
19.4 小结
第20章 PSoC USB设计实例
20.1 电路原理图设计
20.2 固件设计
20.2.1 创建项目
20.2.2 配置USB
20.2.3 配置引脚
20.2.4 配置时钟
20.2.5 固件程式设计
20.2.6 下载程式
20.3 驱动程式设计
20.3.1 製作驱动程式
20.3.2 安装驱动程式
20.4 上位机程式设计
20.4.1 调试固件
20.4.2 创建项目
20.4.3 软体设计
20.4.4 运行程式
20.5 小结
第21章 USB控制DA输出实例
21.1 D/A转换器概述
21.1.1 D/A转换原理
21.1.2 D/A转换器的类型
21.1.3 D/A转换器的性能参数
21.2 电路原理图设计
21.3 固件设计
21.3.1 创建项目
21.3.2 配置USB
21.3.3 配置时钟
21.3.4 配置DA
21.3.5 配置引脚
21.3.6 固件程式设计
21.4 驱动程式设计
21.5 上位机程式设计
21.5.1 创建项目
21.5.2 软体设计
21.5.3 运行程式
21.6 小结
第22章 USB控制A/D转换实例
22.1 A/D转换器概述
22.1.1 A/D转换原理
22.1.2 A/D转换器的技术参数
22.1.3 A/D转换器的选择原则
22.2 8通道AD转换器MAX1300
22.2.1 引脚接口
22.2.2 工作方式
22.2.3 控制指令
22.3 电路原理图设计
22.4 固件设计
22.4.1 创建项目
22.4.2 配置USB
22.4.3 配置时钟
22.4.4 配置SPI组件
22.4.5 配置引脚
22.4.6 固件程式设计
22.5 驱动程式设计
22.6 上位机程式设计
22.6.1 创建项目
22.6.2 软体设计
22.6.3 运行程式
22.7 小结
第23章 USB集线器开发实例
23.1 USB Hub晶片CY7C65642
23.1.1 CY7C65642接口
23.1.2 CY7C65642供电模式
23.1.3 EEPROM配置项
23.1.4 时钟配置
23.1.5 复位电路
23.1.6 过流监测
23.1.7 连线埠指示
23.2 四连线埠USB集线器设计
23.2.1 电路图
23.2.2 安装
23.3 小结
第24章 随身碟设计实例
24.1 随身碟存储晶片
24.1.1 Nor-Flash存储晶片和Nand-Flash存储晶片
24.1.2 Nand-Flash存储器K9K4G08U0M
24.1.3 Nand-Flash存储器的组织结构
24.1.4 Nand-Flash存储器的指令集
24.1.5 Nand-Flash存储器的操作
24.2 基于Nand-Flash的档案系统
24.2.1 磁碟分区格式简介
24.2.2 基于Nand-Flash的档案系统
24.2.3 Nand-Flash存储器上的FAT结构
24.3 Nand-Flash控制器
24.3.1 CY7C68024简介
24.3.2 兼容Nand-Flash存储器
24.4 随身碟设计实例
24.4.1 电路原理图
24.4.2 重新配置随身碟
24.5 小结
第25章 USB接口控制示波器实例
25.1 示波器简介
25.1.1 示波器分类
25.1.2 示波器的主要技术指标
25.1.3 主要示波器生产商
25.1.4 示波器的使用注意事项
25.2 示波器编程接口
25.2.1 USBTMC简介
25.2.2 DPO2024示波器
25.2.3 安装符合USBTMC的驱动程式
25.3 USB读写示波器实例
25.3.1 创建项目
25.3.2 程式设计
25.3.3 程式演示
25.4 使用NI-VISA控制示波器实例
25.4.1 创建项目
25.4.2 程式设计
25.4.3 运行程式
25.5 小结
第26章 Android平台USB接口开发
26.1 Android平台简介
26.1.1 Android开放手机联盟
26.1.2 Android的特性
26.1.3 Android对比其他主流作业系统
26.1.4 Android系统构架
26.1.5 Android开发工具
26.1.6 Android程式结构分析
26.2 Android的USB接口
26.2.1 Android USB接口模式
26.2.2 USB附属档案模式
26.2.3 USB主机模式
26.2.4 调试注意事项
26.3 USB硬体设计
26.3.1 电路原理图
26.3.2 固件程式设计
26.3.3 固件程式代码
26.4 Android程式设计
26.4.1 创建项目
26.4.2 界面布局
26.4.3 程式实现
26.4.4 运行结果
26.5 小结
序言
USB是一种新型的计算机汇流排接口技术,其全称为Universal Serial Bus(通用串列汇流排)。目前,在消费电子产品以及智慧型测控等领域,USB接口得到了广泛的套用。USB接口使得计算机和外部设备的连线十分方便,例如USB滑鼠、USB键盘、USB摄像头、USB移动硬碟、USB印表机等。在实际设计工作中,也越来越多地採用USB技术,例如USB接口控制、高速USB数据採集等。目前USB接口大有取代其他老式接口的趋势。因此,掌握USB接口的设计开发是非常必要的。
为了便于广大电子设计者能够掌握USB接口的知识,并快速开展基于USB接口的设计开发,本书详细介绍了新型USB汇流排接口的协定、工作原理、驱动程式开发、固件程式设计和上位机程式设计。另外,本书还以丰富的实例,全面详细地介绍了在各种套用场合下USB的设计实例。学完本书后,读者可以全面地掌握USB接口的设计开发。
和其他书籍相比,本书具有如下优点
1.知识点丰富全面
为了便于读者全面掌握USB汇流排接口技术,本书涉及USB汇流排技术接口协定、USB事务处理、USB数据传输类型、各类USB描述符及设备请求,同时还介绍了各种平台下的USB驱动程式开发和上位机编程。通过本书,读者可以完整掌握不同平台下USB设备的开发。
2.内容新颖
USB接口技术发展非常迅速,现在已经推出了全新的超高速USB 3.0接口技术协定。本章在介绍常规的USB接口协定和开发时,还介绍了当前最新的USB 3.0汇流排接口技术。同时,在USB接口开发和套用方面,针对近年来全新的LabVIEW平台USB接口开发以及嵌入式Android作业系统下的USB接口开发进行了介绍。这些内容都是近年来USB接口的全新套用点,十分具有前沿性。
3.遵循开发流程
由于USB开发涉及不同的领域,所以为了便于读者学习,本书按照开发流程和学习顺序,严格划分章节。通过USB汇流排技术接口协定、USB驱动程式开发、USB编程基础和USB开发实战4章的内容,逐步带领读者深入USB接口开发。同时,在每一章中,採用由浅入深的方式,逐步展开各个知识点的讲解。
4.实例完整详细
对于读者来说,完整详细的实例可以帮助读者理解和掌握USB接口的开发。本章对于每一个套用实例都详细介绍了开发基础知识,并提供了完整的电路原理图、驱动程式设计、固件程式和上位机程式。读者可以将本书实例直接套用于实际工作中。对于需要改进的实例,也只需要简单修改,就可以投入使用。
5.开发代码讲解注释详细
本书在每一个USB设计实例中,对程式代码进行了比较详细的注释和讲解,从而帮助读者理解程式代码的功能,加速USB设计学习的进度。
6.多平台开发模式
随着技术的不断进步和发展,USB接口的开发可以採用多种方式。本书摆脱传统的单一平台设计模式,全面介绍了DriverStudio、Visual C++、Visual C#、LabVIEW和Android平台下的USB接口开发。读者可以更为全面地掌握USB接口开发,为日后的设计工作提供更多思路。
本书的内容
本书以全面性、实用性、系统性、完整性和前沿性为重点,详细介绍了USB汇流排技术接口开发的全过程。本书分为4篇,共26章内容。
第一篇是USB汇流排接口技术基础篇,共分为8章。详细介绍了USB接口技术、USB事务处理、USB数据传输类型、各类USB设备配置以及常用的USB接口晶片。
第1章为USB技术概述,介绍了USB汇流排技术的产生、USB接口类型以及USB汇流排版本,同时还对USB汇流排结构以及其他相关计算机接口进行了介绍对比。最后,给出了USB设备开发的基本流程。
第2章为USB电源管理,介绍了USB接口的供电方式,并重点介绍了典型USB接口的电源设计以及USB电源管理方式。
第3章为USB事务处理,介绍了USB事务处理的各个阶段以及7种典型的USB事务处理,这是USB接口协定的底层基础。
第4章为USB数据传输类型,详细介绍了USB接口的块传输、中断传输、控制传输和同步传输4种传输类型,并针对全新的USB 3.0介绍了传输方式的改变。
第5章为USB设备配置,对USB功能设备的描述符进行了全面的介绍,并详细讲解了USB设备请求。
第6章为USB集线器配置,详细介绍了USB集线器的描述符以及集线器设备请求。
第7章为USB HID设备配置,详细介绍了USB HID类设备的描述符以及USB HID设备请求。
第8章为常用的USB晶片,介绍了几种常用的通用USB接口晶片和专用USB接口晶片,这些内容是USB接口开发的基础,在实际开发过程中经常会用到。最后,还介绍了USB接口在PCB设计上的注意事项。
第二篇是USB驱动程式设计篇,共分为3章。详细介绍了USB驱动程式的概述,以及採用DriverStudio、通用驱动程式和LabVIEW平台下的USB驱动程式开发。
第9章为USB驱动程式,介绍了Windows平台的WDM驱动程式框架,并介绍了DriverStudio驱动开发工具。
第10章为通用驱动程式解析,详细讲解了驱动程式的INF档案结构,并介绍了Cypress通用驱动程式和微软通用USB驱动程式WinUSB。
第11章为LabVIEW平台的USB驱动程式开发,详细讲解了NI LabVIEW平台及NI-VISA平台,介绍了如何使用NI-VISA来创建LabVIEW平台的USB驱动程式。
第三篇是USB编程篇,共分为4章。详细介绍了在DriverStudio、Visual C++、Visual C#和LabVIEW平台下如何实现USB设备编程。
第12章为基于DriverStudio的USB设备编程基础,介绍了DriverStudio提供的上位机USB开发库函式及其套用。
第13章为基于Visual C++的USB设备编程基础,介绍了Cypress的USB接口开发库函式CyAPI的套用。
第14章为基于Visual C#的USB设备编程基础,介绍了Cypress提供的.net平台USB开发库函式及其套用。
第15章为基于LabVIEW的USB设备编程基础,介绍了在NI LabVIEW平台下使用VISA函式如何读写和控制USB设备。
第四篇是USB开发实战篇,共分为11章。详细介绍了在各个套用场合的USB接口开发,提供了完整的电路原理图、驱动程式、固件程式和上位机程式。
第16章为EZ-USB FX2LP固件设计,详细讲解了Cypress固件开发工具,并通过实例介绍了USB接口固件设计和调试方法。
第17章为USB控制数码管显示实例,详细讲解了USB接口的控制端点0及其请求,并使用EZ-USB FX2LP的IO连线埠来实现对数码管的控制。实例中提供了完整的电路原理图、固件程式和上位机程式。
第18章为使用EEPROM列举USB设备,详细讲解了EZ-USB FX2LP的EEPROM启动模式,并通过一个实例介绍了如何实现自定义USB设备的启动。实例中提供了完整的电路原理图、驱动程式、固件程式和上位机程式。
第19章为基于Slave FIFO模式的USB数据採集,详细介绍了EZ-USB FX2LP的Salve FIFO接口模式及其程式设计,并通过一个实例介绍了如何实现高速数据採集。实例中提供了完整的电路原理图、驱动程式、固件程式和上位机程式。
第20章为PSoC USB设计实例。本章採用PSoC 3系列USB接口晶片,介绍了使用PSoC Creator设计USB固件程式的方式、驱动程式和上位机程式设计。实例中提供了完整的电路原理图、驱动程式、固件程式和上位机程式。
第21章为USB控制DA输出实例,详细讲解了D/A转换器的工作原理,并使用PSoC晶片内部集成的D/A转换器来实现特定信号的输出。实例中提供了完整的电路原理图、驱动程式、固件程式和上位机程式。
第22章为USB控制A/D转换实例,详细讲解了A/D转换的工作原理,并通过一个高性能的8通道A/D转换器MAX1300来採集外部的多路模拟信号。实例中提供了完整的电路原理图、驱动程式、固件程式和上位机程式。
第23章为USB集线器开发实例,详细介绍了USB Hub晶片CY7C65642,并依此设计了一个4连线埠USB 2.0高速集线器。实例中提供了完整的电路原理图。
第24章为随身碟设计实例,详细讲解了随身碟存储晶片的操作方式以及Nand-Flash控制器CY7C68024,并依此设计了一个随身碟。实例中提供了完整的电路原理图。
第25章为USB接口控制示波器实例,介绍了示波器及示波器的编程接口,并通过两个实例介绍了如何实现USB接口示波器的控制。实例中提供了上位机程式。
第26章为Android平台USB接口开发,详细讲解了Android作业系统开发平台以及Android的USB接口模式,并通过一个完整实例介绍了如何编写Android手机的USB控制程式。实例中提供了完整的电路原理图、固件程式和上位机程式。
本书由重庆电子工程职业学院的郑杰老师编写,本书知识点覆盖全面、结构安排紧凑、讲解详细、实例丰富、图文并茂。由于本书内容较多,编写时间比较仓促,书中如有遗漏或不足之处,恳请广大读者提出宝贵意见,以便于进一步改进。
适合的读者
USB接口初学者
具有一定开发经验的USB设计人员。
电子设计爱好者。
电子工程师。
系统开发人员。
大学、大专等相关专业的学生及教师。
硬体开发培训班。
编者
2013年4月
为了便于广大电子设计者能够掌握USB接口的知识,并快速开展基于USB接口的设计开发,本书详细介绍了新型USB汇流排接口的协定、工作原理、驱动程式开发、固件程式设计和上位机程式设计。另外,本书还以丰富的实例,全面详细地介绍了在各种套用场合下USB的设计实例。学完本书后,读者可以全面地掌握USB接口的设计开发。
和其他书籍相比,本书具有如下优点
1.知识点丰富全面
为了便于读者全面掌握USB汇流排接口技术,本书涉及USB汇流排技术接口协定、USB事务处理、USB数据传输类型、各类USB描述符及设备请求,同时还介绍了各种平台下的USB驱动程式开发和上位机编程。通过本书,读者可以完整掌握不同平台下USB设备的开发。
2.内容新颖
USB接口技术发展非常迅速,现在已经推出了全新的超高速USB 3.0接口技术协定。本章在介绍常规的USB接口协定和开发时,还介绍了当前最新的USB 3.0汇流排接口技术。同时,在USB接口开发和套用方面,针对近年来全新的LabVIEW平台USB接口开发以及嵌入式Android作业系统下的USB接口开发进行了介绍。这些内容都是近年来USB接口的全新套用点,十分具有前沿性。
3.遵循开发流程
由于USB开发涉及不同的领域,所以为了便于读者学习,本书按照开发流程和学习顺序,严格划分章节。通过USB汇流排技术接口协定、USB驱动程式开发、USB编程基础和USB开发实战4章的内容,逐步带领读者深入USB接口开发。同时,在每一章中,採用由浅入深的方式,逐步展开各个知识点的讲解。
4.实例完整详细
对于读者来说,完整详细的实例可以帮助读者理解和掌握USB接口的开发。本章对于每一个套用实例都详细介绍了开发基础知识,并提供了完整的电路原理图、驱动程式设计、固件程式和上位机程式。读者可以将本书实例直接套用于实际工作中。对于需要改进的实例,也只需要简单修改,就可以投入使用。
5.开发代码讲解注释详细
本书在每一个USB设计实例中,对程式代码进行了比较详细的注释和讲解,从而帮助读者理解程式代码的功能,加速USB设计学习的进度。
6.多平台开发模式
随着技术的不断进步和发展,USB接口的开发可以採用多种方式。本书摆脱传统的单一平台设计模式,全面介绍了DriverStudio、Visual C++、Visual C#、LabVIEW和Android平台下的USB接口开发。读者可以更为全面地掌握USB接口开发,为日后的设计工作提供更多思路。
本书的内容
本书以全面性、实用性、系统性、完整性和前沿性为重点,详细介绍了USB汇流排技术接口开发的全过程。本书分为4篇,共26章内容。
第一篇是USB汇流排接口技术基础篇,共分为8章。详细介绍了USB接口技术、USB事务处理、USB数据传输类型、各类USB设备配置以及常用的USB接口晶片。
第1章为USB技术概述,介绍了USB汇流排技术的产生、USB接口类型以及USB汇流排版本,同时还对USB汇流排结构以及其他相关计算机接口进行了介绍对比。最后,给出了USB设备开发的基本流程。
第2章为USB电源管理,介绍了USB接口的供电方式,并重点介绍了典型USB接口的电源设计以及USB电源管理方式。
第3章为USB事务处理,介绍了USB事务处理的各个阶段以及7种典型的USB事务处理,这是USB接口协定的底层基础。
第4章为USB数据传输类型,详细介绍了USB接口的块传输、中断传输、控制传输和同步传输4种传输类型,并针对全新的USB 3.0介绍了传输方式的改变。
第5章为USB设备配置,对USB功能设备的描述符进行了全面的介绍,并详细讲解了USB设备请求。
第6章为USB集线器配置,详细介绍了USB集线器的描述符以及集线器设备请求。
第7章为USB HID设备配置,详细介绍了USB HID类设备的描述符以及USB HID设备请求。
第8章为常用的USB晶片,介绍了几种常用的通用USB接口晶片和专用USB接口晶片,这些内容是USB接口开发的基础,在实际开发过程中经常会用到。最后,还介绍了USB接口在PCB设计上的注意事项。
第二篇是USB驱动程式设计篇,共分为3章。详细介绍了USB驱动程式的概述,以及採用DriverStudio、通用驱动程式和LabVIEW平台下的USB驱动程式开发。
第9章为USB驱动程式,介绍了Windows平台的WDM驱动程式框架,并介绍了DriverStudio驱动开发工具。
第10章为通用驱动程式解析,详细讲解了驱动程式的INF档案结构,并介绍了Cypress通用驱动程式和微软通用USB驱动程式WinUSB。
第11章为LabVIEW平台的USB驱动程式开发,详细讲解了NI LabVIEW平台及NI-VISA平台,介绍了如何使用NI-VISA来创建LabVIEW平台的USB驱动程式。
第三篇是USB编程篇,共分为4章。详细介绍了在DriverStudio、Visual C++、Visual C#和LabVIEW平台下如何实现USB设备编程。
第12章为基于DriverStudio的USB设备编程基础,介绍了DriverStudio提供的上位机USB开发库函式及其套用。
第13章为基于Visual C++的USB设备编程基础,介绍了Cypress的USB接口开发库函式CyAPI的套用。
第14章为基于Visual C#的USB设备编程基础,介绍了Cypress提供的.net平台USB开发库函式及其套用。
第15章为基于LabVIEW的USB设备编程基础,介绍了在NI LabVIEW平台下使用VISA函式如何读写和控制USB设备。
第四篇是USB开发实战篇,共分为11章。详细介绍了在各个套用场合的USB接口开发,提供了完整的电路原理图、驱动程式、固件程式和上位机程式。
第16章为EZ-USB FX2LP固件设计,详细讲解了Cypress固件开发工具,并通过实例介绍了USB接口固件设计和调试方法。
第17章为USB控制数码管显示实例,详细讲解了USB接口的控制端点0及其请求,并使用EZ-USB FX2LP的IO连线埠来实现对数码管的控制。实例中提供了完整的电路原理图、固件程式和上位机程式。
第18章为使用EEPROM列举USB设备,详细讲解了EZ-USB FX2LP的EEPROM启动模式,并通过一个实例介绍了如何实现自定义USB设备的启动。实例中提供了完整的电路原理图、驱动程式、固件程式和上位机程式。
第19章为基于Slave FIFO模式的USB数据採集,详细介绍了EZ-USB FX2LP的Salve FIFO接口模式及其程式设计,并通过一个实例介绍了如何实现高速数据採集。实例中提供了完整的电路原理图、驱动程式、固件程式和上位机程式。
第20章为PSoC USB设计实例。本章採用PSoC 3系列USB接口晶片,介绍了使用PSoC Creator设计USB固件程式的方式、驱动程式和上位机程式设计。实例中提供了完整的电路原理图、驱动程式、固件程式和上位机程式。
第21章为USB控制DA输出实例,详细讲解了D/A转换器的工作原理,并使用PSoC晶片内部集成的D/A转换器来实现特定信号的输出。实例中提供了完整的电路原理图、驱动程式、固件程式和上位机程式。
第22章为USB控制A/D转换实例,详细讲解了A/D转换的工作原理,并通过一个高性能的8通道A/D转换器MAX1300来採集外部的多路模拟信号。实例中提供了完整的电路原理图、驱动程式、固件程式和上位机程式。
第23章为USB集线器开发实例,详细介绍了USB Hub晶片CY7C65642,并依此设计了一个4连线埠USB 2.0高速集线器。实例中提供了完整的电路原理图。
第24章为随身碟设计实例,详细讲解了随身碟存储晶片的操作方式以及Nand-Flash控制器CY7C68024,并依此设计了一个随身碟。实例中提供了完整的电路原理图。
第25章为USB接口控制示波器实例,介绍了示波器及示波器的编程接口,并通过两个实例介绍了如何实现USB接口示波器的控制。实例中提供了上位机程式。
第26章为Android平台USB接口开发,详细讲解了Android作业系统开发平台以及Android的USB接口模式,并通过一个完整实例介绍了如何编写Android手机的USB控制程式。实例中提供了完整的电路原理图、固件程式和上位机程式。
本书由重庆电子工程职业学院的郑杰老师编写,本书知识点覆盖全面、结构安排紧凑、讲解详细、实例丰富、图文并茂。由于本书内容较多,编写时间比较仓促,书中如有遗漏或不足之处,恳请广大读者提出宝贵意见,以便于进一步改进。
适合的读者
USB接口初学者
具有一定开发经验的USB设计人员。
电子设计爱好者。
电子工程师。
系统开发人员。
大学、大专等相关专业的学生及教师。
硬体开发培训班。
编者
2013年4月
转载请注明出处海之美文 » USB 3.0编程宝典