《USB应用开发实例详解》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:薛园园,赵建领编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2009
  • ISBN:9787115196507
  • 页数:635 页
图书介绍:本书前两篇为读者打下坚实的理论基础,第三篇通过17个实例使读者掌握各类USB设备开发的方法,内容涵盖使用EEPROM进行USB列举、USB控制LED数码管显示、USB控制LCD液晶显示模块、USB键盘程序设计、USB鼠标程序设计、USB控制D/A转换输出实例、USB控制A/D转换数据采集实例、USB的RAM测试实例、USB读写I2C总线EEPROM、USB读写三线制Microware串行总线EEPROM、USB控制实时时钟芯片DS1302、USB采集单总线温度传感器DS18S20、USB控制打印机、USB接口充电器实例、USB转RS-232串口实例、U盘设计实例、LabVIEW下的USB接口实例。

第1篇 USB开发基础篇 3

第1章 USB概述 3

1.1 USB的产生 3

1.2 USB总线特点 4

1.3 USB的总线结构 6

1.3.1 USB主机和设备 6

1.3.2 USB的连接 7

1.3.3 USB系统的分层结构 8

1.4 USB的供电 8

1.4.1 USB接口的电源指标 9

1.4.2 电源分配 9

1.4.3 USB电源管理 10

1.5 USB的开发流程 12

1.6 小结 13

第2章 USB的设备配置 14

2.1 USB标准设备的描述符 14

2.1.1 设备描述符 15

2.1.2 配置描述符 17

2.1.3 字符串描述符 19

2.1.4 接口描述符 20

2.1.5 端点描述符 21

2.1.6 设备限定描述符 23

2.1.7 其他速率配置描述符 25

2.2 USB集线器的描述符 26

2.2.1 集线器设备描述符 27

2.2.2 集线器配置描述符 29

2.2.3 集线器接口描述符 30

2.2.4 集线器端点描述符 31

2.2.5 集线器类描述符 32

2.3 HID设备描述符 34

2.3.1 HID设备简介 34

2.3.2 HID基本描述符 36

2.3.3 HID类描述符 38

2.4 小结 40

第3章 USB的数据传输 41

3.1 USB数据传输简介 41

3.1.1 USB数据传输流程 41

3.1.2 USB事务处理 42

3.1.3 USB数据传输类型 43

3.2 USB控制传输 43

3.2.1 数据包长度 44

3.2.2 事务处理 44

3.3 USB块传输 46

3.3.1 数据包长度 46

3.3.2 事务处理 46

3.4 USB中断传输 47

3.4.1 数据包长度 47

3.4.2 事务处理 47

3.5 USB同步传输 48

3.5.1 数据包长度 48

3.5.2 事务处理 48

3.6 小结 49

第4章 USB设备请求 50

4.1 标准USB设备请求 50

4.1.1 读取状态请求 51

4.1.2 清除特性请求 52

4.1.3 设置特性请求 53

4.1.4 设置地址请求 54

4.1.5 读取描述符请求 54

4.1.6 设置描述符请求 54

4.1.7 读取配置请求 55

4.1.8 设置配置请求 55

4.1.9 读取接口请求 55

4.1.10 设置接口请求 55

4.1.11 同步帧请求 56

4.2 USB集线器类请求 56

4.2.1 读取集线器状态请求 57

4.2.2 读取下行端口状态请求 57

4.2.3 禁止集线器的特性请求 58

4.2.4 禁止下行端口特性请求 58

4.2.5 使能集线器特性请求 59

4.2.6 使能下行端口特性请求 60

4.2.7 读取集线器描述符请求 60

4.2.8 设置集线器描述符请求 61

4.2.9 清除TT块请求 61

4.2.10 复位TT块请求 62

4.2.11 读取TT内部状态请求 62

4.2.12 停止TT正常工作请求 63

4.3 HID设备类请求 63

4.3.1 获取报告请求 64

4.3.2 获取空闲速率请求 64

4.3.3 获取HID协议请求 65

4.3.4 设置报告请求 65

4.3.5 设置空闲速率请求 66

4.3.6 设置HID协议请求 67

4.4 USB设备请求示例 67

4.4.1 声明设备请求 67

4.4.2 设备请求的响应 68

4.5 小结 72

第5章 器件识别和加工 73

5.1 元器件的封装 73

5.1.1 元器件封装的发展 73

5.1.2 元器件封装小结 74

5.2 元器件的焊接 83

5.2.1 双列直插器件的焊接 83

5.2.2 表面贴元器件的焊接 83

