目錄
第1章 USB的基本架構與特性1-11.1 什麼是USB?1-21.2 如何安裝USB裝置?1-41.3 USB的匯流排結構1-81.4 USB資料流的模式與管線的概念1-111.5 USB傳輸類型1-131.6 USB的連接器與纜線1-171.6.1 機械結構1-171.6.2 USB介面的電氣特性1-201.6.3 USB匯流排狀態1-221.6.4 USB的電源管理1-291.7 USB的編碼方式1-301.8 USB介面的通信協定1-311.8.1 資料欄位的格式1-321.8.2 封包格式1-361.8.3 資料交易格式1-401.9分割資料交易1-461.10USB描述元1-501.11USB標準裝置要求1-551.12裝置群組1-571.13結論1-59第2章 EZ-USBFX2晶片組特性2-12.1前 言2-12.2EZ-USBFX2硬體架構圖2-32.3USB內核2-72.4FX2微處理機2-82.5重新裝置列舉2-92.6FX2端點緩衝區2-92.7外部FIFO介面2-122.8FX2系列-GPIF(泛用型可程式化的界面)2-142.9FX2晶片組系列2-152.9.1 56-Pin包裝2-172.9.2 100-Pin包裝2-192.9.3 128-Pin包裝2-202.10Cypress全速與高速晶片組的差異2-232.11暫存器的應用2-37第3章 EZ-USBFX2CPU3-13.1增強的8051特性3-23.2執行效率的總覽說明3-33.3軟體相容性3-53.4803x/805x特性比較3-53.5FX2CPU/DS80C320差異性3-53.6FX2CPU暫存器介面3-73.7FX2CPU內部RAM3-83.8週邊I/O埠3-83.9中 斷3-93.10電源控制3-103.11特殊功能暫存器(SFR)3-103.12外部位址/資料匯流排3-113.13 計時器/計數器3-12第4章 輸入/輸出與記憶體4-14.1 輸入/輸出(I/O)簡介4-24.2 週邊I/O埠4-24.3 週邊I/O埠切換功能4-54.3.1 A埠切換功能4-74.3.2 埠B與埠D的切換功能4-84.3.3 C埠切換功能4-94.3.4 埠E的切換功能4-94.4 I2C控制器4-114.5 I2C匯流排的應用4-124.6 控制位元4-144.6.1 START位元4-144.6.2 STOP位元4-154.6.3 LASTRD位元4-154.7 狀態位元4-154.7.1 DONE位元4-154.7.2 ACK位元4-164.7.3 BERR位元4-164.7.4 ID1,ID04-164.8 送出I2C資料步驟4-164.9 接收I2C資料步驟4-174.10 EEPROM啟動載入器4-184.11 FX2記憶體簡介4-194.11.1 內部資料RAM4-194.11.2 8051記憶體4-214.12 FX2記憶體對映4-244.13 “Von-Neumannizing”外接程式與4-274.14 在0xE000-0xFFFF位址的內建資料4-27第5章 軟體發展工具5-15.1 FX2發展系統驅動程式安裝5-15.2 控制平台(Controlpanel)應用環境基本操作5-65.3 控制平台總覽5-95.4 FX2發展系統測試軟體及工具5-205.5 KeilC51工具軟體-μVisions5-225.5.1 安裝與進入μVision2軟體5-225.5.2 KeilμVision2軟體環境介紹5-255.5.3 新專案建立5-265.5.4 Debug除錯環境介紹5-265.5.5 μVision整合發展環境工具列與功能說明5-35第6章 硬體發展工具6-16.1 硬體開發工具的基本架構6-26.2 硬體工具組介紹6-56.2.1 FX2-56核心單板6-56.2.2 CPLD-AD/IO擴充電路板6-96.2.3 CPLD-AD/IO擴充電路板週邊介紹6-206.3 初步安裝程序6-286.3.1 確認主機是否支援USB2.0規格6-29第7章 I/O實驗範例-LED輸出7-17.1 硬體設計與基本概念7-27.2 韌體程式碼設計7-37.3 程式編譯與鏈結7-57.4 七段顯示器輸出實驗7-157.4.1 韌體程式碼設計7-187.4.2 韌體程式碼的編譯與鏈結7-207.5 結 論7-20第8章 I/O實驗範例-LCD顯示器8-18.1 硬體設計與基本概念8-18.1.1 液晶顯示器(LCD)8-18.2 韌體程式設計8-218.3 韌體程式碼的編譯與鏈結8-23第9章 存取端點緩衝區9-19.1 FX2的大容量端點和小容量端點9-29.2 高速和全速的差異處9-39.3 CPU配置端點9-49.4 CPU存取FX2端點資料9-89.5 FX2端點的CPU控制9-99.5.1 控制EP0、EP1IN和EP1OUT的暫存器9-99.5.2 EP1INCS9-169.5.3 控制EP2、EP4、EP6與EP8的暫存器9-179.5.4 控制所有端點的暫存器9-249.5.5 SETUP資料指標器9-319.5.6 傳輸長度9-349.5.7 可存取的記憶體空間9-349.6 自動指標器9-349.7 存取端點程式設計9-369.7.1 小容量端點-EP1端點測試9-369.7.2 大容量端點-EP2/4/6/8端點測試9-41第10章 中 斷10-110.1 簡 介10-110.2 中斷SFR暫存器10-210.3 中斷處理10-610.3.1 中斷遮罩10-710.3.2 中斷優先權10-810.3.3 中斷取樣10-810.4 USB特定中斷10-910.4.1 回復中斷10-910.4.2 USB中斷10-910.5 USB自動向量10-1910.5.1 USB自動向量解碼10-2110.6 I2C中斷10-2310.7 FIFO/GPIF中斷(INT4)10-2410.8 FIFO/GPIF-中斷自動向量10-2510.8.1 FIFO/GPIF自動向量解碼10-2610.9 USB巨量中斷程式碼撰寫10-2710.9.1 小容量端點-EP1中斷程式碼撰寫10-2810.9.2 大容量端點-EP2中斷程式碼撰寫10-3210.10 SOF中斷10-3310.11 I2C中斷10-36第11章 重置與電源管理11-111.1 簡 介11-111.2 FX2打開電源重置(POR)11-211.3 CPU重置的釋放11-311.3.1 RAM的下載11-411.3.2 下載EEPROM11-411.3.3 外部ROM11-411.4 CPU重置所產生的影響11-511.5 USB匯流排重置11-511.6 FX2脫離11-611.7 各種重置狀態的總結11-611.8 USB電源管理11-711.9 中止(Suspend)11-1011.10喚醒/回復(Resume)11-1111.10.1 喚醒中斷11-1311.11USB回復(遠端喚醒)11-1411.11.1 WU2接腳11-1511.12 結 論11-16第12章 控制傳輸與端點012-112.1 端點0基本概念12-212.2 控制端點,EP012-212.3 USB標準要求12-712.4 標準裝置要求12-912.5 標準介面要求12-1112.6 標準端點要求12-1212.7 FX2USB標準要求12-1412.7.1 取得狀態,GetStatus12-1512.7.2 設定特性-SetFeature12-1912.7.3 清除特性-ClearFeature12-2112.7.4 取得描述元-GetDescriptor12-2212.7.5 設定描述元-SetDescriptor12-2612.7.6 設定配置-SetConfiguration12-2912.7.7 取得配置-GetConfiguration12-3012.7.8 設定介面-SetInterface12-3012.7.9 取得介面-Get_Interface12-3112.7.10設定位址-SetAddress12-3212.7.11同步訊框12-3312.7.12韌體下載12-34第13章 重新裝置列舉13-113.1 重新裝置列舉基本概念13-213.2 裝置列舉步驟13-413.3 裝置列舉步驟的實現-使用USB分析儀工具13-613.4 預設的FX2USB裝置13-1913.5 裝置列舉模式13-2013.6 無EEPROM或是無效的EEPROM13-2113.7 存在著EEPROM,第一個位元組是0xC013-2213.8 存在著EEPROM,第一個位元組是0xC213-2313.9 配置位元組013-2513.10韌體執行重新裝置列舉13-2613.11多重-重新裝置列舉13-2713.12預設裝置的各個描述元13-2713.13裝置列舉程式碼的撰寫13-30第14章 韌體架構14-114.1 韌體架構總覽14-214.2 建立韌體架構14-414.3 韌體架構之副函式鉤子14-514.3.1 工作分配器14-614.3.2 裝置要求(DeviceRequest)14-714.3.3 USB中斷服務常式14-1114.4 韌體架構之整體變數14-1614.5 描述元表格14-1714.5.1 裝置描述元14-1914.5.2 裝置合格器描述元14-1914.5.3 其他速度配置描述元(Other-Speed-Configuration)14-2014.5.4 配置描述元14-2014.5.5 介面描述元14-2114.5.6 端點描述元14-2214.5.7 字串描述元14-2214.5.8 群組描述元14-2314.6 韌體架構程式-FW.C14-2414.6.1 同步化的延遲14-3214.7 專案檔案的設計14-34第15章 巨量傳輸15-115.1 簡 介15-115.2 巨量傳輸15-215.3 中斷傳輸15-415.4 巨量IN傳輸15-415.5 巨量OUT傳輸15-515.6 巨量傳輸程式設計15-815.6.1 巨量迴圈傳輸-BULKLOOP範例15-815.6.2 巨量迴圈傳輸-BULKLOOP測試15-2015.6.3 巨量傳輸測試,BULKSRC範例15-28第16章 泛用型驅動程式16-116.1 階層式的驅動程式16-216.1.1 PC主機的USB驅動程式16-416.1.2 Windows選擇驅動程式16-816.2 EZ-USBGPD驅動程式16-916.2.1 EZ-USB介面支援16-916.2.2 建構EZ-USBGPD驅動程式16-916.2.3 載入EZ-USBGPD驅動程式16-1016.3 INF檔案16-1016.3.1 登錄編輯器16-1416.3.2 INF檔的基本架構16-1516.3.3 INF文件的定義16-3116.3.4 INF安裝資訊檔案的開啟16-3116.4 連接至GPD的使用者模式介面16-3316.4.1 符號鏈結字串16-3316.4.2 裝置I/O控制16-3416.5 I/O控制程式碼(I/OControlCode,IOCTL)參考程式16-3516.5.1 標準的裝置要求IOCTL16-3516.5.2 資料傳輸IOCTL16-3816.5.3 其他功能的IOCTLs16-4416.5.4 EZ-USB特定IOCTL16-4716.6 控制平台的實現16-48第17章 PC應用程式設計17-117.1 迴路測試巨量傳輸17-217.1.1 韌體程式設計17-217.1.2 VisualBasic程式設計17-417.1.3 VC++程式設計17-1917.2 USB輸入/輸出控制裝置17-2317.2.1 單端點的USB輸出裝置17-2317.2.2 3個端點的USB輸出裝置17-3217.3 USB2.0週邊裝置的速度測試17-4117.3.1 韌體程式設計17-4117.3.2 PC應用程式設計17-45第18章 HID群組18-118.1 HID簡介18-218.2 HID群組的特性與限制18-218.3 HID基本要求18-518.4 韌體要求18-718.5 辨識HID裝置18-818.5.1 描述元的內容18-918.5.2 啟動介面(BootInterfaces)18-1318.5.3 版本修訂的相容性18-1418.5.4 HID群組描述元18-1418.6 報告描述元18-1618.7 HID群組要求18-21第19章 HIDI/O韌體程式設計19-119.1 設計概念19-219.2 韌體程式設計19-319.2.1 DSCR.A51檔案的修改19-319.2.2 FW.C檔案的修改19-919.2.3 BULKLOOP.C檔案的修改19-1119.3 韌體程式碼的編譯與鏈結19-14第20章 HIDPC應用程式設計20-120.1 PC主機通訊的基本概念20-220.2 主機如何發現裝置20-220.3 所需之API相關文件20-320.4 HID裝置驅動程式與DLL的特性20-520.5 HIDAPI函式20-720.6 Windows與HID通訊的API函式20-920.7 打開HID裝置的通訊步驟20-1420.8 VisualBasic程式設計20-1620.9 簡化VisualBasic應用程式-DLL的引用20-17第21章 SlaveFIFO設計與應用21-121.1 硬 體21-221.1.1 SlaveFIFO接腳21-321.1.2 FIFO資料匯流排(FD)21-421.1.3 介面時脈(IFCLK)21-621.1.4 FIFO旗標接腳(FLAGA,FLAGB,FAGC,FLAGD)21-921.1.5 控制接腳(SLOE,SLRD,SLWR,PKTEND,FIFOADR[1:0])21-1221.1.6 SlaveFIFO晶片選擇接腳(SLCS)21-1421.1.7 實現同步的SlaveFIFO寫入的動作21-1421.1.8 實現同步的SlaveFIFO讀取21-1821.1.9 實現非同步SlaveFIFO寫入21-2021.1.10實現非同步SlaveFIFO讀取21-2221.2 韌體程式設計21-2421.2.1 存取FIFO的韌體程式21-2421.2.2 EPx記憶體21-3021.2.3 SlaveFIFO可程式化準位旗標(PF)21-3121.2.4 自動輸入/自動輸出模式21-3921.2.5 AUTOOUT=1,CPU存取OUT封包21-4121.2.6 AUTOOUT=0,CPU存取OUT封包21-4121.2.7 CPU存取IN封包,AUTOIN=121-4521.2.8 存取IN封包,AUTOIN=021-4721.2.9 自動輸入/自動輸出啟始程序21-4921.2.10自動模式:同步與非同步SlaveFIFOIN資料傳輸21-50第22章 實現SlaveFIFO之CPLD設計22-122.1 AlteraQuartusII基本介紹22-222.2 七段顯示器輸出測試22-322.3 七段顯示器與按鍵測試22-622.4 非同步SlaveFIFO設計與實現22-922.5 非同步PC應用程式設計22-1522.5.1 NIMeasurementStudio22-1522.5.2 MeasurementStudioforVC++的引用22-1722.5.3 非同步傳輸的PC應用程式測試22-2222.5.4 同步傳輸的PC應用程式設計22-2822.6 同步SlaveFIFO設計與實現22-3422.7 同步之PC應用程式測試22-3922.8 討 論22-40第23章 高速A/D轉換之設計與應用23-123.1 高速A/D資料擷取卡23-223.2 韌體程式設計23-423.3 SlaveFIFO的CPLD設計23-423.4 PC應用程式測試23-7附 錄附錄A 零件表附-1參考資料
第1章 USB的基本架構與特性1-11.1 什麼是USB?1-21.2 如何安裝USB裝置?1-41.3 USB的匯流排結構1-81.4 USB資料流的模式與管線的概念1-111.5 USB傳輸類型1-131.6 USB的連接器與纜線1-171.6.1 機械結構1-171.6.2 USB介面的電氣特性1-201.6.3 USB匯流排狀態1-221.6.4 USB的電源管理1-291.7 USB的編碼方式1-301.8 USB介面的通信協定1-311.8.1 資料欄位的格式1-321.8.2 封包格式1-361.8.3 資料交易格式1-401.9分割資料交易1-461.10USB描述元1-501.11USB標準裝置要求1-551.12裝置群組1-571.13結論1-59第2章 EZ-USBFX2晶片組特...