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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于USB總線通信數(shù)據(jù)采集器的設(shè)計(jì)與實(shí)現(xiàn)

          基于USB總線通信數(shù)據(jù)采集器的設(shè)計(jì)與實(shí)現(xiàn)

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

          AT89C52的控制程序分為初始化、主循環(huán)和中斷服務(wù)3部分。初始化部分完成單片機(jī)和所有外圍電路(包括PDIUSBD12)的初始化;主循環(huán)部分等待來自上位機(jī)的命令或來自終端設(shè)備的數(shù)據(jù);中斷服務(wù)程序完成相應(yīng)的中斷處理功能。下面列出了中斷服務(wù)程序的處理過程:
          usb_isr( )interrupt( )
          {DISABLE
          fn_usb_isr( );
          ENABLE
          }
          void fn_usb_isr( )
          {unsigned int i_st
          bEPPflags.bits.in_isr=1;
          i_st=D12_ReadInterruptRegister( );//讀中斷寄存器
          if(i_st !=0)
          { if(i_stD12_INT_BUSRESET)
          { bus_reset( );//總線復(fù)位處理
          bEPPflags.bits.bus_reset=1;
          }
          if(i_stD12_INT_EOT)
          dma_eot( );//DMA結(jié)束處理
          if(i_st Dl2_INT_SUSPENDCHANGE)
          bEPPflags.bits.suspend=1;
          if(i_st Dl2_INT_ENDPOIN)
          ep0-txdone( );//控制端點(diǎn)0輸入
          if(i_stD12_INT_ENDPOOUT)
          ep0-rxdone( );//控制端點(diǎn)0輸出
          if(i_stD12_INT_ENDPlIN)
          epl_txdone( );//端點(diǎn)1輸入
          if(i_stD12_INT_ENDPlOUT)
          epl_rxdone( );//端點(diǎn)1輸出
          if(i_stDl2_INT_ENDP2IN)
          main_txdone( );//主端點(diǎn)2輸入
          if(i_stD12_INT_ENDP20UT)
          main-rxdone( );//主端點(diǎn)2輸出
          }
          bEPPflags.bits.in_isr=0;
          }
          設(shè)備安裝完后準(zhǔn)備運(yùn)行前,操作人員可利用上位機(jī)管理軟件提供的用戶界面初始化一些系統(tǒng)參數(shù),如總線類型、終端類型等。在執(zhí)行對(duì)終端單元的時(shí),MCU首先接收一個(gè)上位機(jī)客戶服務(wù)軟件下傳的指令幀,經(jīng)過確認(rèn)是協(xié)議識(shí)別指令后,上傳一個(gè)表示就緒的狀態(tài)幀。然后,接收識(shí)別用的數(shù)據(jù)幀,經(jīng)過檢驗(yàn),如果數(shù)據(jù)幀有錯(cuò)就返回相應(yīng)的狀態(tài)幀并等待上位機(jī)重新發(fā)出數(shù)據(jù),如果數(shù)據(jù)正確則先返回狀態(tài)幀,然后開始對(duì)終端單元的識(shí)別與數(shù)據(jù)采集。
          對(duì)一個(gè)固定的終端而言,MCU發(fā)出握手信號(hào),遠(yuǎn)方終端返回相應(yīng)的信息,數(shù)據(jù)經(jīng)RS232/RS485接收,經(jīng)過MCU的協(xié)議解析后得到所需的純數(shù)據(jù),將其暫存入RAM62256中的指定地址;當(dāng)上位機(jī)發(fā)出讀取數(shù)據(jù)的命令后MCU將數(shù)據(jù)經(jīng)PDIUSBD12傳給上位機(jī)。
          4.2 上位機(jī)的程序設(shè)計(jì)
          從上位機(jī)來看,通信為它的一個(gè)USB外設(shè),因此上位機(jī)必須提供USB外設(shè)的驅(qū)動(dòng)程序。上位機(jī)的管理軟件包括客戶服務(wù)程序和USB驅(qū)動(dòng)程序。USB驅(qū)動(dòng)程序(USBD)是駐留在上位機(jī)的為客戶提供通用服務(wù)的軟件實(shí)體,它管理主控制器上的一個(gè)或多個(gè)功能。它通過調(diào)用適當(dāng)?shù)闹骺刂破黩?qū)動(dòng)程序(HCD)將用戶I/O請(qǐng)求包(IRP)中的數(shù)據(jù)轉(zhuǎn)化為設(shè)備端點(diǎn)的數(shù)據(jù),或通過回調(diào)適當(dāng)?shù)腍CD將設(shè)備端點(diǎn)的數(shù)據(jù)轉(zhuǎn)化為客戶IRP中的數(shù)據(jù)。
          客戶服務(wù)程序是用VC++6.0編寫的,主要完成數(shù)據(jù)的分析顯示功能。MCU上傳的數(shù)據(jù)信息經(jīng)過相應(yīng)的校驗(yàn),如有誤,則通知終端重傳;如無誤,則將校驗(yàn)后的信息轉(zhuǎn)存人計(jì)算機(jī)指定的內(nèi)存,并備份到相應(yīng)的文檔,供其他的客戶服務(wù)程序使用。
          USB驅(qū)動(dòng)程序的編寫往往是USB設(shè)備開發(fā)過程中最困難的,通常采用Windows DDK來實(shí)現(xiàn)。目前有許多軟件廠商提供各種各樣的驅(qū)動(dòng)程序生成工具,如Computer ware的Driver Studio,Blue Waters的Driver Wizard等。本設(shè)計(jì)是采用Driver Studio軟件生成的程序框架,添加了適當(dāng)?shù)挠脩舸a,完成了適合于通信的驅(qū)動(dòng)程序的編寫。
          5 通信與傳統(tǒng)數(shù)據(jù)采集方式通信效率的比較
          以采集歐姆龍公司的可編程邏輯控制器(PLC)為例,一次采集30個(gè)通道,每個(gè)通道16個(gè)開關(guān)量(即4個(gè)十六進(jìn)制數(shù)),則有120個(gè)十六進(jìn)制數(shù)需要采集和傳輸,加上通信協(xié)議中的其它位,一幀共有131個(gè)字符,每一個(gè)字符又按串行通信中的一幀11位來發(fā)送,則共有1441位ASCII碼有待傳輸。若波特率設(shè)為9600b/s,則每采集一次需要用時(shí)150ms,在此期間每一幀的接收、效驗(yàn)工作都需CPU的介入。若以傳統(tǒng)的方式進(jìn)行數(shù)據(jù)的采集和通信,那么主機(jī)CPU在這段時(shí)間就被串行通信的事務(wù)占用而不能處理其它工作,這很耽誤時(shí)間。而采用通信數(shù)據(jù)采集器代替主機(jī)來完成這一費(fèi)時(shí)的工作后,數(shù)據(jù)的采集、傳輸以及協(xié)議的解析都不需占用主機(jī)的時(shí)間,解析后的純數(shù)據(jù)經(jīng)過PDIUS-BDl2上傳也僅需很短時(shí)間即可完成(大約為0.12ms,PDIUSBD12在同步模式下的數(shù)據(jù)傳輸率為1Mb/s),通信效率比傳統(tǒng)方式提高了很多倍,這樣就把主機(jī)從通信瓶頸中解放出來,為主機(jī)節(jié)省了大量的時(shí)間去完成其它工作。
          6 結(jié)論
          本文提出的基于的智能通信數(shù)據(jù)采集器具有數(shù)據(jù)采集和通信的效率高,結(jié)構(gòu)簡單,運(yùn)行可靠,使用方便等優(yōu)點(diǎn),在實(shí)際應(yīng)用中取得了良好的效果。它適用于實(shí)時(shí)監(jiān)控、數(shù)據(jù)采集等場(chǎng)合,也可以增強(qiáng)協(xié)議識(shí)別和協(xié)議解析功能,因而在有標(biāo)準(zhǔn)通信協(xié)議和規(guī)范化的數(shù)據(jù)格式而缺少詳細(xì)技術(shù)資料的終端設(shè)備的通信中具有廣泛的使用價(jià)值。
          光電開關(guān)相關(guān)文章:光電開關(guān)原理

          上一頁 1 2 下一頁

          評(píng)論


          相關(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); })();