5.3 常用的USB接口芯片 84

5.3.1 Cypress公司的USB接口芯片 84

5.3.2 Philips公司的USB接口芯片 89

5.3.3 南京沁恒公司的USB接口芯片 91

5.4 小结 94

第6章 电路制板布局 95

6.1 印制电路板基础 95

6.1.1 印制电路板的分类 95

6.1.2 印制电路板的基本概念 95

6.2 印制电路板设计规则 98

6.2.1 电路板的选择 99

6.2.2 电路板布局 99

6.2.3 电路板布线 100

6.2.4 其他设计规则 101

6.3 高速USB接口的PCB设计 102

6.3.1 差分阻抗 103

6.3.2 USB信号 104

6.3.3 电源和地 105

6.3.4 晶体振荡器 106

6.4 小结 107

第2篇 USB编程篇 111

第7章 构建USB接口开发环境 111

7.1 USB固件开发环境 111

7.1.1 Keil μVision3简介 111

7.1.2 keil μVision3集成开发环境 112

7.1.3 Cypress开发包 113

7.2 上位机开发环境 114

7.2.1 Visual Studio开发平台 114

7.2.2 LabVIEW开发平台 114

7.3 USB驱动开发环境 115

7.3.1 DriverStudio软件简介 115

7.3.2 配置DriverSutdio编译环境 117

7.3.3 NI-VISA开发平台 118

7.3.4 USB通用驱动程序 118

7.4 USB最小开发系统 119

7.5 USB软硬件开发环境 120

7.6 小结 121

第8章 USB固件编程 122

8.1 USB设备配置描述符 122

8.1.1 变量声明 122

8.1.2 设备描述 123

8.1.3 设备配置 123

8.1.4 字符串描述 126

8.2 USB设备请求 127

8.2.1 自定义设备请求声明 127

8.2.2 自定义设备请求的响应 128

8.3 USB重列举 131

8.4 小结 133

第9章 USB驱动开发 134

9.1 Windows下的USB驱动开发 134

9.1.1 USB驱动程序建立 134

9.1.2 USB驱动程序设计 137

9.2 LabVIEW环境下的USB驱动开发 138

9.2.1 NI-VISA的USB驱动简介 138

9.2.2 创建USB驱动 139

9.3 通用USB驱动概述 140

9.4 INF文件简介 140

9.4.1 INF文件处理过程 141

9.4.2 INF文件的结构 141

9.4.3 版本节 141

9.4.4 源文件盘符节 143

9.4.5 源文件节 144

9.4.6 目标磁盘节 144

9.4.7 供应商节 145

9.4.8 默认安装节 145

9.4.9 字符串节 145

9.5 Visual Studio6.0环境下的通用USB驱动 145

9.5.1 CyLoad.inf文件 146

9.5.2 CyUSB.inf文件 148

9.6 Visual Studio 2005环境下的通用USB驱动 151

9.7 驱动程序的安装 153

9.8 小结 155

第10章 上位机程序开发 156

10.1 VisualC+++读写USB设备 156

10.1.1 CYIOCTL控制函数类 156

10.1.2 CyAPI控制函数类 162

10.2 VisualC#读写USB设备 181

10.2.1 CyHidDevice类 181

10.2.2 CyIsocEndPoint类 186

10.2.3 CyUSBStorDevice类 190

10.3 LabVIEW读写USB设备 192

10.3.1 USB设备测试 192

10.3.2 VISA控制函数 194

10.4 小结 196

第3篇 USB应用实例篇 199

第11章 使用EEPROM进行USB列举 199

11.1 EZ-USBFX2LP的启动模式概述 199

11.1.1 EZ-USBFX2LP的启动模式 200

11.1.2 无EEPROM启动 200

11.1.3 首字节为Oxco的EEPROM启动 201

11.1.4 首字节为OxC2的EEPROM启动 201

11.1.5 启动配置 202

11.2 EEPROM引导USB启动电路 205

11.3 USB固件程序设计 206

11.3.1 建立USB项目 207

11.3.2 主程序文件 207

11.3.3 请求响应函数 210

11.3.4 数据读写子程序 215

11.3.5 USB描述符 215

11.4 驱动程序设计 219

11.4.1 USB固件下载驱动程序 219

11.4.2 USB通信驱动程序 221

11.5 主机程序设计 222

11.5.1 建立工程 223

11.5.2 用户界面设计 224

11.5.3 程序代码设计 225

11.6 小结 227

第12章 USB控制LED显示实例 228

