簡(jiǎn)易USB接口卡的設(shè)計(jì)和實(shí)現(xiàn)
本項(xiàng)設(shè)計(jì)的驅(qū)動(dòng)程序是WDM模型的驅(qū)動(dòng)程序及應(yīng)用程序是 用VC++編的,采用動(dòng)態(tài)庫(kù)與驅(qū)動(dòng)程序進(jìn)行通信的。應(yīng)用程序是通過(guò)API函數(shù)和驅(qū)動(dòng)程序進(jìn)行通訊的。本驅(qū)動(dòng)程序的主要功能是控制USB設(shè)備上的讀寫、擦除和一些檢查等功能。
本文引用地址:http://m.butianyuan.cn/article/82820.htm如下所示的基本驅(qū)動(dòng)程序讀寫控制函數(shù)和相應(yīng)的驅(qū)動(dòng)體系結(jié)構(gòu):
1) 初始化例程DriverEntry ()www.51kaifa.com
設(shè)備驅(qū)動(dòng)程序與應(yīng)用程序不同,它沒(méi)有main () 或WinMain () 函數(shù),而是有一個(gè)名為DriverEnt ry ()的入口函數(shù),它通常完成一些初始化工作。當(dāng)設(shè)備驅(qū)動(dòng)程序被加載時(shí),操作系統(tǒng)調(diào)用這個(gè)入口。在該例程中,需要初始化Dispatch (分派) 例程入口函數(shù)。
2) 創(chuàng)建設(shè)備例程AddDevice ()
大多數(shù)的PDO 都是在PnP 管理器調(diào)用該程序入口點(diǎn)時(shí)被創(chuàng)建的。插入新設(shè)備后,系統(tǒng)啟動(dòng)時(shí),總線枚舉器會(huì)發(fā)現(xiàn)總線上的所有設(shè)備,會(huì)自動(dòng)尋找并安裝設(shè)備的驅(qū)動(dòng)程序,并由驅(qū)動(dòng)程序中的處理PnP功能模塊自動(dòng)處理AddDevice () 例程及其他PnP 消息。此例程使用IoCreateDevice () 函數(shù)創(chuàng)建設(shè)備對(duì)象,再使用IoRegisterDevice InteRFace () 函數(shù)將設(shè)備組成為一個(gè)特定的設(shè)備接口,然后使用IoAttachDe2viceToDeviceStack () 函數(shù)關(guān)聯(lián)設(shè)備棧。
圖4-2WDM型的USB驅(qū)動(dòng)體系框架
DeviceIoControl(
HANDLE hDevice,
DWORD dwIocontrolcode,
LPVOID IpInBuffer,
DWORD nInBuffersize,
LPVOID IpOutBuffer,
DWORD nOutBuffersize,
LPDWORD IpBytysReturned,
LPOVERLAPPED IpOverLapped
);
NTSTATUS JXQIF::AddDevice(PDEVICE_OBJECT Pdo)
{
JXQIFDevice * pDevice = new (
static_cast(KUnitizedName(L"JXQIFDevice", m_Unit)),
FILE_DEVICE_UNKNOWN,
NULL,
0,
DO_BUFFERED_IO
)
還有CreatFile,ReadFile,WriteFile,CloseFile 等。
圖4-3應(yīng)用程序的一個(gè)基本主界面。
五、結(jié)論
本文作者的創(chuàng)新點(diǎn)為對(duì)USB驅(qū)動(dòng)程序進(jìn)行了很好的裁減,而且配合上位機(jī)軟件進(jìn)行了傳輸速度的判斷和選擇,且結(jié)合實(shí)際的高速和低速采集系統(tǒng)做出了兩種速度的選擇。此接口卡留有多余的控制接口可以進(jìn)行再擴(kuò)展,可以實(shí)現(xiàn)對(duì)PROM、FPG進(jìn)行讀取,可以實(shí)現(xiàn)大容量存儲(chǔ)的高速讀取。此采集卡留有插槽可以在采編器和一些存儲(chǔ)器上簡(jiǎn)單的插接就可以和電腦的USB口進(jìn)行通信了。文章介紹了應(yīng)用CY7C68013 USB接口芯片做一個(gè)簡(jiǎn)單的USB接口卡,以及對(duì)其程序的實(shí)現(xiàn)結(jié)構(gòu)做了個(gè)大體的介紹和本設(shè)計(jì)的硬件實(shí)現(xiàn)工作做了個(gè)詳細(xì)介紹,經(jīng)過(guò)實(shí)驗(yàn)室的應(yīng)用得出CY7C68013 USB接口芯片做簡(jiǎn)易USB接口卡到應(yīng)用程序的開(kāi)發(fā)是比較簡(jiǎn)接和方便,且可以達(dá)到較高的數(shù)據(jù)傳輸速度,而且系統(tǒng)的穩(wěn)定性好和易于擴(kuò)展。隨著USB 技術(shù)的不斷發(fā)展和完善,已經(jīng)使其逐漸成為先進(jìn)總線接口技術(shù)的標(biāo)志和方向。
參考文獻(xiàn):
1 J an Axelson. USB 大全. 北京:中國(guó)電力出版社,2001.
2 Chris Cant . Windows WDM 設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)指南. 北京:機(jī)械工業(yè)出版社,2003
3 KAURA V1 , BLASKO V1Operation of a phase Locked Loop System Under Distorted Utility Conditions 1IEEE Transactions On Industry Applications ,1997 ,33(1) ,58 - 631
4 Chris Cant . 孫義馬莉波國(guó)雪飛譯,WindowsWDM設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)指南,北京:機(jī)械工業(yè)出版社 ,2000
5 魏來(lái),董燕.程控交換實(shí)驗(yàn)系統(tǒng)USB接口設(shè)計(jì)[J].微計(jì)算機(jī)信息,2004年,第九期
評(píng)論