第1章 USB總線概述
1.1 USB總線簡介1
1.2 USB總線的優(yōu)點1
1.3 PHILIPS公司的USB器件介紹1
1.3.1 PHILIPS公司的USB設備器件2
1.3.2 PHILIPS公司的USB主控器件3
1.3.3 PHILIPS公司的OTG器件10
第2章 USB 1.1協(xié)議簡介
2.1 USB系統(tǒng)構成13
2.2 USB設備的枚舉過程14
2.3 USB的分組標識14
2.4 USB標準設備請求16
2.5 USB設備的描述符18
第3章 PDIUSBD12器件介紹
3.1 功能描述25
3.1.1 PDIUSBD12器件特性25
3.1.2 管腳配置25
3.1.3 描述27
3.2 端點描述30
3.3 命令匯總31
3.3.1 初始化命令32
3.3.2 數(shù)據(jù)流命令36
3.3.3 普通命令40
第4章 USB開發(fā)套件
4.1 USB D12 SMART開發(fā)套件42
4.1.1 簡介42
4.1.2 設置USB D12 SMART套件43
4.1.3 D12端點描述46
4.1.4 連接器描述48
4.2 DP-51下載仿真實驗儀52
第5章 單片機的固件編程
5.1 固件編程的思想54
5.2 固件編程的實現(xiàn)56
5.2.1 硬件提取層--EPPHAL.C57
5.2.2 PDIUSBD12命令接口--D12CI.C57
5.2.3 中斷服務程序--ISR.C61
5.2.4 協(xié)議層--CHAP_9.C, PROTODMA.C69
5.2.5 標準設備請求處理--CHAP_9.C70
5.2.6 廠商請求處理--PROTODMA.C81
5.2.7 主循環(huán)--MAINLOOP.C84
5.2.8 其他CPU平臺的固件接口的移植89
5.2.9 USB設備枚舉的數(shù)據(jù)傳輸過程89
第6章 USB驅動程序開發(fā)
6.1 使用Windows DDK開發(fā)驅動程序96
6.2 驅動程序設計中的基本概念98
6.2.1 五層模型98
6.2.2 IRP(IO請求包)99
6.2.3 FDO. PDO. Filter DO以及IRP在一個設備對象堆棧中的流程99
6.2.4 USB驅動程序相關概念99
6.2.5 USB驅動程序的入口詳解100
6.2.6 驅動程序的初始化:BulkUsb_AddDevice101
6.2.7 驅動程序的卸載:BulkUsb_DriverUnload105
6.3 即插即用(PNP)處理例程的編寫(IRP_MJ_PNP)105
6.3.1 設備即插即用狀態(tài)圖解105
6.3.2 處理即插即用IRP的主例程BulkUsb_DispatchPnP分析106
6.3.3 處理設備啟動IRP:IRP_MN_START_DEVICE108
6.3.3 處理查詢停止設備IRP:IRP_MN_QUERY_STOP_DEVICE117
6.3.4 處理取消停止設備IRP:IRP_MN_CANCEL_STOP_DEVICE118
6.3.5 處理停止設備IRP:IRP_MN_STOP_DEVICE119
6.3.6 處理查詢卸載設備IRP:IRP_MN_QUERY_REMOVE_DEVICE120
6.3.7 處理取消卸載設備IRP:IRP_MN_CANCEL_REMOVE_DEVICE121
6.3.8 處理意外卸載設備IRP:IRP_MN_SURPRISE_REMOVAL122
6.3.9 處理卸載設備IRP:IRP_MN_REMOVE_DEVICE124
6.3.10 處理查詢設備性能IRP:IRP_MN_QUERY_CAPABILITIES125
6.4 電源管理例程的編寫(IRP_MJ_POWER)127
6.4.1 電源管理中的基本概念127
6.4.2 處理電源管理IRP的基本規(guī)則128
6.4.3 處理電源管理IRP的主例程BulkUsb_DispatchPower分析129
6.4.4 處理電源狀態(tài)查詢IRP:IRP_MN_QUERY_POWER131
6.4.5 處理電源狀態(tài)設置IRP:IRP_MN_SET_POWER135
6.4.6 處理等待/喚醒IRP:IRP_MN_WAIT_WAKE138
6.4.7 電源操作中的回調例程138
6.5 設備控制例程的編寫(IRP_MJ_DEVICE_CONTROL)143
6.6 數(shù)據(jù)讀寫例程的編寫(IRP_MJ_READ, IRP_MJ_WRITE)146
6.6.1 USB設備數(shù)據(jù)讀寫的基本概念146
6.6.2 打開USB設備的IRP:IRP_MJ_CREATE146
6.6.3 關閉USB設備的IRP:IRP_MJ_CLOSE148
6.6.4 讀寫USB設備的IRP:IRP_MJ_READ, IRP_MJ_WRITE149
6.7 WMI例程的編寫(IRP_MJ_SYSTEM_CONTROL)153
6.7.1 關于WMI的基本知識153
6.7.2 處理WMI的主例程:BulkUsb_DispatchSysCtrl154
6.7.3 各種具體的WMI的處理l155
6.8 公用處理例程的編寫159
6.8.1 對USB設備的選擇性掛起159
6.8.2 對USB設備的等待/喚醒操作(Wait/Wake)168
6.8.3 利用信號量機制確定處理中的IRP的個數(shù)171
6.8.4 使用系統(tǒng)IRP來提交URB173
6.8.5 處理堆積的IRP174
6.8.6 取消IRP的工作176
第7章 USB應用程序設計
7.1 查找設備179
7.1.1 獲取設備信息集180
7.1.2 識別接口信息181
7.1.3 獲得設備路徑名182
7.2 打開設備183
7.3 讀寫USB設備184
7.4 關閉通信187
第8章 USB51S及其EASYD12庫的使用
8.1 各端點在固件中的使用188
8.2 固件函數(shù)庫子程序說明189
8.3 增加用戶請求191
8.4 示例程序191
8.5 EasyD12驅動程序庫的使用196
第9章 基于USB接口的E2PROM編程器
9.1 概述198
9.2 硬件接口198
9.3 通信協(xié)議200
9.3.1 上位機命令(使用端點1)200
9.3.2 讀操作回應201
9.3.3 寫操作201
9.4 使用說明202
9.4.1 增加D12接收緩沖區(qū)監(jiān)視位202
9.4.2 USB事件標志定義202
9.4.3 USB設備請求寄存器203
9.4.4 Setup包數(shù)據(jù)緩沖區(qū)203
9.4.5 注意事項203
9.5 源代碼203
9.5.1 文件MAINLOOP.C清單204
9.5.2 文件ISR.C清單213
9.5.3 文件VI2C_C51.C清單217
9.6 上位機軟件設計224
9.6.1 概述224
9.6.2 EasyD12.dll簡介225
9.6.3 ZlgEasyD12演示程序簡介225
9.6.4 操作演示程序225
9.6.5 使用EasyD12.dll226
9.6.6 注意事項及程序設計227
9.6.7 創(chuàng)意與超越236
第10章 USB開發(fā)的注意事項
10.1 電源供電237
10.2 數(shù)據(jù)傳輸238
10.3 傳輸速度238
10.4 PDIUSBD12常見問題解答238
10.4.1 普通產品信息238
10.4.2 關于上電239
10.4.3 上電復位239
10.4.4 掛起239
10.4.5 時鐘241
10.4.6 接口242
10.4.7 PDIUSBD12的編程245
10.4.8 其他245
10.5 SMART D12板常見問題解答247
附錄
附錄1TKS系列單片機實時在線仿真器249
附錄2CP系列通用編程器253
附錄3周立功單片機發(fā)展有限公司通訊錄256