-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

USB 3.0編程寶典

( 簡體 字)
作者:鄭杰類別:1. -> 程式設計 -> USB
譯者:
出版社:電子工業出版社USB 3.0編程寶典 3dWoo書號: 36778
詢問書籍請說出此書號!

缺書
不接受訂購

出版日:9/1/2013
頁數:768
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
不接受訂購
ISBN:9787121212963
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

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章為U盤設計實例,詳細講解了U盤存儲芯片的操作方式以及Nand-Flash控制器CY7C68024,并依此設計了一個U盤。實例中提供了完整的電路原理圖。
第25章為USB接口控制示波器實例,介紹了示波器及示波器的編程接口,并通過兩個實例介紹了如何實現USB接口示波器的控制。實例中提供了上位機程序。
第26章為Android平臺USB接口開發,詳細講解了Android操作系統開發平臺以及Android的USB接口模式,并通過一個完整實例介紹了如何編寫Android手機的USB控制程序。實例中提供了完整的電路原理圖、固件程序和上位機程序。
本書由重慶電子工程職業學院的鄭杰老師編寫,本書知識點覆蓋全面、結構安排緊湊、講解詳細、實例豐富、圖文并茂。由于本書內容較多,編寫時間比較倉促,書中如有遺漏或不足之處,懇請廣大讀者提出寶貴意見,以便于進一步改進。
適合的讀者
USB接口初學者
具有一定開發經驗的USB設計人員。
電子設計愛好者。
電子工程師。
系統開發人員。
大學、大專等相關專業的學生及教師。
硬件開發培訓班。

編者
2013年4月
內容簡介:

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接口開發。本書對具有一定開發經驗的設計人員也有很好的參考價值。

目錄:

