AVR軟USB接口在數(shù)據(jù)采集系統(tǒng)中應(yīng)用_第1頁
AVR軟USB接口在數(shù)據(jù)采集系統(tǒng)中應(yīng)用_第2頁
AVR軟USB接口在數(shù)據(jù)采集系統(tǒng)中應(yīng)用_第3頁
AVR軟USB接口在數(shù)據(jù)采集系統(tǒng)中應(yīng)用_第4頁
AVR軟USB接口在數(shù)據(jù)采集系統(tǒng)中應(yīng)用_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、avr軟usb接口在數(shù)據(jù)采集系統(tǒng)中應(yīng)用【摘要】利用avr單片機(jī)atmega8軟usb虛擬rs232接口技術(shù),通過單 片機(jī)內(nèi)置a/d轉(zhuǎn)換器對模擬量數(shù)據(jù)采集,取代以rs232標(biāo)準(zhǔn)接口模擬量數(shù)據(jù)采 集器。利用現(xiàn)有軟件資源,實(shí)現(xiàn)usb軟接口多點(diǎn)模擬量數(shù)據(jù)采集功能。碩件電 路簡單、性能穩(wěn)定可靠。解決了傳統(tǒng)的rs232接口數(shù)據(jù)采集器諸多問題。在設(shè) 計(jì)avr軟usb接口 |古|件(atmega8單片機(jī)程序)時(shí),usb接口參數(shù)配置按usb-isp (同樣是avr軟usb虛擬rs232接口)卜載線設(shè)置;并在pc機(jī)系統(tǒng)中安裝其 虛擬串驅(qū)動程序。能支持pc機(jī)win7和xp等操作系統(tǒng)。【關(guān)鍵詞】usb;接口; a/d

2、轉(zhuǎn)換;數(shù)據(jù)采集1 引言在電力生產(chǎn)和電氣測試工作中經(jīng)常需要用便攜式pc機(jī)通過接口采集和處理 數(shù)據(jù)。常用的帶rs232串口的數(shù)據(jù)采集器,不允許帶電(熱)拔插,使用很不 方便。而且現(xiàn)在大部分的pc機(jī)不帶rs232接口,尤其是便攜式機(jī)。取而代之的 是usb接口。目前avr單片機(jī)usb軟接口技術(shù)應(yīng)用的很普遍,最旱是atmel 公司在avr309 software universal serial bus一文中,詳細(xì)介紹了使用avr 單片機(jī)的普通io 口來實(shí)現(xiàn)usb接口功能;同時(shí)介紹了 atmegas程序(固件) 的編程方法,并提供全部匯編程序源代碼。在源碼的基礎(chǔ)上,筆者通過參閱和分 析不同作者各種版本的

3、usb軟接口|占i件(原程序)進(jìn)行優(yōu)化組合,更改和刪除 一部份程序后,性能有很大的提高。cpu占用率比源碼程序低得多。avr單片 機(jī)atmegas具備avr高檔單片機(jī)性能和特點(diǎn),而價(jià)格僅與低檔單片機(jī)相當(dāng)。其 內(nèi)置多路a/d轉(zhuǎn)換器滿足模擬數(shù)據(jù)采集需要。2. atmega8單片機(jī)atmega8是atmel公司avr系列單片機(jī)。采用低功耗cmos工藝生產(chǎn)的 基于avr risc結(jié)構(gòu)的8位單片機(jī),大多數(shù)指令執(zhí)行時(shí)間為單個(gè)周期。內(nèi)有10 位精度的逐次逼近型adco adc與一個(gè)8通道的模擬多路復(fù)用器連接,能對來 自端口 c的8路單端輸入電壓進(jìn)行采樣。單端電壓輸入以0v (gnd)為基準(zhǔn)。 adc包括一個(gè)

4、采樣保持電路,以確保在轉(zhuǎn)換過程中輸入到adc的電壓保持恒定。 adc ftl avcc引腳單獨(dú)提供電源。avcc與vcc之間的偏差不能超過±0.3v。 器件之內(nèi)有標(biāo)稱值為2.56v和avcc基準(zhǔn)電壓?;鶞?zhǔn)電壓可以通過在aref引 腳上加一個(gè)電容進(jìn)行解耦,以更好地抑制噪聲。avr單片機(jī)的系統(tǒng)內(nèi)可編程特 性,無需購買昂貴的仿真器和編程器也可進(jìn)行單片機(jī)嵌入式系統(tǒng)的設(shè)計(jì)和開發(fā); 同時(shí)也為單片機(jī)的初學(xué)者提供了非常方便和簡捷的學(xué)習(xí)開發(fā)環(huán)境。而且在省電性 能、穩(wěn)定性、抗干擾性以及靈活性方面考慮得更加周全和完善。atmegas單片 機(jī)與其它單片機(jī)比較而言,簡便易用、費(fèi)用低,相對進(jìn)入avr系列單片機(jī)開

