- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
USB单晶片应用程式之快易通
USB 單晶片應用程式之快易通
作者: 林錫寬
e-mail: sklin@.tw
(原文刊於 e科技雜誌 2002 年 11月號 )
前言
自從 1996 年康柏、英特爾、微軟和 NEC 共同發表具有頻寬為 1.5Mbps(Mega bits
per second)的 USB1.0 版來,由於具有即插即用 (PnP)的特性,通用串列匯流排
(USB)漸漸取代許多傳統的串並列的傳輸。在 1998 年更新的 USB1.1 版,將頻寬
提升到 12Mbps ,而讓USB 型的滑鼠、鍵盤、印表機、PC 攝影機侵占了整個電
腦週邊市場。最新的 USB2.0 版在 2000 年發表,一舉將頻寬提升到 480Mbps ,
甚至超越號稱火線的 1394 之 393Mbps ,因而數位相機、數位攝影機、數位影碟
機、硬碟和掃描器都可以使用 USB 來及時大量傳輸資料。
長久以來的單晶片微控制器都採用 RS232(115Kbps)或是工業規格的
RS485(10Mbps) 傳輸介面,雖然無絕對必要改採 USB 介面,但是基於即插即用的
方便性,現在許多客戶都僅選擇使用 USB 介面的微控制器產品。本文即針對這
方面用途提供輕鬆易懂可以快速上手的 USB 應用程式編撰指南。為了避開複雜
的驅動程式撰寫,我們可以透過直接使用 WIN 視窗作業系統提供的〔人性化介
面裝置〕(Human Interface Device)驅動程式,來專心製作應用程式即可完成呼叫
使用屬於 HID 模式的各式各樣 USB 設備。市面上 USB 型的鍵盤、滑鼠和搖桿
等都是使用 HID 模式。建議使用者在開發 USB 晶片的韌體程式(firmware)時,採
用 HID 模式,則可以避免掉撰寫視窗作業系統的裝置驅動程式。微軟公司的網
站有免費提供驅動程式發展工具 DDK(Driver Development Kits) ,HID 的應用程
式只用到 DDK 中二個函式庫:setupapp.lib 和 hid.lib ,就可以直接呼叫HID 驅動
程式。雖然驅動程式發展工具有 98 DDK 和 2000 DDK 二種版本,但是無論是在
WIN98 或 WIN2000 或是 WIN XP 作業系統下,都建議使用 2000 DDK 。為求簡
易,讓只懂C 語言的人都能研讀,本文的程式不含視窗建構程式,使用者可以
利用 Visual C++軟體將本文的程式編譯成 DOS 環境的執行檔。當然使用者若精
通 Visual C ,則可以輕易的將此程式改成視窗模式的執行檔。以下將本文的HID
應用程式稱為 HidDevice 。
主程式
HidDevice 應用程式只有四種動作,本文將其分別寫成四個函式如下:
1. 取得裝置:get_device
2. 讀入資料:read_device
3. 寫出資料:write_device
4. 關閉裝置:close_device
這四個函式都會回傳一個真偽值(Boolean value) 。表一中的主程式清楚的展示
HID 應用程式的架構。首先是取得使用者指定的裝置,這由取得裝置函式
get_device 來完成,這個裝置被視作一個物件,WIN 作業系統是以一個操作把
(HANDLE)的數據形態(data types)來代表物件,本文的應用程式用操作把變數
hidDevice 代表所指定的裝置。get_device 函式即要找出指定裝置的操作把,如果
找到則回傳真值(true) ,否則是偽值(false) 。另外也同時取得HID 裝置所設定的讀
入位元組數目(input report byte length)和寫出位元組數目(output report byte
length) ,其將供讀入資料和寫出資料的函式使用。這二個數目在應用程式中分別
以 InputReportLen 和 OutputReportLen 變數來代表,其數據型態為 16 bits 的無正
負號正整數(USHORT) 。取得裝置後才可以讀和寫資料到裝置,因為利用裝置物
件的操作把變數 hidDevice 來指向讀寫的目標物。讀或寫成功,其函式傳回真值,
否則傳回偽值。不使用這個裝置時,一定要用關閉裝置函式將其關閉。如果整個
應用程式執行完畢結束後,不關閉裝置,則視窗作業系統仍將該裝置開啟著,如
此將永遠佔用系統資源﹔反覆執行這個應用程式,作業系統會一再分配資源給同
一裝置,因此有可能因為系統資源用盡而使得系統當機。
文档评论(0)