基于USB的接口卡
出處:yzyz1983yz 發(fā)布于:2008-08-30 14:05:48
前言
現(xiàn)代以計算機為的總線技術(shù)發(fā)展迅速,各種基于USB、PCI以及ISA等總線的系統(tǒng)已非常普遍,但對于用戶的特殊要求卻不能很好的滿足,往往需要單獨設(shè)計。單獨設(shè)計開發(fā)無論從成本還是從時間上都是很大的浪費。以PDIUSBD12(以下簡單D12)和單片機構(gòu)成的USB總線接口卡,可以根據(jù)用戶不同的需要,在不必掌握復(fù)雜的USB協(xié)議的情況下,使自己設(shè)備很容易的應(yīng)用USB跟計算機交換數(shù)據(jù),而且能很方便的改造舊系統(tǒng),充分享用USB帶來的諸多方便,如對一般系統(tǒng)不用外接電源。此接口卡具有通用性好、速度快、成本低廉等特點。
?。苯M成結(jié)構(gòu)
本套系統(tǒng)的就是USB接口芯片D12,它可以與微處理器實現(xiàn)無縫接口,微處理器采用的是WINBOND的高性能單片機77E58,控制中樞是CPLD(EPM7064S),實現(xiàn)USB數(shù)據(jù)傳輸?shù)模模停凉δ?,系統(tǒng)還預(yù)置了用戶RAM區(qū),便于用戶根據(jù)特殊需要靈活的編程控制。
接口卡留給用戶使用的接口包括以下幾種:a、FIFO入口方向的九位數(shù)據(jù)線;b、77E58的串行口;c、用77E58的P1口模擬的I2C總線;d、用戶控制指令數(shù)據(jù)接口;e、對用戶板操作的八位I/O口。
圖1 ?。眨樱陆涌诳ㄏ到y(tǒng)框圖
注:雙箭頭代表數(shù)據(jù)線,單箭頭代表控制線
?。补ぷ髟?/FONT>
1)用戶接口部分
?。帷ⅲ玻常步涌诰褪鞘褂脝纹瑱C的TXD和RXD兩根線構(gòu)成,在用戶使用此接口之前,可以通過計算機上的軟件來設(shè)置接口的工作方式及相應(yīng)的波特率。
?。狻ⅲ桑玻每偩€是由兩根線組成:SCL和SDA,其中SCL是作為數(shù)據(jù)傳輸?shù)臅r鐘線,SDA是作為傳輸數(shù)據(jù)的串行線,在本例中,是通過77E58的兩個P1口來模擬I2C總線時序的,用P1.0和P1.1兩根線分別模擬SDA和SCL。此卡只能作為I2C總線的主機端來使用。
?。?、九位并行數(shù)據(jù)線接口。在本例中,把FIFO的一端的數(shù)據(jù)線開放,留給用戶,可以通過此數(shù)據(jù)線把數(shù)據(jù)傳到FIFO,實現(xiàn)用戶板與USB接口卡的通訊,此種接口適用于要求速度比較快的場合。其中,位還可作為用戶通訊的校驗位來使用,提高通訊的質(zhì)量。
?。?、控制指令數(shù)據(jù)接口,即把單片機的數(shù)據(jù)線對用戶開放,可以直接讀到控制數(shù)據(jù),一般用于傳輸從PC機下達(dá)的指令,便于控制用戶板的工作,如AD采集的場合等。
?。?、對用戶板上的I/O口,是從CPLD中接出的,可以根據(jù)用戶要求,從PC機上傳達(dá)IO控制,通過單片機把各IO狀態(tài)直接反映到CPLD的I/O口上。
以上接口所涉及到的并行總線均使用74LS245實現(xiàn)總線隔離,在使用之前,需要用戶從計算機上發(fā)送選擇指令,確定使用哪種通訊方式,再由單片機來控制各個總線的開關(guān),使得整個系統(tǒng)能夠順暢工作,避免引起總線的競爭。
2)USB傳輸部分
在USB傳輸部分采用接口芯片D12,是一款性價比很高的USB器件,它通常用作微處理器系統(tǒng)中,實現(xiàn)與微處理器進(jìn)行通信的高速通用并行接口。符合通用串行總線USB1.1版規(guī)范,片內(nèi)集成了SIE、320字節(jié)多結(jié)構(gòu)FIFO存儲器收發(fā)器,可與任何外部微處理器實現(xiàn)并行接口,數(shù)據(jù)吞吐量可達(dá)2MB/S,擁有完全自治的直接內(nèi)存存?。模停敛僮?,主端點的雙緩沖配置增加了數(shù)據(jù)吞吐量,能輕松實現(xiàn)實時數(shù)據(jù)傳輸。在批量模式和同步模式下均可實現(xiàn)1MB/S的數(shù)據(jù)傳輸速率,具有良好EMI特性,還可為用戶提供500mA的總線供電能力。
?。常?、CPLD的控制部分
?。茫校蹋某绦蚴遣捎茫郑龋模陶Z言編寫的,主要是配合用戶要求,完成數(shù)據(jù)從FIFO傳輸?shù)剑模保驳模模停凉δ?,能夠?qū)崿F(xiàn)用戶的快速性要求。另外,就是產(chǎn)生對FIFO的讀寫信號以及產(chǎn)生接口卡對用戶板的一些地址片選信號和8bit的I/O控制信號。
?。模保部梢酝ㄟ^中斷與單片機進(jìn)行指令通訊,通過CPLD實現(xiàn)DMA方式的數(shù)據(jù)傳輸,把數(shù)據(jù)從FIFO傳輸D12中。只要把用戶的數(shù)據(jù)傳輸?shù)剑模保驳模疲桑疲侠锩?,?yīng)用程序就可以通過驅(qū)動程序把數(shù)據(jù)讀到計算機的緩存,其具體的傳輸過程是不需要用戶參與的。
3程序設(shè)計
在本例中,軟件包括以下幾個部分:單片機中固件(FIRMWARE)程序、計算機上的驅(qū)動程序和用戶態(tài)的DLL以及調(diào)用DLL的范例程序。
?。保┕碳绦蛟O(shè)計
固件程序是被固化到單片機中,能夠配置D12與計算機實現(xiàn)USB通信的程序。固件程序完成的主要工作可以簡化為:當(dāng)D12從USB總線上檢測到主機啟動的某一請求時,便通過中斷方式將此請求傳遞給單片機,固件程序進(jìn)行解析執(zhí)行相應(yīng)的操作,以完成與主機的對話。另外還執(zhí)行用戶通過計算機對接口卡的工作方式進(jìn)行設(shè)置的操作。
2)設(shè)備驅(qū)動程序設(shè)計
設(shè)備驅(qū)動程序負(fù)責(zé)處理應(yīng)用程序傳下來的I/O請求(如讀寫設(shè)備、傳遞控制參數(shù)等),處理PnP管理器發(fā)送給設(shè)備的PnP請求(如設(shè)備啟動請求IRP_MN_START_DEVICE,以及設(shè)備刪除請求IRP_MN_REMOVE_DEVICE等),這樣就可以使系統(tǒng)可支持設(shè)備的熱插拔和即插即用功能。
開發(fā)USB設(shè)備驅(qū)動程序的常用工具有DDK、WinDriver以及Compuware公司的NumegaDriverstudio等。在本設(shè)計中使用的是DDK,因為DDK不但提供了較為詳細(xì)的幫助文檔說明,而且還提供了較好的參考范例。
USB的驅(qū)動程序和以往直接控制硬件的Win95的VXD(Virtual?。模澹觯椋悖濉。模颍椋觯澹颍?qū)動程序不同,它屬于WDM(Windows?。模椋觯澹颉。停铮洌澹欤╊愋偷?。WDM采用分層驅(qū)動模型,對于USB設(shè)備來說,可分為USB總線驅(qū)動程序和USB設(shè)備驅(qū)動程序??偩€驅(qū)動由操作系統(tǒng)提供,它位于設(shè)備驅(qū)動程序的下面,直接控制硬件操作,而設(shè)備驅(qū)動程序(除了HID類的設(shè)備外)需要開發(fā)者編寫。在設(shè)備驅(qū)動程序中,通過向總線驅(qū)動程序發(fā)送包含URB(USB?。遥澹瘢酰澹螅簟。拢欤铮悖耄┑模桑遥校ǎ桑稀。遥澹瘢酰澹螅簟。校幔悖耄澹簦?,來實現(xiàn)USB設(shè)備信息的發(fā)送和接收。在本例中,通過向總線驅(qū)動程序發(fā)送包含READY_URB和READ_URB兩個URB的IRP_MJ_READ,來實現(xiàn)數(shù)據(jù)的準(zhǔn)備工作及數(shù)據(jù)的傳輸,并且還可以通過這兩個URB向下傳遞多達(dá)16條8bit的控制參數(shù),便于用戶傳遞控制指令。
3)用戶態(tài)軟件的設(shè)計
在用戶態(tài)軟件程序中,采用標(biāo)準(zhǔn)的文件操作方法。用API函數(shù)CREATFILE來創(chuàng)建并打開設(shè)備,READFILE對應(yīng)功能驅(qū)動程序中的IRP_MJ_READ,來實現(xiàn)對設(shè)備的控制讀寫操作請求。在本例中包括兩個部分:動態(tài)鏈接庫和應(yīng)用程序。動鏈接庫負(fù)責(zé)接受應(yīng)用程序的各種操作參數(shù),與內(nèi)核態(tài)的USB功能驅(qū)動程序通信,而應(yīng)用程序負(fù)責(zé)對所讀取數(shù)據(jù)的存儲與處理。
動態(tài)鏈接庫就是那些復(fù)雜的調(diào)用驅(qū)動程序的程序封裝成幾個函數(shù),便于用戶的使用。應(yīng)用程序是使用此接口卡的程序范例,通過調(diào)用動態(tài)鏈接庫的函數(shù),實現(xiàn)對接口卡的控制及對用戶板的數(shù)據(jù)讀取,用戶可以在范例的基礎(chǔ)上,稍加修改就能夠非常方便的控制接口卡與用戶卡的通訊,包括選擇通訊方式,向用戶板傳遞控制參數(shù),就可以實現(xiàn)把數(shù)據(jù)傳到相應(yīng)的內(nèi)存中,然后再對數(shù)據(jù)進(jìn)行處理。
?。?、小結(jié)
此接口卡可以使用戶在沒有掌握復(fù)雜的USB協(xié)議及抽象的驅(qū)動程序設(shè)計的前提下,能夠很方便快速的應(yīng)用USB總線與PC交換數(shù)據(jù),
歡迎轉(zhuǎn)載,信息來自維庫電子市場網(wǎng)(m.58mhw.cn)
上一篇:USB 通信技術(shù)
下一篇:什么是人機接口
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識介紹2025/8/29 16:58:56
- SQL核心知識點總結(jié)2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復(fù)控制的復(fù)合控制策略2025/7/29 16:58:24
- 什么是樹莓派?一文快速了解樹莓派基礎(chǔ)知識2025/6/18 16:30:52