5、發(fā) 的門檻也低,軟件資源豐富,程序容易開發(fā)。由于atmegas單片機(jī)是常用芯片, 本文對其特性、內(nèi)部結(jié)構(gòu)、引腳說明等不做介紹。3. 硬件電路基于atmega8的usb軟接口數(shù)據(jù)采集碩件電路非常簡單。以atmega8單 片機(jī)為核心,加上少量的外部元件構(gòu)成(如圖1所示)。圖1 usb軟接i i數(shù)據(jù)采集電路圖圖1中usb數(shù)據(jù)線d上的上拉電阻r3用于主機(jī)識別低速usb設(shè)備(usb 規(guī)范屮定義)o 12mhz晶體和兩個(gè)20p的電容組成單-片機(jī)運(yùn)行所必須的時(shí)鐘(usb 一個(gè)數(shù)據(jù)位有8個(gè)時(shí)鐘周期)。d+連接到pd2,同時(shí)也是into引腳。d連接到pd3o電阻rl、r2起到限 流和保護(hù)作用,防止在意外情況下?lián)p

6、壞計(jì)算機(jī)的usb端口或單片機(jī)的端口。單 片機(jī)所需的電源vcc由usb 口輸出5v電源直接供電。因?yàn)樵趗sb規(guī)范屮規(guī)定 數(shù)據(jù)線d+和d上的電平范圍是3.0v至3.6v, d1和d2是3.6v穩(wěn)壓二極管, 用于限制數(shù)據(jù)線上的電平。圖中l(wèi)ed1和r4為電源指示電路。ledal-leda6. ral-ra6為a/d傳換通道指示電路。li、c3、c4按atmega8產(chǎn)品說明手冊a/d 轉(zhuǎn)換精度要求設(shè)置。rilri6、cil-ci6為模擬信號采樣輸入設(shè)置,其電路和參數(shù) 根據(jù)不同輸入要求而改變。圖屮j2是模擬信號采樣輸入端,可接入單端0-2.56v. 0-5v輸入模擬信號。測量交流電參數(shù)需要對交流屯信號處理

7、后輸入;如要測量 差動模擬信號需要改變輸入采樣電路。并將單片機(jī)atmegas改用atmegal6, atmegal6的a/d轉(zhuǎn)換可單端輸入也可差分輸入;述冇2路可選增益為10倍與 200倍的差分輸入通道;就是多了兒個(gè)引腳,電路圖有所變化;單片機(jī)軟件可兼 容和移植,并增加幾條有關(guān)a/d轉(zhuǎn)換差動輸入和數(shù)據(jù)處理的指令。如需要請參 閱atmegal6產(chǎn)品說明手冊(atmel公司網(wǎng)站可下載)。4. atmega8單片機(jī)程序(固件)木程序基于單片機(jī)atmegas以純軟件完成usb協(xié)議接收、發(fā)送和解碼,以 實(shí)現(xiàn)usb接口數(shù)據(jù)通信功能;通過指令操作單片機(jī)內(nèi)置a/d轉(zhuǎn)換實(shí)現(xiàn)模擬量數(shù) 據(jù)采集功能。usb協(xié)議定義低

8、速usb設(shè)備通信速率是1.5m位/秒。如單片機(jī)使 用12mhz的時(shí)鐘頻率,主頻是1.5mhz的8倍。也就是說,單片機(jī)每8個(gè)周期 就要精確完成一個(gè)(對普通10端口)數(shù)據(jù)位的采集或發(fā)送。這種情況對單片機(jī)的時(shí)序要求嚴(yán)格,為此單片機(jī)的軟件核心部分代碼必須由 匯編語言編寫。atmegas芯片是atmel (愛特梅爾)公司的avr系列單片機(jī)。 atmel公司網(wǎng)站捉供avr studio集成環(huán)境(ide)開發(fā)軟件免費(fèi)下載。安裝后 直接支持匯編語言。本固件程序以此開發(fā)軟件匯編編譯并燒寫(燒寫用usbisp 下載線)。程序以模塊化結(jié)構(gòu)編寫,為了各模塊相互運(yùn)行協(xié)調(diào)和高效,usb接i做如 下設(shè)置約定。狀態(tài)代碼二1:

