|
-- 會員 / 註冊 --
|
|
|
|
USB 3.0編程寶典 ( 簡體 字) |
作者:鄭杰 | 類別:1. -> 程式設計 -> USB |
譯者: |
出版社:電子工業出版社 | 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 |
序: |
|