12.1 LED数码管简介 228

12.1.1 共阳极7段LED数码管 228

12.1.2共阴极7段LED数码管 230

12.2 USB控制LED显示实例 231

12.3 USB固件程序设计 232

12.3.1 建立USB项目 232

12.3.2 主函数程序设计 233

12.3.3 设备请求响应函数 236

12.3.4 LED控制子函数 241

12.3.5 USB固件描述符 241

12.4 USB主机程序设计 246

12.4.1 建立项目 246

12.4.2 程序设计 247

12.5 小结 251

第13章 USB控制LCD液晶显示模块 252

13.1 液晶显示模块概述 252

13.1.1 液晶显示模块的分类 253

13.1.2 液晶显示模块的特点 254

13.2 液晶显示控制驱动器 254

13.2.1 液晶显示控制驱动器概述 254

13.2.2 液晶显示控制驱动器功能 255

13.3 液晶显示控制器指令集 258

13.3.1 基本指令集 258

13.3.2 扩充指令集 261

13.3.3 控制器指令操作方式 263

13.4 液晶显示电路原理图 264

13.5 固件程序设计 267

13.5.1 建立USB项目 267

13.5.2 主程序文件 268

13.5.3 请求响应函数 270

13.5.4 初始化子程序 275

13.5.5 液晶汉字显示子程序 275

13.5.6 点阵图形型液晶控制子函数 275

13.5.7 USB描述符 280

13.6 主机程序设计 283

13.6.1 建立工程 284

13.6.2 用户界面设计 285

13.6.3 程序代码设计 286

13.7 小结 288

第14章 USB键盘程序设计 289

14.1 HID设备概述 289

14.2 USB键盘设计实例 290

14.2.1 电路原理图 290

14.2.2 建立USB项目 291

14.2.3 主程序文件 292

14.2.4 标准设备请求响应函数 295

14.2.5 USB键盘功能实现. 299

14.2.6 USB键盘描述符 301

14.3 小结 306

第15章 USB鼠标程序设计 307

15.1 USB鼠标硬件概述 307

15.2 电路原理图 308

15.3 固件程序设计 309

15.3.1 接口定义 310

15.3.2 主函数 310

15.3.3 初始化函数 311

15.4 功能实现代码 312

15.4.1 主循环函数usbmain 312

15.4.2 鼠标事务函数MouseTask 312

15.4.3 挂起函数Suspend 313

15.4.4 数据包处理函数HandleSetup 314

15.4.5 输入数据包处理函数HandleIn 315

15.4.6 读数据函数USB_control_read 315

15.4.7 装载FIFO函数LoadEPOFifo 316

15.4.8 停止端点函数USB_Stall_In_Out 316

15.4.9 总线空闲函数Buslnactive 316

15.4.10 光学测量函数ProcessOptics 317

15.4.11 读按键函数GetBuons 318

15.4.12 鼠标移动函数MouseMoved 318

15.5 HID设备请求处理 318

15.5.1 设置配置请求SetConfiguration 318

15.5.2 设置地址请求SetAddress 319

15.5.3 清标志请求ClearFeature 319

15.5.4 设置标志请求SetFeature 320

15.5.5 读取描述符请求GetDescriptor 321

15.5.6 读取状态请求GetStatus 322

15.5.7 设置空闲请求SetIdle 323

15.5.8 设置协议请求SetProtocol 323

15.5.9 读取报告请求GetReport 324

15.5.10 读取空闲请求GetIdle 324

15.5.11 读取协议请求GetProtocol 325

15.5.12 读取配置请求GetConfiguration 325

15.6 USB鼠标描述符 325

15.6.1 设备描述符 325

15.6.2 配置描述符 326

15.6.3 接口描述符 326

15.6.4 端点描述符 327

15.6.5 HID类描述符 327

15.6.6 报告描述符 327

15.6.7 字符串描述符 328

15.7 小结 329

第16章 USB控制D/A转换输出实例 330

16.1 D/A转换概述 330

16.1.1 D/A转换原理 330

16.1.2 D/A转换器的类型 331

16.1.3 D/A转换器的性能参数 333

16.2 高速D/A转换芯片AD558 334

16.2.1 AD558简介 334

16.2.2 AD558输出模式 335

16.2.3 AD558的数据锁存 336

16.3 电路原理图 337

16.4 固件程序设计 338

16.4.1 建立USB项目 338

16.4.2 主程序文件 339

16.4.3 请求响应函数 342

16.4.4 D/A转换子函数 347

16.4.5 USB设备配置描述符 347

