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