9、表示收到控制端口 setup令牌包(屮斷內(nèi)收到令牌包后設(shè)置)狀態(tài)代碼=2:表示收到控制端口 in包(屮斷內(nèi)收到令牌包后設(shè)置)狀態(tài)代 碼=3:表示收到控制端口 out包(中斷內(nèi)收到令牌包后設(shè)置)狀態(tài)代碼二5:表示收到數(shù)據(jù)端口 out包(中斷內(nèi)收到令牌包后設(shè)置)狀態(tài)代碼=6:表示收更改地址(主循環(huán)內(nèi)設(shè)置)操作標(biāo)志二2:表示收到控制端口 setup包數(shù)據(jù)(屮斷內(nèi)收到數(shù)據(jù)包后設(shè)置)操作標(biāo)志=3:表示發(fā)送完控制端口 in數(shù)據(jù)包(中斷內(nèi)發(fā)送完in數(shù)據(jù)包后 設(shè)置)操作標(biāo)志二4:表示準(zhǔn)備好控制端口 in數(shù)據(jù)包(主循環(huán)內(nèi)設(shè)置)端i i號=0:控制端口端口號=1:數(shù)據(jù)in端口端口號二2:數(shù)據(jù)out端口端口號二3:

10、串口狀態(tài)in端口(usb虛擬rs232接口,cdc類規(guī)范要求)4主程序程序從系統(tǒng)復(fù)位開始初始化系統(tǒng)(設(shè)置堆棧地址、存儲器及寄存器初始化、 a/d傳換器初始化)和設(shè)置軟usb接口初始值后,進(jìn)入主程序不斷檢測usb復(fù) 位信號(兩條數(shù)據(jù)線保持10-20ms低電平)。如果出現(xiàn)復(fù)位信號就重新進(jìn)行軟usb 接口初始化設(shè)置;無usb復(fù)位信號就不斷檢查usb接口狀態(tài)代碼和操作標(biāo)志, 并調(diào)用相應(yīng)的程序處理。之后是對a/d轉(zhuǎn)換器操作和數(shù)據(jù)加工及數(shù)據(jù)傳送處理。 主程序是閉合循環(huán)體,主程序流程如圖2所示。圖2主程序流程圖主程序在循環(huán)運(yùn)行中主要操作如下:當(dāng)出現(xiàn)usb接口操作標(biāo)志=2,表示收到usb接口 setup數(shù)據(jù)包

