<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計(jì)應(yīng)用 > 基于USB接口設(shè)備的固件程序設(shè)計(jì)

          基于USB接口設(shè)備的固件程序設(shè)計(jì)

          作者: 時(shí)間:2009-12-29 來源:網(wǎng)絡(luò) 收藏

          主程序和中斷服務(wù)程序(ISR)之間任務(wù)分配是,ISR從D12收集數(shù)據(jù),主程序?qū)⑻幚磉@些數(shù)據(jù)。ISR只在它收集了足夠的數(shù)據(jù)才通知主程序準(zhǔn)備處理,這樣會減少不必要的主程序服務(wù)時(shí)間,也簡化了主程序。
          總線重置和空閑在ISR里面不需要特殊的處理。ISR要么設(shè)置總線重置標(biāo)志,要么在EPPFLAG里暫停這一位并退出。
          控制型傳輸總是以setup階段開始的,接著是數(shù)據(jù)階段。然后以狀態(tài)階段結(jié)束。

          本文引用地址:http://www.ex-cimer.com/article/202578.htm

          下面以處理Control OUT和Control IN這兩個(gè)最復(fù)雜最重要的中斷子程序?yàn)槔?,說明編寫中斷服務(wù)程序的一些問題。
          Control OUT主要是主機(jī)用來傳遞控制請求的,也可用于傳輸數(shù)據(jù),進(jìn)入服務(wù)程序后首先要發(fā)送控制字Read Last Transaction Status(40H)給PDID12,讀取管道狀態(tài),根據(jù)讀取的狀態(tài)判斷是因?yàn)橛袛?shù)據(jù)包還是有SETUP包的到來而中斷。當(dāng)SETUP包被設(shè)備的D12接收后,設(shè)備將會向MCU產(chǎn)生中斷。微控制器將通過讀取D12中斷寄存器的內(nèi)容判斷封包是送到Control端點(diǎn)還是Genric端點(diǎn)而進(jìn)行處理。如果封包是送到Control端點(diǎn),MCU將會進(jìn)一步通過讀D12的“Read Last Transaction Status Register”判斷數(shù)據(jù)是不是SETUP 封包。對于獲取描述符設(shè)備請求,第一個(gè)封包必須是SETUP封包。
          之后,MCU需要讀出SETUP封包的內(nèi)容通過選擇Control Out端點(diǎn)來判斷這個(gè)端點(diǎn)是滿的還是空的。如果控制端點(diǎn)是滿的,MCU就從緩沖區(qū)中讀出它的內(nèi)容并將它存在存儲器里。然后,它將從存儲器里去驗(yàn)證主機(jī)設(shè)備請求是否合法。如果是合法請求,MCU必須送“Acknowledge Setup command”到Control Out端點(diǎn)使能接收下一個(gè)封包。下一步,MCU需要確定控制傳輸是控制讀還是控制寫。這可以通過從SETUP 封包里讀bmRequestType的8個(gè)字節(jié)來完成??刂苽鬏斒强刂谱x,設(shè)備需要在下一個(gè)數(shù)據(jù)時(shí)相回送數(shù)據(jù)包給主機(jī)。MCU需要建立一個(gè)標(biāo)志,表明設(shè)備現(xiàn)在正處于傳送模式。應(yīng)主機(jī)的要求準(zhǔn)備送數(shù)據(jù)。
          Control IN主要是用來向主機(jī)傳送數(shù)據(jù)的,進(jìn)入服務(wù)子程序后,首先要通過讀Read Last Transaction Status(40H)來清除Control-In interrupt Bit,在確認(rèn)D12是處于傳送模式下后,MCU將數(shù)據(jù)包送往主機(jī)。但是,由于D12只有16字節(jié)的FIFO,所以MCU必須控制好傳送的總量,如果要求的長度大于16字節(jié)的話。MCU必須檢查當(dāng)前和剩下的要送往主機(jī)的數(shù)據(jù),如果剩下的字節(jié)大于16字節(jié)的話,MCU將先送頭16字節(jié)。在下一個(gè)Control-IN令牌包到來的時(shí)候,MCU將先判斷剩下的字節(jié)是否為0,如果是,MCU將發(fā)一個(gè)空包給主機(jī),通知它數(shù)據(jù)已經(jīng)傳送完畢。

          結(jié)束語:

          功能強(qiáng)大的USB規(guī)格已經(jīng)成為PC的眾多標(biāo)準(zhǔn)之一,鉆研計(jì)算機(jī)科技的種種發(fā)展,都離不開USB的相關(guān)知識。本文創(chuàng)新點(diǎn):使用USB通信方面的具體協(xié)議,用單片機(jī)匯編語言編程,利用單片機(jī)的指令系統(tǒng)去實(shí)現(xiàn)USB設(shè)備與PC主機(jī)的具體通信,設(shè)計(jì)出適合用戶需求的USB設(shè)備。


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();