16.5 主机程序设计 351

16.5.1 建立工程 351

16.5.2 用户界面设计 353

16.5.3 程序代码设计 354

16.6 小结 358

第17章 USB控制A/D转换数据采集实例 359

17.1 A/D转换器概述 359

17.1.1 A/D转换原理 360

17.1.2 A/D转换器的技术参数 362

17.1.3 A/D转换器的选择原则 363

17.2 8通道电压型A/D转换器MAX197 364

17.2.1 NLAX197的引脚接口 364

17.2.2 NLAX197的控制字节 365

17.2.3 MA-X197的控制时序 367

17.3 USB模拟电压采集实例 368

17.3.1 系统电路原理图 368

17.3.2 稳压电路 370

17.4 USB固件程序设计 370

17.4.1 建立USB项目 371

17.4.2 主函数程序设计 371

17.4.3 设备请求处理 374

17.4.4 A/D转换控制子函数 379

17.4.5 USB描述符 379

17.5 上位机程序设计 383

17.5.1 建立项目 384

17.5.2 程序设计 385

17.6 小结 389

第18章 USB的RAM测试实例 390

18.1 EZ-USBFX2LP的存储器 390

18.1.1 内部数据RAM 390

18.1.2 外部程序和数据存储空间 393

18.2 USB的RAM测试电路原理图 397

18.3 固件程序设计 398

18.3.1 建立USB项目 398

18.3.2 主程序文件 399

18.3.3 测试RAM区域函数testmem 402

18.3.4 错误码分析函数status 403

18.3.5 特定字符串输出函数statStng 404

18.4 小结 404

第19章 USB读写I2C总线EEPROM 405

19.1 I2C总线概述 405

19.1.1 12C总线的工作原理 406

19.1.2 12C总线的负载能力 406

19.1.3 12C总线的寻址方式 406

19.1.4 12C总线数据传输协议 407

19.2 电路原理图 409

19.3 固件程序设计 411

19.3.1 建立USB项目 411

19.3.2 主程序文件 412

19.3.3 请求响应处理 414

19.3.4 EEPROM读写 419

19.3.5 12C接口子函数 420

19.3.6 USB设备配置描述符 424

19.4 主程序设计 429

19.4.1 建立工程 429

19.4.2 用户界面设计 430

19.4.3 程序代码设计 431

19.5 小结 433

第20章 USB读写Microware串行EEPROM 434

20.1 Microware串行总线概述 434

20.2 Microware串行总线接口的EEPROM存储器 435

20.2.1 Microware串行总线接口EEPROM概述 435

20.2.2 Microware串行总线接口EEPROM的指令 436

20.2.3M icroware串行总线接口EEPROM的指令时序 437

20.3 电路原理图 440

20.4 固件程序设计 441

20.4.1 建立USB项目 442

20.4.2 主程序文件 443

20.4.3 请求响应函数 445

20.4.4 Microware读写子函数 449

20.4.5 三线制Microware串行总线读写子函数 450

20.4.6 USB设备配置描述符. 453

20.5 主程序设计 457

20.5.1 建立工程 457

20.5.2 用户界面设计 459

20.5.3 程序代码设计 460

20.6 小结 462

第21章 USB控制实时时钟芯片DS1302 463

21.1 实时时钟芯片DS1302概述 463

21.1.1 实时时钟芯片DS1302概述 463

21.1.2 实时时钟芯片DS1302命令字节 464

21.1.3 实时时钟芯片DS1302数据格式 464

21.1.4 实时时钟芯片DS1302数据传输方式 466

21.2 电路原理图 467

21.3 固件程序设计 469

21.3.1 建立USB项目 469

21.3.2 主程序文件 470

21.3.3 请求响应处理 473

21.3.4 实时时钟操作 477

21.3.5 DS1302控制子函数 478

21.3.6 USB设备配置描述符 482

21.4 上位机程序设计 486

21.4.1 建立工程 486

21.4.2 用户界面设计 487

21.4.3 程序代码设计 488

21.5 小结 491

第22章 USB采集单总线温度传感器DS18S20 492

22.1单 总线概述 492

22.2单 总线温度传感器DS18S20. 493

22.2.1 温度传感器DS18S20概述 494

22.2.2 DS18S20的供电方式 494

22.2.3 DS18S20的数据操作 495

22.2.4 DS18S20的温度转换操作 497

22.3 电路原理图 498

22.4 固件程序设计 499

22.4.1 建立USB项目 499

22.4.2 主程序文件 500

