內容簡介
《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 小結
序言
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月