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