22.4.3 请求响应处理 503

22.4.4 读取温度操作 507

22.4.5 DS18S20控制子函数 508

22.4.6 USB设备配置描述符 510

22.5 上位机程序设计 514

22.5.1 建立工程 514

22.5.2 用户界面设计 516

22.5.3 程序代码设计 517

22.6 小结 519

第23章 USB打印机控制实例 520

23.1 CH375A接口芯片 520

23.1.1 CH375A概述 521

23.1.2 CH375A内部结构 523

23.2 CH375A指令 523

23.2.1 CH375A基本指令. 524

23.2.2 USB存储设备类指令 527

23.3 CH375A接口方式 533

23.3.1 并行接口 534

23.3.2 串行接口 534

23.4 USB打印机控制实例 535

23.4.1 电路原理图 535

23.4.2 USB打印机控制方式 538

23.5 程序设计 539

23.5.1 项目建立 539

23.5.2 头文件 539

23.5.3 参数及结构定义 543

23.5.4 主函数 544

23.5.5 基本操作子函数 545

23.5.6 数据同步及读写子函数 547

23.5.7 CH375A主机操作子函数 548

23.6 小结 552

第24章 USB接口充电器实例 553

24.1 锂电池及其充电概述 553

24.1.1 锂电池概述 553

24.1.2 锂电池充电概述 554

24.2 智能充电管理芯片MAX1898 554

24.2.1 智能充电管理芯片选型 555

24.2.2 智能充电管理芯片MAX1898概述 555

24.2.3 MAX1898充电工作原理 556

24.3 USB接口充电器实例 557

24.3.1 电路原理图 557

24.3.2 USB接口充电器功能 560

24.4 固件程序设计 561

24.4.1 建立USB项目 561

24.4.2 主程序文件 562

24.4.3 请求响应处理 565

24.4.4 智能充电管理 569

24.4.5 USB设备配置描述符 570

24.5 小结 574

第25章 USB转RS-232串口实例. 575

25.1 CH341简介 575

25.2 CH341串口工作方式 576

25.2.1 异步串口方式 576

25.2.2 同步串口方式 579

25.3 CH341打印口工作方式 579

25.4 CH341并口工作方式 581

25.4.1 EPP并口方式 582

25.4.2 MEM并口方式 583

25.5 CH341功能配置 583

25.5.1 直接组合配置 583

25.5.2 外部芯片配置 583

25.6 USB转RS-232串口实例 584

25.6.1 电路原理图 584

25.6.2 硬件接口介绍 585

25.6.3 连接使用 586

25.7 小结 587

第26章 U盘设计实例 588

26.1 Nand-Flash存储器 588

26.1.1 Nor-Flash和Nand-Flash 588

26.1.2 Nand-Flash存储器K9F2GO8UOM 589

26.1.3 Nand-Flash存储器的组织结构 590

26.1.4 Nand-Flash存储器的指令集 591

26.1.5 Nand-Flash存储器的操作 591

26.2 基于Nand-Flash的文件系统 592

26.2.1 分区格式简介 592

26.2.2 基于Nand-Flash的文件系统 593

26.2.3 Nand-Flash存储器上的FAT结构 597

26.3 Nand-Flash控制器 597

26.3.1 CY7C68023简介 597

26.3.2 兼容Nand-Flash存储器 599

26.4 U盘设计实例 599

26.4.1 电路原理图 600

26.4.2 PCB设计要求 601

26.4.3 配置格式化 601

26.5 小结 602

第27章 LabVIEW下的USB数据采集实例 603

27.1 SlaveFIFO模式简介 603

27.1.1 SlaveFIFO模式的引脚及功能 604

27.1.2 典型的数据传输 608

27.2 SlaveFIFO的固件设计 609

27.2.1 SlaveFIFO固件基础 610

27.2.2 AutoIn/AutoOut模式 610

27.2.3 AutoIn/AutoOut模式初始化 610

27.2.4 CPU访问OUT数据包 613

27.2.5 CPU访问IN数据包 615

27.3 电路原理图 617

27.4 固件程序设计 618

27.4.1 建立USB项目 618

27.4.2 主程序文件 619

27.4.3 请求响应函数 621

27.4.4 初始化子函数 625

27.4.5 自定义请求子函数 626

27.4.6 块传输处理 626

27.4.7 USB设备配置描述符 627

27.5 LabVIEW程序设计 632

27.5.1 USB驱动程序 632

27.5.2 前面板程序设计 634

27.5.3 程序框图设计 634

27.6 小结 635