11、,是usb 設(shè)備描述符請求。程序檢查請求類型:如是usb標(biāo)準(zhǔn)請求,準(zhǔn)備usb設(shè)備請求參數(shù)配置枚舉 數(shù)據(jù)回答(有關(guān)回答參數(shù)配置數(shù)據(jù)組成和結(jié)構(gòu)按usb協(xié)議規(guī)范耍求,請參閱 usb2.0規(guī)范)。如是設(shè)備商請求,準(zhǔn)備冇關(guān)cdc類參數(shù)配置請求內(nèi)容回答(usb 虛擬rs232接口,請參閱usb通信設(shè)備類規(guī)范)。然后設(shè)置操作標(biāo)志=4,表示 準(zhǔn)備好控制端口 in回應(yīng)包。再返冋主程序循環(huán)體。當(dāng)出現(xiàn)usb操作標(biāo)志=3,表示耍繼續(xù)準(zhǔn)備上次未準(zhǔn)備完的控制端口 in數(shù)據(jù) 冋應(yīng)包。然后設(shè)置操作標(biāo)志=4,表示準(zhǔn)備好控制端口 in冋應(yīng)包。再返冋主程序 循環(huán)體。主程序通過讀取usb接i i數(shù)據(jù)端i i的緩沖區(qū)數(shù)據(jù)(在中斷程序中

12、接收的數(shù) 據(jù)端口包out數(shù)據(jù))進(jìn)行分析,按主機(jī)a/d數(shù)據(jù)采集軟件接口通信|辦議(命令 格式)規(guī)定,執(zhí)行相應(yīng)的a/d操作指令。如選擇a/d通道和選擇基準(zhǔn)電壓等操 作。相對應(yīng)的啟動a/d轉(zhuǎn)換、檢查a/d轉(zhuǎn)換是否完成、讀取a/d轉(zhuǎn)換數(shù)據(jù)等操 作指令配合執(zhí)行。主程序完成a/d數(shù)據(jù)采集處理后按主機(jī)軟件數(shù)據(jù)通信協(xié)議格式組成數(shù)據(jù)包 后,再按usb規(guī)范(有效載荷)數(shù)據(jù)包最前一個(gè)字節(jié)是數(shù)據(jù)包標(biāo)識碼,接著是 1到8字節(jié)數(shù)據(jù)(口前軟usb最多只能8字節(jié)數(shù)據(jù)),最后增加兩字節(jié)的crc 校驗(yàn)碼(crc校驗(yàn)碼用查表法獲取,減少占用cpu時(shí)間)。此數(shù)據(jù)包不含nrzi 編碼和填充位的內(nèi)容(nrzi編碼和填充位在中斷程序發(fā)送數(shù)

13、據(jù)位時(shí)同步完成), 是4到11整字節(jié)的數(shù)據(jù)包。裝入usb數(shù)據(jù)端點(diǎn)in數(shù)據(jù)包緩沖區(qū),由屮斷程序 發(fā)送到主機(jī)。4.2中斷(into)程序本程序(固件)設(shè)置1個(gè)(into)屮斷源,屮斷程序是固件的主要部分。 程序功能是usb接口數(shù)據(jù)接收和發(fā)送。程序處理流程如圖3所示。圖3中斷程序處理流程圖程序首先由usb總線從空閑態(tài)轉(zhuǎn)到k態(tài)時(shí),usb主機(jī)開始發(fā)送同步字節(jié), into引腳電平上升沿觸發(fā)外部中斷0 (into), cpu進(jìn)入中斷程序,檢查并等待 同步字節(jié)(nrzi碼)結(jié)束信號,開始接收數(shù)據(jù)位。在接收過程屮對nrzi編碼 進(jìn)行還原和移去填充位(在8個(gè)周期內(nèi)完成nrzi數(shù)據(jù)流位解碼和查找填充位并 移去)后送

14、緩沖區(qū)保存;同時(shí)檢測包eop結(jié)束信號單端零(seo)o接收完成一 個(gè)數(shù)據(jù)包(不含同步字節(jié)),程序?qū)?shù)據(jù)包長度少于3字節(jié),丟棄,退出屮斷; 2度大于3字節(jié)的以收到(有效載荷)數(shù)據(jù)包處理。長度等于3字節(jié)的可能是令 牌包(第1字節(jié)令牌包類型、第2字節(jié)低7位是usb地址、第2字節(jié)最高1位 和第3字節(jié)低3位是端口號、第3字節(jié)高5位是令牌包c(diǎn)rc校驗(yàn)碼);檢查地址 確認(rèn)是木設(shè)備后,分析令牌包類型。1)令牌包處理:第1字節(jié)=0x2d,是setup令牌包,設(shè)狀態(tài)代碼=1 (表示接下收到數(shù)據(jù)包 按setup數(shù)據(jù)包處理),退出中斷。笫1字節(jié)=0xel,是out令牌包,檢查端口號。端口號=0是控制端口 out令牌包,設(shè)置狀態(tài)代碼=3 (表示接下收到數(shù)據(jù)包 按控制端口 out數(shù)據(jù)包處理),退出屮斷。端口號不等0,是數(shù)據(jù)端口 out令牌包。設(shè)置狀態(tài)代碼=5 (表示接下收到 數(shù)據(jù)包按數(shù)據(jù)端口數(shù)據(jù)包處理,也就是前介紹的主機(jī)a/d數(shù)據(jù)采集命令數(shù)據(jù)), 退出中斷。笫1字節(jié)=0x69,是in令牌包,檢查端口號。端口號二0,是控制端口 in令牌包,檢查操作標(biāo)志。如操作標(biāo)志不等4,表示未準(zhǔn)備好控制端口 in數(shù)據(jù)包,發(fā)送nak,退出屮 斷。如操作標(biāo)志=4,表示已準(zhǔn)備好控制端口 in數(shù)據(jù)包,發(fā)送控制端口 in數(shù)據(jù) 包。檢查狀態(tài)代碼是否等于地址變動代碼,是轉(zhuǎn)改變usb地址處理后,中斷返 回。usb地

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論