版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、-. z將串行應(yīng)用移植到USB接口的簡便方法 Microchip Technology Inc. Lucio Di Jasio 時間:2008-04-02來源:電子產(chǎn)品世界 瀏覽評論您是否注意過最新款筆記本電腦的端口. 如果注意過,則就會發(fā)現(xiàn)過去的真實端口沒有了。 事實上,最有可能的是原來串口所在位置現(xiàn)在是幾個USB端口。 USB總線的設(shè)計初衷就是要取代PC機上大多數(shù)(如果不是所有的話)傳統(tǒng)端口。 當然,由于有很多支持USB的單片機和接口器件,因此對于嵌入式設(shè)計人員來說,沒有端口并不會帶來障礙。 只要選擇正確的工具和軟件解決方案,則轉(zhuǎn)移到USB可以是非常簡單的事情。硬件補丁解決方案對那些需要為
2、基于串行端口的老工程提出快速解決方案的設(shè)計工程師來說,開場最有吸引力的一種策略是采用一種補丁系統(tǒng)。 這可通過在嵌入式控制器串行接口與PC機USB連接器之間增加一個專用USB-UART轉(zhuǎn)換器來實現(xiàn)。 此類器件通常配有支持各種操作系統(tǒng)的定制驅(qū)動程序,可以完全仿真一個標準的串行端口。 這種方法需要重新設(shè)計嵌入式應(yīng)用電路板以騰出空間容納新的元件,但它不用改變固件和PC應(yīng)用程序。 撤除了已證明無用的串行端口接收器,而增加的本錢只有幾美元。兩者根本可以抵消,但這樣做卻失去了采用USB所帶來的大局部好處。 事實上,USB能夠支持更快的數(shù)據(jù)傳輸速度,可到達典型串行端口的100倍(12 Mbps與115 kbp
3、s),繼續(xù)使用UART,實際上會成為設(shè)計的主要瓶頸。 此外,由于大局部USB-UART接口器件缺乏靈活性,無法實現(xiàn)靈活的電源管理,而這在許多嵌入式設(shè)計中是一個關(guān)鍵特性。單芯片解決方案從串行端口轉(zhuǎn)移到USB,更好的硬件選擇是采用單芯片解決方案,即選用具有USB接口的單片機,并開發(fā)驅(qū)動程序(圖2)來模仿串行端口。 從硬件角度來看,單芯片解決方案顯得非常有吸引力:與通用型號相比,帶有USB接口的單片機幾乎不需要增加額外本錢。由于撤除了串行端口接收器,電路板上元件的數(shù)量相應(yīng)減少,同時在低本錢USB連接器與新型兼容USB的單片機的D+/D-引腳間建立直接連接。當通用單片機和兼容USB的單片機引腳互相兼容
4、時,電路板重新設(shè)計的本錢和工作量可以減小到最低。此外,不必再為那些可以使用USB總線5V電源的應(yīng)用配備電源適配器,從而可以進一步降低本錢。軟件界面一旦選擇了單芯片解決方案,我們就需要為應(yīng)用開發(fā)新的PC驅(qū)動程序,甚至可能是新的固件。 幸運的是,軟件開發(fā)人員有多種選擇,可通過重復(fù)使用應(yīng)用界面類的方法來減小開發(fā)工作量。構(gòu)建到現(xiàn)在PC操作系統(tǒng)中的最常見并獲得最好支持的USB接口類可能是所謂的人機接口設(shè)備(通常指HID類)。 所有的PC計算機都需要一些像鍵盤或鼠標這樣的人機接口,這些設(shè)備的連接已經(jīng)從串行或者PS/2端口升級進USB。 其驅(qū)動程序已經(jīng)捆綁在Windows、Linu*和MAC OS的每個拷貝
5、中,所以所有操作系統(tǒng)都可以很好地支持HID。因此,對于那些想從不太復(fù)雜的嵌入式設(shè)備中讀寫少量數(shù)據(jù)的設(shè)計工程師而言,HID是一個非常有吸引力的選擇。 不幸的是,應(yīng)用編程接口(API)沒有什么與端口接口類似。 因此,將API移植到現(xiàn)有系統(tǒng)上更成問題,特別當PC上已經(jīng)有一個復(fù)雜的應(yīng)用軟件的時候。其它像打印機類和海量存儲這樣的標準USB接口類都可以利用來實現(xiàn)與嵌入式設(shè)備進展通訊。 然而,它們也面臨同樣的問題,即陌生的接口以及必須開發(fā)新PC應(yīng)用軟件。驅(qū)動程序開發(fā)需要對操作系統(tǒng)底層有深入的了解。 對Windows PC機來說,這意味著要熟悉Windows驅(qū)動程序模型(WDM)。 如果沒有這方面的專業(yè)知識,
6、則開發(fā)一個可根本工作的驅(qū)動程序原型也需要花費數(shù)月時間。幸運的是,大局部最新版本W(wǎng)indows都有的一個接口類可以幫助我們擺脫困境。 微軟公司原先開發(fā)這個名為USB通訊設(shè)備類(CDC)的目的是用來支持調(diào)制解調(diào)器應(yīng)用。 例如,開發(fā)人員可以獲得CDC接口的完整源代碼,以進展面向PIC18F4550系列閃存USB 8位單片機的開發(fā)。Microchip公司的CDC接口提供以下有用特性:固件庫的代碼量相對較小,僅3KB;單芯片解決方案;僅占用大約50B的存儲器空間(不包括緩沖區(qū));最大吞吐量為每秒80 K字節(jié);完全由USB協(xié)議控制數(shù)據(jù)流量(不需要RS-232 *ON/*OFF和硬件流控)。便捷的固件移植在
7、下面的討論中,我們假設(shè)原先的串行端口代碼是用C語言編寫的,并且使用了可集成UART外設(shè)的公共C語言庫。 給定這些條件后,將固件移植到CDC需要進展如下的修改:在主文件頭部,用相應(yīng)的USB聲明代替針對串行端口的*include聲明;在主函數(shù)中,增加對USB-CDC初始化代碼的調(diào)用;在主函數(shù)中,增加對USB后臺任務(wù)的調(diào)用;驗證應(yīng)用程序代碼,以實現(xiàn)與USB后臺任務(wù)的協(xié)同多任務(wù)處理;最后,為器提供USB-CDC專用庫,生成最終的可執(zhí)行代碼,然后對閃存芯片進展編程。實際上,上述這種情況要求應(yīng)用所調(diào)用的任何功能都不能包含阻塞循環(huán)。 也就是說,任何功能都不能占用100%的處理器時間,也不能阻礙USB后臺任務(wù)
8、的執(zhí)行。 反過來,所有USB專用控制函數(shù)、中斷、標志和緩沖機制都由CDC類固件后臺任務(wù)管理,設(shè)計工程師無需關(guān)注其實現(xiàn)細節(jié)。 設(shè)計工程師所看到的只是一個非常類似于公共串行端口庫的小函數(shù)集。表1給出了局部函數(shù)例子。大多數(shù)讀者立即就可認出這些函數(shù)并將其與通用C語言庫中的函數(shù)對應(yīng)起來。 事實上,puts 和 gets 函數(shù)可以直接用CDC類中對應(yīng)的 putsUSBUSART 和 getsUSBUSART 函數(shù)來替代。 通過其它專用實施函數(shù)還可以支持不同的串類型(空完畢與固定長度緩沖)和存儲類型(RAM還是ROM串表)。 下面給出熟悉的HelloWorld程序利用CDC-USB函數(shù)實現(xiàn)的程序。*incl
9、ude systemusbusb.h *include io_cfg.hvoid main(void) InitializeSystem(); while(1) USBTasks(); / USB Tasks HelloWorld(); / send a message to the world /end while/end main HelloWorld(void) If ( mUSBUSARTIsT*TrfReady() / check if T* buffer empty putrsUSBUSART( Hello World!rn) / send a new te*t string /
10、Hello World聯(lián)機現(xiàn)在可以將應(yīng)用連接到PC上,來看看Windows即插即用技術(shù)的響應(yīng)了。 在對所有USB應(yīng)用都適用的初始枚舉階段(在USB 2.0標準的第9章描述)之后,屏幕上將彈出一個對話框,提醒用戶已經(jīng)發(fā)現(xiàn)一個新的硬件設(shè)備,需要為操作系統(tǒng)對其進展配置,以便使用它。 雖然CDC驅(qū)動程序已經(jīng)是操作系統(tǒng)的一局部,但仍然需要更多的信息來幫助將新發(fā)現(xiàn)的設(shè)備與驅(qū)動程序進展綁定。 這會在Windows硬件管理器中創(chuàng)立針對特定端口的屬性頁,以后用戶可以用它卸載或重新配置端口。 在安裝階段,需要一個很小的純文本文件(擴展名為.inf)。需要先用(文本編輯器)準備好,當即插即用向?qū)б髸r提供。.inf
11、舉例如下:; Windows USB CDC ACM Setup File; Copyright (c) 2000 Microsoft Corporation; Copyright (C) 2004 Microchip Technology Inc.Version Signature=$Windows NT$ Class=PortsClassGuid=4D36E978-E325-11CE-BFC1- 08002BE10318 Provider=%MCHP% LayoutFile=layout.infDriverVer=08/17/2001,5.1.2600.0Manufacturer %MFG
12、NAME%=DeviceListDestinationDirs DefaultDestDir=12 SourceDisksFilesSourceDisksNamesDeviceList %DESCRIPTION%=DriverInstall, USBVID _04D8&PID_000A ; ; Windows 2000/*P Sections; DriverInstall.nt CopyFiles=DriverCopyFilesAddReg=DriverInstall.nt.AddReg DriverCopyFilesusbser.sys,0*20DriverInstall.nt.AddReg
13、 HKR,DevLoader,*ntkern HKR,NTMPDriver,usbser.sys HKR,EnumPropPages32,MsPorts.dll, Serial PortPropPageProvider DriverInstall.nt.Services AddService=usbser, 0*00000002, Driver ServiceDriverService DisplayName=%SERVICE% ServiceType=1StartType=3ErrorControl=1ServiceBinary=%12%usbser.sys ; ; String Defin
14、itions; Strings MCHP=Microchip Technology Inc.MFGNAME=Microchip Technology Inc.DESCRIPTION=munications Port SERVICE=USB RS-232 Emulation Driver上面的.inf例子可用作模板進展快速定制。 文件格式非常簡單,大多數(shù)Windows程序員都能快速讀懂。 即使對于不太熟悉的人,也可以很快識別中文件由不同局部組成,每個局部的標題包含在方括號中,在相應(yīng)局部有一或多個由參數(shù)名稱和參數(shù)值組成的正文。 在整個文件中,只能少數(shù)幾個局部需要用戶定制,包括:Device Lis
15、t 局部包括從USB-IF獲得(許可)的公司和應(yīng)用獨有的VID/PID對以及其它信息。Strings局部包含操作系統(tǒng)在即插即用階段在不同的對話框中使用的不同字符串和標識,以及在硬件管理器中標識設(shè)備的字符串和標識。關(guān)于VID和PID盡管設(shè)計師可以任意修改制造商局部和字符串局部的容,但VID和PID代碼的使用是非常嚴肅的。 USB-IF全權(quán)負責為每個希望銷售和生產(chǎn)USB產(chǎn)品的制造商分配一個16位唯一VID代碼。 VID代碼通過許可協(xié)議獲得,并需要支付一次性注冊費用。一旦分配了VID代碼,制造商就可以利用65,536 (16位) PID代碼來唯一地標識其不同型號的產(chǎn)品。 換句話說,VID代碼是終生有
16、效的,因此很容易攤平初始的VID許可和注冊本錢。 當然,對于純粹開發(fā)目的,并不需要完成整個許可過程,因為不同的制造商通常都提供開發(fā)用VID/PID代碼對。 為進一步鼓勵小型企業(yè)、初創(chuàng)企業(yè)、咨詢企業(yè)以及其它非常小批量生產(chǎn)企業(yè),有些單片機生產(chǎn)商還提供獲得單個VID/PID對的選擇(免費)。擁有端口如果一切順利,此時即插即用已經(jīng)完成了安裝過程,一個新的串行設(shè)備就會出現(xiàn)在硬件管理器中。 系統(tǒng)會自動使用下一個可用的端口號為它指定一個名稱(例如,已經(jīng)安裝了2和1,就會出現(xiàn)3)。 用戶可以使用已經(jīng)編寫好用來實際*端口的程序來這個端口(如所有Windows軟件中的超級終端程序)。 連接好后,除了通訊速度提高了,功能上沒有什么區(qū)別。與PC上最快的串行端口相比,通信速度提高了一到兩個數(shù)量級。 Visual Basic或C+程序可通過標準的Windows OpenFi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版木材采購合同與木材質(zhì)量保證協(xié)議4篇
- 2025八年級上學(xué)期期末歷史試卷
- 2025年度二零二五年度智能交通管理系統(tǒng)設(shè)計與實施合同4篇
- 二零二五年度木制品表面處理合同樣本4篇
- 2025版學(xué)校教室租賃合同示范文本2篇
- 2025年度個人毛坯房租賃與租金支付方式合同4篇
- 公共基礎(chǔ)-2020年試驗檢驗師助理《公共基礎(chǔ)》真題
- 寶石礦物學(xué)在寶石加工中的應(yīng)用研究考核試卷
- 2025版土地居間業(yè)務(wù)規(guī)范合同樣本(2025版)6篇
- 2025版圖書銷售代理居間服務(wù)合同模板
- 加強教師隊伍建設(shè)教師領(lǐng)域?qū)W習二十屆三中全會精神專題課
- 2024-2025學(xué)年人教版數(shù)學(xué)七年級上冊期末復(fù)習卷(含答案)
- 2024年決戰(zhàn)行測5000題言語理解與表達(培優(yōu)b卷)
- 四年級數(shù)學(xué)上冊人教版24秋《小學(xué)學(xué)霸單元期末標準卷》考前專項沖刺訓(xùn)練
- 2025年慢性阻塞性肺疾病全球創(chuàng)議GOLD指南修訂解讀課件
- (完整版)減數(shù)分裂課件
- 銀行辦公大樓物業(yè)服務(wù)投標方案投標文件(技術(shù)方案)
- 第01講 直線的方程(九大題型)(練習)
- 飯店管理基礎(chǔ)知識(第三版)中職PPT完整全套教學(xué)課件
- 2023年重慶市中考物理A卷試卷【含答案】
- 【打印版】意大利斜體英文字帖(2022年-2023年)
評論
0/150
提交評論