基于PDIUSBD12的USB控制器的設計
因此,可以將每種命令做成函數,用函數實現各個命令,直接調用函數即可。
固件程序流程圖如圖2所示。
其中:
TD_Init():此函數用于初始化全局狀態(tài)變量。
TD_Poll():此函數在操作外設時反復調用,用于外設功能程序代碼的執(zhí)行。
TD Suspend():此函數使外設進入低功耗掛起狀態(tài)。
TD_Resume():次函數用于對外部恢復事件作出反應,并恢復處理器的正常工作狀態(tài)。
3.2 驅動程序設計
驅動程序介于硬件與上層應用軟件之間,為它們之間的通信提供橋梁。應用程序可以不必知道它想要或者正在與之通信的硬件設備的屬性,包括電氣連接,物理地址,信號種類。通信協議等,甚至應用程序可以不知道與之通信的是何種接口。這些工作全部是由各個層次的驅動程序來完成的,應用程序只需要知道設備的名稱,或是功能就可以了。在Windows中,應用程序可以通過驅動程序像操作一般文件一樣來訪問硬件設備,以實現應用層與設備的交互。與傳統(tǒng)PC總線(如PCI總線)設備的驅動程序相比,USB設備驅動程序從不直接與硬件對話。相反,它僅靠創(chuàng)建URB(USB請求塊)并把URB提交到總線驅動程序就可完成硬件操作。
USB驅動程序現在已經具有工業(yè)標準化,一般生產USB芯片的廠家已經設計好其驅動程序,在本設計中,使用了由PHILIPS公司提供的PDIUSBD12通用驅動程序D12usb.sys,即功能驅動程序。
4 結束語
PHILIPS公司的PDIUSBD12芯片及其開發(fā)環(huán)境提供了一個快速有效的開發(fā)手段,本文對USB設備端的固件和硬件設計過程以及在主機端的驅動程序和應用程序開發(fā)都作了全面詳細的介紹。給出了一個快速實現USB控制器的方法與技術,也是開發(fā)其他類似設備的參考范例。
參考文獻:
[1].PDIUSBD12datasheethttp://www.dzsc.com/datasheet/PDIUSBD12.html.
[2].AT89C52datasheethttp://www.dzsc.com/datasheet/AT89C52_1064535.html.
[3].PCIdatasheethttp://www.dzsc.com/datasheet/PCI_1201469.html.
評論