第1部分 USB總線接口技術基礎 1
第1章 USB技術概述 2
1.1 USB總線技術的產生 2
1.2 認識USB總線接口 3
1.2.1 USB A型插座和插頭 4
1.2.2 USB B型插座和插頭 4
1.2.3 USB mini型插座和插頭 5
1.2.4 USB micro型插座和插頭 6
1.2.5 USB 3.0型插座和插頭 7
1.2.6 USB電纜結構 11
1.3 USB總線版本 13
1.3.1 USB 1.0 13
1.3.2 USB 1.1 13
1.3.3 USB 2.0 14
1.3.4 USB 3.0 14
1.3.5 其他USB規范 16
1.4 USB規范概覽 17
1.5 USB總線結構 18
1.5.1 USB主機 18
1.5.2 USB電纜 19
1.5.3 USB設備 19
1.6 USB總線特點 20
1.7 USB的競爭技術解析 21
1.7.1 IEEE 1394接口技術 21
1.7.2 eSATA接口技術 22
1.7.3 USB PLUS接口技術 23
1.7.4 Thunder Bolt超高速接口技術 23
1.7.5 USB接口與其他計算機接口
的對比 24
1.8 USB設備的開發 24
1.9 小結 26
第2章 USB電源管理 27
2.1 USB的供電 27
2.1.1 USB接口的電源指標 27
2.1.2 USB外設功率需求 28
2.2 典型USB外設的電源設計 28
2.2.1 USB根集線器 29
2.2.2 USB總線供電集線器 29
2.2.3 USB自供電集線器 30
2.2.4 USB總線供電低功率設備 31
2.2.5 USB總線供電高功率設備 31
2.2.6 USB自供電設備 32
2.2.7 USB設備功率需求的設置 32
2.3 USB電源管理 34
2.3.1 激活(ACTIVE) 34
2.3.2 掛起(SUSPEND) 34
2.3.3 空閑(FAST EXIT IDLE) 34
2.3.4 睡眠(SLOW EXIT IDLE) 35
2.3.5 USB 2.0與USB 3.0電源管
理的區別 35
2.4 小結 36
第3章 USB事務處理 37
3.1 USB事務處理概述 37
3.2 令牌階段 38
3.2.1 同步字段 38
3.2.2 令牌包 38
3.3 數據階段 46
3.3.1 同步字段 46
3.3.2 數據包 47
3.4 握手階段 48
3.4.1 同步字段 48
3.4.2 握手包 49
3.5 USB事務處理 50
3.5.1 IN事務處理 51
3.5.2 OUT事務處理 52
3.5.3 SETUP事務處理 53
3.5.4 PING事務處理 54
3.5.5 SOF事務處理 55
3.5.6 SPLIT事務處理 55
3.5.7 PRE事務處理 56
3.6 USB設備的總線狀態 57
3.7 USB設備的總線列舉 58
3.7.1 連接USB設備 58
3.7.2 斷開USB設備 59
3.8 小結 59
第4章 USB數據傳輸類型 60
4.1 USB數據傳輸概述 60
4.1.1 USB下傳數據 61
4.1.2 USB上傳數據 61
4.1.3 USB的數據傳輸類型 62
4.2 USB塊傳輸 62
4.2.1 USB塊傳輸方式 63
4.2.2 塊傳輸的數據包長度 63
4.2.3 塊事務處理 63
4.3 USB中斷傳輸 65
4.3.1 USB中斷傳輸方式 66
4.3.2 中斷傳輸的數據包長度 66
4.3.3 中斷事務處理 66
4.4 USB同步傳輸 68
4.4.1 USB同步傳輸方式 68
4.4.2 同步傳輸的數據包長度 69
4.4.3 同步事務處理 69
4.5 USB控制傳輸 71
4.5.1 USB控制傳輸方式 71
4.5.2 控制傳輸數據包長度 72
4.5.3 控制事務處理 72
4.6 USB 3.0與USB 2.0數據傳輸的對比 74
4.6.1 接口不同 75
4.6.2 數據傳輸方式不同 75
4.6.3 編碼方式不同 75
4.6.4 數據傳輸對比 76
4.7 小結 77
第5章 USB設備配置 78
5.1 USB描述符概述 78
5.2 設備描述符(Device) 79
5.2.1 設備描述符定義 79
5.2.2 設備描述符示例 82
5.3 配置描述符(Configuration) 83
5.3.1 配置描述符定義 83
5.3.2 配置描述符示例 84
5.4 字符串描述符(String) 85
5.4.1 字符串描述符定義 85
5.4.2 字符串描述符示例 85
5.5 接口描述符(Interface) 86
5.5.1 接口描述符定義 86
5.5.2 接口描述符示例 88
5.6 端點描述符(Endpoint) 88
5.6.1 端點描述符定義 88
5.6.2 端點描述符示例 90
5.7 設備限定描述符(Device Qualifier) 91
5.7.1 設備限定描述符的定義 91
5.7.2 設備限定描述符示例 93
5.8 其他速率配置描述符(Other SpeedConfiguration) 93
5.8.1 其他速率配置描述符的定義 93
5.8.2 其他速率配置描述符示例 95
5.9 USB設備請求概述 95
5.9.1 標準USB設備請求概述 95
5.9.2 USB設備請求處理過程 96
5.10 讀取狀態請求(GetStatus) 96
5.10.1 讀取設備 97
5.10.2 讀取接口 98
5.10.3 讀取端點 99
5.11 清除特性請求(ClearFeature) 100
5.11.1 清除設備特性 101
5.11.2 清除接口特性 102
5.11.3 清除端點特性 102
5.12 設置特性請求(SetFeature) 102
5.12.1 設置設備特性 103
5.12.2 設置接口特性 104
5.12.3 設置端點特性 104
5.12.4 設置測試特性 104
5.13 設置地址請求(SetAddress) 105
5.14 讀取描述符請求(GetDescription) 105
5.15 設置描述符請求(SetDescriptor) 107
5.16 讀取配置請求(GetConfiguration) 108
5.17 設置配置請求(SetConfiguration) 109
5.18 讀取接口請求(GetInterface) 109
5.19 設置接口請求(SetInterface) 111
5.20 同步幀請求(SynchFrame) 111
5.21 設備請求示例 111
5.21.1 聲明設備請求 112
5.21.2 設備請求的響應 112
5.22 小結 115
第6章 USB集線器配置 116
6.1 USB集線器簡介 116
6.1.1 集線器設備類 117
6.1.2 集線器的配置 118
6.2 USB集線器描述符 118
6.2.1 集線器設備描述符 118
6.2.2 集線器配置描述符 120
6.2.3 集線器接口描述符 121
6.2.4 集線器端點描述符 123
6.2.5 集線器類描述符 124
6.3 USB集線器類請求 126
6.3.1 讀取集線器狀態請求GetHubStatus 126
6.3.2 讀取下行端口狀態請求GetPortStatus 127
6.3.3 禁止集線器的特性請求ClearHubFeature 127
6.3.4 禁止下行端口特性請求ClearPortFeature 128
6.3.5 使能集線器特性請求SetHubFeature 129
6.3.6 使能下行端口特性請求SetPortFeature 129
6.3.7 讀取集線器描述符請求GetHubDescriptor 130
6.3.8 設置集線器描述符請求SetHubDescriptor 130
6.3.9 清除TT塊請求ClearTTBuffer 131
6.3.10 復位TT塊請求ResetTT 132
6.3.11 讀取TT內部狀態請求GetTTState 132
6.3.12 停止TT正常工作請求
StopTT 133
6.4 小結 133
第7章 USB HID設備配置 134
7.1 USB HID設備簡介 134
7.2 USB HID設備描述符 136
7.2.1 USB HID設備的定義 136
7.2.2 USB HID基本描述符 137
7.2.3 USB HID類描述符 142
7.3 USB HID設備類請求 144
7.3.1 獲取報告請求GetReport 144
7.3.2 獲取空閑速率請求GetIdle 145
7.3.3 獲取HID協議請求GetProtocol 146
7.3.4 設置報告請求SetReport 146
7.3.5 設置空閑速率請求SetIdle 147
7.3.6 設置HID協議請求SetProtocol 148
7.4 小結 149
第8章 常用的USB芯片 150
8.1 USB芯片分類概述 150
8.1.1 通用USB芯片 150
8.1.2 專用USB芯片 151
8.2 通用USB 接口芯片 151
8.2.1 高速USB接口芯片EZ-USBFX2LP 151
8.2.2 可編程片上系統PSoC USB芯片 159
8.2.3 通用USB接口芯片CH375A 163
8.2.4 超速USB 3.0接口芯片CYUSB3014 170
8.3 專用USB接口芯片 171
8.3.1 USB HID類接口芯片CY7C63723 171
8.3.2 NEC USB3.0芯片µPD720200 173
8.3.3 USB轉串口芯片CH341 175
8.4 USB接口的PCB設計技巧 182
8.4.1 差分阻抗匹配 183
8.4.2 供電和接地 184
8.4.3 USB接頭屏蔽 185
8.4.4 晶體振蕩器 186
8.5 小結 186
第2部分 USB驅動程序設計 187
第9章 USB驅動程序 188
9.1 WDM驅動程序概述 188
9.1.1 WDM驅動程序簡介 188
9.1.2 WDM驅動程序的特點 189
9.1.3 WDM驅動程序的分層結構 190
9.2 WDM功能驅動程序的組成 192
9.2.1 入口例程 193
9.2.2 即插即用例程 194
9.2.3 分發例程 197
9.2.4 電源管理例程 198
9.2.5 卸載例程 200
9.3 USB設備的即插即用實現 201
9.3.1 即插即用設備狀態 202
9.3.2 啟動USB設備 202
9.3.3 停止USB設備 203
9.3.4 刪除USB設備 204
9.4 即插即用IRP請求的處理規則 205
9.5 驅動開發工具——DriverStudio 207
9.5.1 DriverStudio軟件工具集 208
9.5.2 搭建DriverStudio驅動開發環境 208
9.5.3 配置DriverStudio編譯環境 212
9.6 WDM驅動程序基本結構 213
9.6.1 基類KDriver 213
9.6.2 即插即用類KPnPDevice 215
9.6.3 物理對象類KPnpLowerDevice 219
9.7 使用DriverStudio創建USB驅動 219
9.7.1 創建USB驅動程序框架 219
9.7.2 USB驅動程序設計 224
9.8 小結 225
第10章 通用USB驅動程序解析 226
10.1 驅動程序文件簡介 226
10.1.1 USB設備驅動程序的安裝 227
10.1.2 USB設備的識別 227
10.2 驅動程序INF文件的結構 228
10.2.1 版本節 229
10.2.2 源文件盤符節 232
10.2.3 源文件節 233
10.2.4 目標磁盤節 233
10.2.5 供應商節 234
10.2.6 默認安裝節 235
10.2.7 字符串節 235
10.3 Cypress通用USB驅動——基于VC6.0平臺 235
10.3.1 CyLoad.inf文件分析 236
10.3.2 CyUSB.inf文件分析 240
10.3.3 驅動程序的安裝 243
10.4 Cypress通用USB驅動——基于.NET平臺245
10.4.1 CyUSB.inf文件 246
10.4.2 CyUSB.inf文件分析 249
10.5 微軟通用USB驅動——WinUSB 250
10.5.1 WinUSB簡介 250
10.5.2 WinUSB驅動程序安裝包 252
10.5.3 WinUSB INF文件 253
10.6 小結 257
第11章 LabVIEW平臺的USB驅動程序開發 258
11.1 NI LabVIEW平臺簡介 258
11.1.1 LabVIEW平臺簡介 258
11.1.2 NI-VISA開發平臺 259
11.2 LabVIEW平臺下的USB驅動開發 260
11.2.1 NI-VISA的USB驅動簡介 260
11.2.2 創建USB驅動 261
11.2.3 INF安裝文件 264
11.3 小結 269
第3部分 USB編程基礎 271
第12章 基于DriverStudio的USB設備編程基礎 272
12.1 USB編程類函數概述 272
12.2 設備編程類KUsbLowerDevice 272
12.2.1 激活設備配置函數ActivateConfiguration 273
12.2.2 終止設備配置函數 DeActivateConfiguration 274
12.2.3 初始化廠商自定義請求函數 BuildVendorRequest 274
12.2.4 分配USB類請求函數 BuildClassRequest 275
12.2.5 清除USB特征標志函數 ClearFeature 275
12.2.6 設置USB特征標志函數 SetFeature 276
12.2.7 獲取狀態信息函數GetStatus 276
12.2.8 獲取USB幀號函數 GetCurrentFrameNumber 276
12.2.9 設置未配置狀態函數 Unconfigure 277
12.2.10 設置配置狀態函數Configure 277
12.2.11 配置USB接口函數 PreconfigureInterface 277
12.2.12 獲取USB接口描述符函數 LocateInterface 277
12.2.13 獲取USB配置描述符函數 Preconfigure 278
12.2.14 刪除資源函數 ReleaseResources 278
12.2.15 獲取字符串描述符函數 GetStringDescriptor 278
12.2.16 獲取設備描述符函數 GetDeviceDescriptor 279
12.2.17 初始化實例函數Initialize 279
12.2.18 URB發送函數SubmitUrb 279
12.3 接口編程類KUsbInterface 280
12.3.1 使能USB接口函數 SelectAlternate 281
12.3.2 清除USB特征標志函數 ClearFeature 281
12.3.3 設置USB特征標志函數 SetFeature 281
12.3.4 獲取狀態信息函數GetStatus 282
12.3.5 廠商自定義請求函數 BuildVendorRequest 282
12.3.6 分配USB類請求函數 BuildClassRequest 283
12.3.7 設置管道函數Pipes 283
12.3.8 獲取管道數量函數 NumberOfPipes 284
12.3.9 獲取接口協議函數Protocol 284
12.3.10 獲取接口子類函數Subclass 284
12.3.11 獲取接口類函數Class 284
12.3.12 獲取接口號函數AlternateSetting 284
12.3.13 獲取接口數量函數 InterfaceNumber 285
12.3.14 初始化實例函數Initialize 285
12.3.15 關閉接口函數Close 285
12.3.16 判斷是否打開函數IsOpen 286
12.3.17 打開實例函數Open 286
12.3.18 URB發送函數SubmitUrb 286
12.3.19 判斷實例是否有效函數 IsValid 287
12.4 管道編程類KUsbPipe 287
12.4.1 初始化實例函數Initialize 288
12.4.2 打開接口函數Open 288
12.4.3 判斷是否打開函數IsOpen 288
12.4.4 關閉管道函數Close 288
12.4.5 中斷數據傳輸函數 BuildInterruptTransfer 289
12.4.6 控制數據傳輸函數 BuildControlTransfer 289
12.4.7 塊數據傳輸函數 BuildBulkTransfer 290
12.4.8 同步數據傳輸函數 BuildIsochronousTransfer 290
12.4.9 清除USB特征標志函數 ClearFeature 291
12.4.10 設置USB特征標志函數 SetFeature 291
12.4.11 獲取狀態信息函數GetStatus 291
12.4.12 管道復位函數Reset 292
12.4.13 丟棄傳輸函數Abort 292
12.4.14 初始化廠商自定義請求函數 BuildVendorRequest 292
12.4.15 初始化類請求函數 BuildClassRequest 293
12.4.16 獲取最大幀字節數函數 MaximumPacketSize 293
12.4.17 獲取最大傳輸字節數函數 MaximumTransferSize 294
12.4.18 獲取管道句柄函數Handle 294
12.4.19 獲取中斷檢查間隔函數 PollInterval 294
12.4.20 獲取管道端點地址函數 EndpointAddress 294
12.4.21 設置最大傳輸字節數函數 SetMaximumTransferSize 294
12.4.22 URB發送函數SubmitUrb 295
12.4.23 獲取傳輸類型函數Type 295
12.5 小結 295
第13章 基于Visual C++的USB設備編程基礎 296
13.1 基于Visual C++的USB設備編程環境 296
13.1.1 cyioctl類控制函數 296
13.1.2 CyAPI控制函數類 297
13.2 cyioctl控制函數類 298
13.2.1 中止端點請求接口IOCTL_ ADAPT_ABORT_PIPE 298
13.2.2 斷開設備接口IOCTL_ ADAPT_CYCLE_PORT 299
13.2.3 獲取設備地址接口IOCTL_ ADAPT_GET_ADDRESS 299
13.2.4 獲取替換接口IOCTL_ ADAPT_ GET_ALT_INTERFACE_SETTING 299
13.2.5 獲取描述字符串接口 IOCTL_ADAPT_GET_ DEVICE_NAME 300
13.2.6 獲取電源狀態接口IOCTL_ ADAPT_GET_DEVICE_POWER_STATE 300
13.2.7 獲取版本號接口IOCTL_ ADAPT_GET_DRIVER_VERSION 300
13.2.8 獲取替換名稱接口IOCTL_ ADAPT_GET_FRIENDLY_NAME 301
13.2.9 獲取端點數量接口IOCTL_ ADAPT_GET_NUMBER_ENDPOINTS 301
13.2.10 獲取單次傳輸大小接口IOCTL_ ADAPT_GET_TRANSFER_SIZE 302
13.2.11 獲取USBDI版本號接口IOCTL_ADAPT_GET_USBDI_VERSION 302
13.2.12 復位USB設備接口IOCTL_ADAPT_RESET_PARENT_PORT 302
13.2.13 復位USB端點接口IOCTL_ ADAPT_RESET_PIPE 303
13.2.14 設置替換接口IOCTL_ADAPT_SELECT_INTERFACE 303
13.2.15 發送控制請求接口IOCTL_ADAPT_SEND_EP0_CONTROL_TRANSFER 303
13.2.16 數據通信接口IOCTL_ ADAPT_SEND_NON_EP0_TRANSFER 304
13.2.17 設置電源狀態接口IOCTL_ ADAPT_SET_DEVICE_POWER_STATE 305
13.2.18 設置傳輸字節數接口IOCTL_ADAPT_SET_TRANSFER_SIZE 305
13.3 CyAPI控制函數類 306
13.3.1 USB設備控制類 CCyUSBDevice 306
13.3.2 USB配置信息類 CCyUSBConfig 319
13.3.3 USB端點控制類 CCyUSBEndPoint 322
13.3.4 USB接口控制類 CCyUSBInterface 329
13.3.5 USB塊傳輸端點控制類 CCyBulkEndPoint 332
13.3.6 USB控制傳輸端點類 CCyControlEndPoint 333
13.3.7 USB中斷傳輸端點控制類 CCyInterruptEndPoint 336
13.3.8 USB同步傳輸端點控制類 CCyIsocEndPoint 337
13.4 USB數據傳輸實例 339
13.5 小結 341
第14章 基于Visual C#的USB設備編程基礎 342
14.1 基于Visual C#的USB設備編程環境 342
14.2 USBDeviceList類 343
14.2.1 USBDeviceList函數 343
14.2.2 Count成員變量 344
14.2.3 Dispose函數 344
14.2.4 USBDeviceList [int index] 成員變量 345
14.2.5 USBDeviceList [string FriendlyName]成員變量 345
14.2.6 USBDeviceList [int VendorID, int ProductID]成員變量 346
14.2.7 USBDeviceList [int VendorID, int ProductID, int UsagePage, int Usage]成員變量 346
14.3 CyUSBDevice類 347
14.3.1 BcdUSB成員變量 347
14.3.2 DevClass成員變量 348
14.3.3 DevProtocol成員變量 348
14.3.4 DevSubClass成員變量 348
14.3.5 DriverName成員變量 349
14.3.6 FriendlyName成員變量 349
14.3.7 Manufacturer成員變量 350
14.3.8 Name成員變量 350
14.3.9 Path成員變量 350
14.3.10 ProductID成員變量 351
14.3.11 VendorID成員變量 351
14.3.12 SerialNumber成員變量 351
14.3.13 USBAddress成員變量 352
14.4 CyControlEndPoint類 352
14.4.1 Direction成員變量 353
14.4.2 Index成員變量 353
14.4.3 ReqCode成員變量 353
14.4.4 ReqType成員變量 354
14.4.5 Target成員變量 354
14.4.6 Value成員變量 354
14.4.7 XferData函數 354
14.4.8 Read函數 355
14.4.9 Write函數 356
14.5 CyIsocEndPoint類 357
14.5.1 GetPktBlockSize函數 357
14.5.2 BeginDataXfer函數 357
14.5.3 FinishDataXfer函數 358
14.5.4 GetPktCount函數 360
14.5.5 XferData函數 361
14.6 CyHidDevice類 362
14.6.1 GetFeature函數 363
14.6.2 GetInput函數 363
14.6.3 ReadInput函數 364
14.6.4 SetFeature函數 364
14.6.5 SetOutput函數 365
14.6.6 WriteOutput函數 365
14.6.7 ToString函數 366
14.7 CyUSBStorDevice類 369
14.7.1 SendScsiCmd函數 370
14.7.2 ToString函數 371
14.7.3 TimeOut成員變量 371
14.8 CyBulkEndPoint類 372
14.9 小結 373
第15章 基于LabVIEW的USB設備編程基礎 374
15.1 NI-VISA USB設備交互控制 374
15.2 VISA控制函數 378
15.2.1 VISA打開 378
15.2.2 VISA關閉 378
15.2.3 VISA USB控制輸出 379
15.2.4 VISA USB控制輸入 379
15.2.5 VISA寫入 380
15.2.6 VISA讀取 381
15.3 小結 381
第4部分 USB開發實踐 383
第16章 EZ-USB FX2LP固件設計 384
16.1 Cypress固件開發工具 384
16.1.1 安裝開發包 384
16.1.2 開發包工具簡介 386
16.2 基本固件框架 388
16.2.1 基本固件框架的建立 388
16.2.2 固件調試 389
16.3 固件程序設計 394
16.3.1 USB端口讀寫的程序設計 394
16.3.2 USB端口讀寫的固件仿真調試 398
16.3.3 USB端點的數據發送和采集 398
16.3.4 數據發送和采集仿真調試 402
16.4 小結 404
第17章 USB控制數碼管顯示實例 405
17.1 EZ-USB FX2LP的I/O端口 405
17.1.1 普通I/O功能 408
17.1.2 第二復用功能 410
17.2 控制端點0請求 413
17.2.1 USB控制傳輸 413
17.2.2 USB設備請求及固件響應 414
17.2.3 獲得狀態請求(Get Status) 415
17.2.4 設置特性請求(Set Feature) 416
17.2.5 清除特性請求(Clear Feature) 417
17.2.6 獲得描述符請求(Get Descriptor) 418
17.2.7 設置描述符請求(Set Descriptor) 420
17.2.8 設置配置請求(Set Configuration) 421
17.2.9 獲得配置請求(Get Configuration) 422
17.2.10 設置接口請求(Set Interface) 422
17.2.11 獲得接口請求(Get Interface) 423
17.2.12 同步幀請求(Sync Frame) 423
17.2.13 固件加載請求(Firmware Load) 423
17.2.14 自定義請求 424
17.3 USB控制數碼管實例 425
17.3.1 數碼管顯示原理 425
17.3.2 電路原理圖 428
17.4 USB固件程序設計 429
17.4.1 主程序文件 430
17.4.2 功能實現代碼 437
17.4.3 自定義請求的定義 438
17.4.4 USB描述 445
17.4.5 下載固件程序 451
17.5 USB主機程序設計 454
17.5.1 建立項目 454
17.5.2 程序設計 457
17.5.3 編譯程序并運行 464
17.6 小結 464
第18章 使用EEPROM列舉USB設備 465
18.1 USB啟動配置模式 465
18.1.1 EZ-USB FX2LP的啟動模 式簡介 465
18.1.2 默認USB設備狀態 466
18.2 EEPROM引導USB啟動 467
18.2.1 無EEPROM引導啟動 467
18.2.2 EEPROM引導啟動 468
18.2.3 啟動配置寄存器 469
18.2.4 固件下載和重列舉 471
18.2.5 不同芯片的接線 472
18.3 電路原理圖 472
18.4 固件程序設計 474
18.4.1 主程序文件 475
18.4.2 請求響應函數 477
18.4.3 初始化子程序 480
18.4.4 功能子程序 481
18.4.5 自定義請求的定義 481
18.5 USB描述符 481
18.5.1 設備描述符 482
18.5.2 高速配置描述符 482
18.5.3 全速配置描述符 484
18.5.4 字符串描述符 485
18.6 下載固件程序 486
18.7 驅動程序設計 490
18.8 主機程序設計 492
18.8.1 建立工程 492
18.8.2 用戶界面設計 495
18.8.3 程序代碼設計 496
18.8.4 編譯執行 499
18.9 小結 499
第19章 基于Slave FIFO模式的USB數據采集 500
19.1 Slave FIFO模式簡介 500
19.1.1 Slave FIFO模式接口配置 501
19.1.2 典型的數據傳輸 506
19.2 Slave FIFO模式程序設計 515
19.2.1 Slave FIFO程序設計的基 本概念 516
19.2.2 Slave FIFO模式寄存器介紹 517
19.2.3 Slave FIFO工作模式一: AUTO IN模式 529
19.2.4 Slave FIFO工作模式二: AUTO OUT模式 531
19.2.5 Slave FIFO工作模式三: CPU訪問OUT數據包 532
18.2.6 Slave FIFO工作模式四: CPU訪問IN數據包 534
19.3 Slave FIFO模式數據采集實例 535
19.3.1 電路設計 536
19.3.2 USB固件程序設計 537
19.3.3 上位機程序設計 545
19.3.4 程序運行 552
19.4 小結 552
第20章 PSoC USB設計實例 553
20.1 電路原理圖設計 553
20.2 固件設計 554
20.2.1 創建項目 554
20.2.2 配置USB 558
20.2.3 配置引腳 563
20.2.4 配置時鐘 563
20.2.5 固件程序設計 565
20.2.6 下載程序 567
20.3 驅動程序設計 569
20.3.1 制作驅動程序 569
20.3.2 安裝驅動程序 571
20.4 上位機程序設計 574
20.4.1 調試固件 575
20.4.2 創建項目 577
20.4.3 軟件設計 578
20.4.4 運行程序 581
20.5 小結 582
第21章 USB控制DA輸出實例 583
21.1 D/A轉換器概述 583
21.1.1 D/A轉換原理 583
21.1.2 D/A轉換器的類型 584
21.1.3 D/A轉換器的性能參數 586
21.2 電路原理圖設計 587
21.3 固件設計 588
21.3.1 創建項目 588
21.3.2 配置USB 589
21.3.3 配置時鐘 592
21.3.4 配置DA 594
21.3.5 配置引腳 598
21.3.6 固件程序設計 598
21.4 驅動程序設計 602
21.5 上位機程序設計 604
21.5.1 創建項目 605
21.5.2 軟件設計 606
21.5.3 運行程序 610
21.6 小結 611
第22章 USB控制A/D轉換實例 612
22.1 A/D轉換器概述 612
22.1.1 A/D轉換原理 612
22.1.2 A/D轉換器的技術參數 616
22.1.3 A/D轉換器的選擇原則 617
22.2 8通道AD轉換器MAX1300 617
22.2.1 引腳接口 618
22.2.2 工作方式 620
22.2.3 控制指令 623
22.3 電路原理圖設計 626
22.4 固件設計 627
22.4.1 創建項目 627
22.4.2 配置USB 628
22.4.3 配置時鐘 631
22.4.4 配置SPI組件 633
22.4.5 配置引腳 635
22.4.6 固件程序設計 636
22.5 驅動程序設計 643
22.6 上位機程序設計 646
22.6.1 創建項目 646
22.6.2 軟件設計 647
22.6.3 運行程序 654
22.7 小結 654
第23章 USB集線器開發實例 655
23.1 USB Hub芯片CY7C65642 655
23.1.1 CY7C65642接口 656
23.1.2 CY7C65642供電模式 658
23.1.3 EEPROM配置項 659
23.1.4 時鐘配置 661
23.1.5 復位電路 662
23.1.6 過流監測 662
23.1.7 端口指示 663
23.2 四端口USB集線器設計 663
23.2.1 電路圖 664
23.2.2 安裝 666
23.3 小結 667
第24章 U盤設計實例 668
24.1 U盤存儲芯片 668
24.1.1 Nor-Flash存儲芯片和Nand- Flash存儲芯片 668
24.1.2 Nand-Flash存儲器K9K4G08U0M 668
24.1.3 Nand-Flash存儲器的組織 結構 670
24.1.4 Nand-Flash存儲器的指令集 671
24.1.5 Nand-Flash存儲器的操作 672
24.2 基于Nand-Flash的文件系統 672
24.2.1 磁盤分區格式簡介 672
24.2.2 基于Nand-Flash的文件系統 673
24.2.3 Nand-Flash存儲器上的FAT 結構 678
24.3 Nand-Flash控制器 678
24.3.1 CY7C68024簡介 679
24.3.2 兼容Nand-Flash存儲器 680
24.4 U盤設計實例 681
24.4.1 電路原理圖 681
24.4.2 重新配置U盤 683
24.5 小結 684
第25章 USB接口控制示波器實例 685
25.1 示波器簡介 685
25.1.1 示波器分類 686
25.1.2 示波器的主要技術指標 686
25.1.3 主要示波器生產商 687
25.1.4 示波器的使用注意事項 689
25.2 示波器編程接口 689
25.2.1 USBTMC簡介 690
25.2.2 DPO2024示波器 691
25.2.3 安裝符合USBTMC的驅動 程序 692
25.3 USB讀寫示波器實例 693
25.3.1 創建項目 693
25.3.2 程序設計 695
25.3.3 程序演示 700
25.4 使用NI-VISA控制示波器實例 701
25.4.1 創建項目 701
25.4.2 程序設計 707
25.4.3 運行程序 708
25.5 小結 708
第26章 Android平臺USB接口開發 709
26.1 Android平臺簡介 709
26.1.1 Android開放手機聯盟 709
26.1.2 Android的特性 710
26.1.3 Android對比其他主流操作 系統 711
26.1.4 Android系統構架 711
26.1.5 Android開發工具 713
26.1.6 Android程序結構分析 714
26.2 Android的USB接口 718
26.2.1 Android USB接口模式 718
26.2.2 USB附件模式 719
26.2.3 USB主機模式 722
26.2.4 調試注意事項 725
26.3 USB硬件設計 725
26.3.1 電路原理圖 725
26.3.2 固件程序設計 727
26.3.3 固件程序代碼 733
26.4 Android程序設計 737
26.4.1 創建項目 737
26.4.2 界面布局 741
26.4.3 程序實現 743
26.4.4 運行結果 752
26.5 小結 753
序: