日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > 利用EPP接口協(xié)議實現(xiàn)高速數(shù)據(jù)通信

          利用EPP接口協(xié)議實現(xiàn)高速數(shù)據(jù)通信

          作者: 時間:2004-12-07 來源:網(wǎng)絡 收藏
          摘要:如何實現(xiàn)PC與單片機系統(tǒng)間的,是測量控制系統(tǒng)中經(jīng)常遇到的難題。本文系統(tǒng)地介紹利用實現(xiàn)的原理,并從硬件、軟件兩方面給出一個應用的設計實例。

          關(guān)鍵詞:單片機系統(tǒng)

          前言

          單片機系統(tǒng)中常常需要具備與PC機通信的功能,便于將單片機中的數(shù)據(jù)傳送到PC機中用于統(tǒng)計分析處理;有時又需要將PC機中的數(shù)據(jù)裝入單片機系統(tǒng)中,對單片機程序進行驗證和調(diào)試。目前常用的通信方式是串行通信,但傳輸速率太低,以9600bps計算,傳輸1MB至少需要10min(分鐘)以上。并行通信克服了串行通信傳輸速率低的缺點。標準并行口SPP(Standard Parallel Port)方式實現(xiàn)了由PC機向外設的單向傳輸,但實現(xiàn)PC機接收外設發(fā)送的數(shù)據(jù)則非常麻煩;而增強型并行口EPP(Enhanced Parallel Port)協(xié)議卻很好地解決了這一問題,能夠?qū)崿F(xiàn)穩(wěn)定的高速數(shù)據(jù)通信。

          一、EPP介紹

          EPP協(xié)議最初是由Intel、Xircom、Zenith三家公司聯(lián)合提出的,于1994年在IEEE1284標準中發(fā)布。EPP協(xié)議有兩個標準:EPP1.7和EPP1.9。與傳統(tǒng)并行口Centronics標準利用軟件實現(xiàn)握手不同,EPP接口協(xié)議通過硬件自動握手,能達到500KB/s~2MB/s的通信速率。

          1.EPP引腳定義

          EPP引腳定義如表1所列。

          表1 EPP接口引腳定義

          引腳號SPP信號EPP信號方 向說 明
          1StrobenWrite輸出指示主機是向外設寫(低電平)還是從外設讀(高電平)
          2~9Data0~7Data07輸入/輸出雙向數(shù)據(jù)總線
          10AckInterrupt輸入下降沿向主機申請中斷
          11BusynWait輸入低電平表示外設準備好傳輸數(shù)據(jù),高電平表示數(shù)傳輸完成
          12PaperOut/EndSpare輸入空余線
          13SelectSpare輸入空余線
          14AutofdnDStrb輸出數(shù)據(jù)選通信號,低電平有效
          15Error/FaultnDStrb輸入空余線
          16InitializeSpare輸出初始化信號,低電平有效
          17Selected PrinternAStrb輸出地址數(shù)據(jù)選通信號,低電平有效
          18~25GroundGroundGND地線

          2.EPP接口時序

          EPP利用硬件自動握手實現(xiàn)主機與外設之間的高速雙向數(shù)據(jù)傳輸,軟件只須對相應端口寄存器進行讀/寫操作。

          (1)EPP寫操作時序如圖1所示。

          CPU實現(xiàn)向外設寫數(shù)據(jù)的操作步驟如下:

          ①程序?qū)PP數(shù)據(jù)寄存器執(zhí)行寫操作;

          ②nWrite置低;

          ③CPU將有效數(shù)據(jù)送到數(shù)據(jù)總線上;

          ④nDStrb(nAStrb)變低(只要nWait為低);

          ⑤主機等待nWait變高,確認數(shù)據(jù)發(fā)送成功;

          ⑥主機等待nWait變高,確認數(shù)據(jù)發(fā)送成功;

          ⑦EPP寫周期結(jié)束。

          (2)EPP讀操作時序如圖2所示。

          CPU實現(xiàn)從外設讀數(shù)據(jù)的操作步驟如下:

          ①程序?qū)ο鄳狤PP端口寄存器執(zhí)行讀操作;

          ②nDStrb(nAStrb)置低(如果nWait為低);

          ③主機等待nWait為高,確認數(shù)據(jù)發(fā)送成功;

          ④主機從并行口引腳讀取數(shù)據(jù);

          ⑤nDStrb(nAStrb)置高;

          ⑥EPP讀操作周期結(jié)束。

          3.EPP端口寄存器

          EPP接口除了保留SPP的3個端口寄存器以外,還新增了5個端口寄存器,如表2所列。

          表2

          地 址端口名稱方 向
          基地址+0SPP數(shù)據(jù)端口
          基地址+1EPP狀態(tài)端口
          基地址+2EPP控制端口
          基地址+3EPP地址端口讀/寫
          基地址+4EPP地址端口讀/寫
          基地址+5EPP數(shù)據(jù)端口讀/寫
          基地口+6未定義(32位傳輸)讀/寫
          基地址+7未定義(32位傳輸)讀/寫

          EPP狀態(tài)端口寄存器

          WAITINTRUSER1USER2USER3TMOUT

          WAIT:Wait狀態(tài)位(1有效);

          INTR:中斷請求狀態(tài)位(1有效);

          USER1~USER3:用戶自定義;

          TMOUT:保留(EPP1.7)超時標志位(EPP1.9)。

          EPP控制端口寄存器。

          DIRIRQENASTRBINITDSTRBWRITE

          DIR:方向位(1輸入,0輸出);

          IRQEN:中斷使能位(1有效);

          ASTRB:地址選通位(0有效);

          INIT:初始化(1有效);

          DSTRB:數(shù)據(jù)選通位(0有效);

          WRITE:讀/寫狀態(tài)位(0:寫,1:讀)。

          讀取接口狀態(tài)和控制接口都只須對相應的端口寄存器進行操作。以初始化為例:

          讀操作初始化:outportb(port+2,0x24);

          //port為SPP數(shù)據(jù)端口地址

          寫操作初始化:outportb(port+2,0x04);

          //port+2為EPP控制端口地址

          4.EPP1.7和EPP1.9

          EPP接口最先有EPP1.7標準定義,由于硬件廠商的原因,EPP現(xiàn)有兩個標準:EPP1.7和EPP1.9,可以在BIOS/外圍設備/并行口(BIOS/Peripheral Setup/Parallel Port Mode)方式中進行設置。兩者有如下不同點:

          (1)EPP狀態(tài)端口寄存器的最低位bit0,在EPP1.9中定義為TMOUT。在EPP操作時序中,如果PC機數(shù)據(jù)(地址)選通信號變低后,且在10μs時間內(nèi),外設未能將nWait置為低,則TMOUT置為1,表示延時。

          (2)EPP1.9標準中,只有當nWait為低時,才能開始一個操作周期;但在EPP1.7中,無論nWait狀態(tài)如何,nAstrb(nDstrb)都會被置低,從而開始一個新的數(shù)據(jù)(地址)操作周期。

          二、EPP接口傳輸數(shù)據(jù)的一個實例

          在某單片機系統(tǒng)中,須要將單片機系統(tǒng)中數(shù)據(jù)存儲器的大量數(shù)據(jù)傳輸?shù)絇C機中進行分析處理。EPP接口(采用EPP1.7標準)硬件電路及軟件流程圖如圖3~圖5所示。

          GAL譯碼電路方程式為/O1=/I1*/I2*/I3*I4*/I5,EPP接口選通地址為2000H。當單片機執(zhí)行如下指令:

          MOV DPTR,#2000H

          MOVX @DPTR,A

          就將寄存器A中的數(shù)據(jù)鎖存到數(shù)據(jù)總線上,便于PC機利用EPP接口進行讀操作。

          C語言例程:

          #define SPPDATA 0x0378 //定義各寄存器地址

          #define SPPSTAT 0x0379

          #define SPPCNTL 0x037A

          #define EPPADDR 0x037B

          #define EPPDATA 0x037C

          #includestdio.h>

          FILE *fp;

          Int data;

          Long i;

          int k;

          fp=fopen(filename,"wb"); //打開要存儲數(shù)據(jù)的文件

          outportb(SPPCNTL,0x24);

          //向控制端口發(fā)00100100代碼,初始化為讀操作模式for(i=0;i524288;i++)

          {

          while(!((inportb(SPPSTAT))0x80))

          //查詢是否發(fā)送完畢

          {}

          data=inportb(EPPDATA); //讀數(shù)據(jù)

          fputc(data,fp); //將數(shù)據(jù)存入文件

          }

          fclose(fp); //關(guān)閉文件

          單片機匯編語言程序為:

          FLAG1 BIT P1.7 ;標志位

          FLAG2 BIT P3.4

          STADD EQU 0000H ;要傳輸數(shù)據(jù)段的起始地址

          NUM EQU FFFFH ;要傳輸數(shù)據(jù)端的字節(jié)個數(shù)

          COMMUN:MOV DPTR,#STADD

          COMM1:MOVX A,@DPTR

          PUSH DPH

          PUSH DPL

          MOV DPTR,#EPP_CE

          MOVX @DPTR,A

          POP DPL

          POP DPH

          SETB FLAG1 ;將P1.7置高

          CLR FLAG2 ;將P3.4置低

          JB FLAG1,$;查詢P1.7為低,即nDStrb為低,表示PC讀操作已完成

          SETB FLAG2 ;將P3.4置高

          SETB FLAG1 ;將P1.7置高

          INC DPTR

          CJNE NUM,COMM1 ;循環(huán)NUM次

          RET

          實際應用該接口電路,能實現(xiàn)1MB/s的傳輸速率,并且性能穩(wěn)定可靠。

          如果應用EPP1.9標準,硬件電路不用變動,軟件中可以省略對nWait進行判斷的環(huán)節(jié),速率能接近2MB/s。

          結(jié)束語

          本文系統(tǒng)介紹了EPP接口的原理,并且給出了一個利用EPP接口實現(xiàn)PC與單片機系統(tǒng)間高速傳輸?shù)膶嵗?。EPP接口協(xié)議解決雙向高速數(shù)據(jù)傳輸?shù)碾y題,在智能測量、自動控制、數(shù)據(jù)傳輸?shù)阮I(lǐng)域必將得到廣泛的應用。



          評論


          相關(guān)推薦

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

          關(guān)閉