Bikky
驱动牛犊
驱动牛犊
  • 注册日期2003-12-01
  • 最后登录2017-02-21
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望11点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1010回复:2

EPP问题,救命啊。。。。

楼主#
更多 发布于:2004-04-12 14:51
小弟最近在调一个EPP并口的驱动,WINDOWS本身是自带并口驱动的,这个都知道,但我的数据采集卡有其它功能,要自写并口驱动,我用0x378基址和IRQ7中断,没问题,能正常收发数据和接收中断.

但下面的问题让我头痛了好长时间:
  1、EPP并口通常情况下我们只用的三个寄存器,分别为状态、控制和数据寄存器,以前我们在TC下用EPP并口时只需往数据寄存器写一字节数据或发一条指令读数据寄存器就能正常收发一字节,其它时序都是由硬件自动产生,则此时控制寄存器我们在软件里没用到,状态寄存器也很少用。我以上说法对吗?请高手指点。
 2、但我现在是在2K系统下,用自写的驱动去产生EPP时序,我发现所有时序都得手动在软件里写相关语句去写控制寄存器才能产生。这样的话收或发一字节就得写好几次控制寄存器再加一次读或写一次数据寄存器,这样的话数据传输速率就慢多了,怎么样才能让硬件自动产生EPP时序呢?
 3、如果在软件里不写控制寄存器而直接像TC里一样读或写数据寄存器的话,用示波器看EPP各口线是没有任何效果的。也就是说直接在2K系统的驱动程序里操作EPP的数据寄存器是不能进行数据传输的。
  
百克
dragon_hn
驱动中牛
驱动中牛
  • 注册日期2002-05-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分297分
  • 威望40点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-13 10:54
EPP(增强并口)跟SPP(打印口)不同.
EPP口需要在CMOS下设置.
EPP口并不止三个寄存器.
另外,不同操作系统下对EPP口的操作会导致不同的结果,大概是因为系统驱动包装了对EPP口的直接操作.例如有些寄存器的有些位是反极性的,而一些操作系统会把它反过来,另一些操作系统则保持原值,即使对IO直接操作也会如此,而且即使同一系统,用DEBUG的\"O\"和\"I\",用TC的output和input,用VC的_outp和_inp出来的结果也会不同.
www.dragon-2008.com 欢迎交流
Bikky
驱动牛犊
驱动牛犊
  • 注册日期2003-12-01
  • 最后登录2017-02-21
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望11点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2004-04-13 14:11
多谢楼上老大指点,但我想弄明白的是,在TC下对EPP并口操作只需对数据寄存器直接操作就行了,最多在批量传输前对控制寄存器进行一次初始化,而在2K系统下的驱动程序里,为何我对EPP口进行数据传输时要每传一个字节就要对控制寄存器多次操作才能软件模拟出EPP时序呢?不是说EPP并口是硬件自动握手的吗?
百克
游客

返回顶部