增強型并行端口EPP編程
1、引言
標準并行端口SPP(Standard Parallet Port)為大家所熟知,但是基于SPP的擴展經常受到一些限制,如傳輸前進行“忙信號”的查詢和傳輸后狀態的握手,導致傳輸速率降低;再則數據線是單向的,由狀態線完成的數據輸入需要進行字節的拼接,因此又降低了數據的傳輸速率。
增強型并行端口協議從根本上改變了這一狀況,它不但與SPP兼容,又能進行雙向的高速數據傳輸。它的握手信號由硬件完成,數據傳輸速率最高可達到ISA總線的速度。
2、SPP簡介
2.1、EPP讀寫周期及信號定義
增強型并行端口協議最初是由Intel、Xircom和Zenith Data System公司發起并制定的,它后以后的IEEE1284標準都極大的改善了并行端口的性能。EPP協議提供了數據寫、數據讀、地址寫、地址讀四種數據傳輸周期。
數據周期用于主機和外設間的數據傳輸,地址周期用于傳送地址、通道、命令和控制信息。表1列出EPP與SPP信號的定義及相互關系。
表1、EPP信號描述
SPP信號EPP信號方向EPP信號描述
nSTROBEnWRITE輸出低有效,表示寫操作。高電平讀周期
nAUTOFEEDnDATASTB輸出低有效,表示數據的讀寫操作正在進行
nSELECTINnADDRSTB輸出低有效,表示地址的讀寫操作正在進行
nINITnRESET輸出低有效,外設復位
nIACKnINTR輸入外設中斷,用于對主機產生一個中斷
BUSYnWAIT輸入握手信號 ,低表示可以開始一個周期(置選通),高表示可以結束一個周期(清選通)
D[8:1]AD[8:1]雙向雙向地址/數據線
PE用戶定義輸入每種外設有不同的使用
SELECT用戶定義輸入每種外設有不同的使用
nERROR用戶定義輸入每種外設有不同的使用
?
附圖是EPP數據寫周期的時序圖。因它的握手信號由硬件完成,整個數據傳輸過程發生在一個ISA I/O周期內,因而使用EPP傳送數據,協調可以獲得500KB/S~2MB/S的傳輸率。
2.2、EPP端口及寄存器
EPP占用并行口基地址+0~+7共8個相鄰的I/O映像地址。基地址+3是EPP的地址口,對它進行I/O操作便產生地址周期;基地址+4是EPP的數據口,對它進行8位I/O讀寫操作,便產生數據讀寫周期。如軟件使用16位或32位的I/O操作,則會用到基地址+4~+7映像地址。對基地址+0~+2的操作與SPP相同,這就保證了與SPP的兼容性。但由于EPP為雙向端口,其寄存器的內容比SPP有所增加(如表2所示)。
口地址端口名BIT0BIT1BIT2BIT3BIT4BIT5BIT6BIT7
基地址+0數據口D0D1D2D3D4D5D6D7
基地址+1狀態口TIEMOUT00nERRSLCTPEnACKnBUSY
基地址+2控制口STROBEAUTOFDnINITSLCIRQEPCD00
基地址+3EPP地址口D0D1D2D3D4D5D6D7
基地址+4EPP數據口0D0D1D2D3D4D5D6D7
基地址+5EPP數據口1D0D1D2D3D4D5D6D7
基地址+6EPP數據口2D0D1D2D3D4D5D6D7
基地址+7EPP數據口3D0D1D2D3D4D5D6D7
新增的位如下:
(1)TIMEOUT位:邏輯“1”表示EPP讀寫操作時發生超時錯誤;邏輯“0”表示無超時發生。
(2)PCD位(Parallel Control Direction并行口方向控制):在雙向傳輸種,PCD位為“0”時進行寫操作;為“1”時進行讀操作,8位數據線處于讀狀態。
2.3、EPP1.9和EPP1.7
EPP1.7是指Xircom 1.7版的提案,Intel在最初的82360 I/O控制器中使用這一協議,而那時IEEE1284標準還沒建立起來。EPP1.7與IEEE1284標準所規定的EPP1.9的區別在于,EPP1.7在讀寫周期開始時,nDATASTROBE或nADDRSTROBE置位時不考慮nWAIT信號的狀態。這意味著外設不能通過清nWAIT來推遲一個EPP周期的開始。因而服從1284標準的外設可以在EPP1.7的主機上工作,而EPP1.7的外設不能在服從1284 標準的主機上工作。
EPP控制芯片中的看門狗時鐘會防止系統鎖死。一般來講,EPP1.9在讀寫周期開始10us后,如果nWAIT仍沒有響應,則發生TIMEOUT錯誤,狀態寄存器的第0位TIMEOUT為“1”,EPP周期終止;而EPP1.7則是在EPP讀寫周期開始10us后仍未結束時,置TIMEOUT為“1”。
3、EPP編程方法
3.1、EPP模式的設置與基地址的選擇
由于EPP控制芯片的生產廠家不同,具體的編程方式也有所不同,因而EPP協議對該模式的設置和檢測沒有統一的規定。比較實用的設置方式是在系統的CMOS中選擇含有EPP模式的選項,再選擇EPP協議的類型EPP1.7或EPP1.9,由系統完成對EPP芯片的設置。
并行端口的地址也可在CMOS中設置,如果操作系統為Windows 9x,可以在其中“控制面板”的“系統”窗口中設置。值得注意的是,基地址一般使用378H或278H,而不使用3BCH。因為EPP要求8個相鄰的I/O端口,而3C0H可能為VGA設備所占用。
3.2、傳輸方向控制
并行端口的8位數據線在EPP模式下為雙向數據線,數據傳輸方向由控制寄存器(基地址+2)的第5位控制。該位置“1” 時,禁止數據輸出,可以從外部數據線上讀取信號。改位置“0”時,可以執行EPP的寫操作,如地址寫或數據寫操作。
3.3、數據、地址的讀寫操作
EPP模式設置后,數據傳輸非常簡單,只需簡單的端口讀寫即可實現,其C語言指令如下:
寫一個字節的數據:outportb(base_addr+4,data)
寫一個字節的地址:outportb(base_addr+3,value)
讀一個字節的數據:data=inportb(base_addr+4)
讀一個字節的地址:value=inportb(base_addr+3)
- 第 1 頁:增強型并行端口EPP編程
- 第 2 頁:狀態檢查及TIMEOUT位清除
本文導航
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%
相關閱讀:
- [電子說] PLC編程軟件離開了硬件,能模擬應用嗎? 2023-10-24
- [電子說] DFRobot志愿者走進寧夏中衛支教活動帶來趣味編程體驗 2023-10-24
- [電子說] STM32速成筆記(1)概述 2023-10-23
- [編程語言及工具] Rust語言為什么這么卷? 2023-10-23
- [工業控制] PLC初學者怎么選擇西門子還是三菱? 2023-10-23
- [工業控制] 西門子、三菱PLC編程指令大全收藏 2023-10-23
- [電子說] 為什么不能直接使用從PLC讀取到的模擬量信號? 2023-10-23
- [嵌入式技術] C編程中指針的語法和工作原理 2023-10-21
( 發表人:小蘭 )