holyrock
驱动牛犊
驱动牛犊
  • 注册日期2003-12-27
  • 最后登录2005-08-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1392回复:4

【求助】D12的两个简单问题

楼主#
更多 发布于:2004-03-29 13:35
    1.D12Test.sys这个驱动支持哪几种传输类型?Bulk支持吗?
      最快传输速度大概多少?
    2.用easyd12提供的函数读端点1,好像每隔一段时间就会出
      一次错,读不到数据,为什么?
zhangzhuoliang
驱动牛犊
驱动牛犊
  • 注册日期2003-06-23
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望42点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-01 14:19
   多谢,不过还是有点疑问:既然要先使能端点,直接用固件中的WriteEndpoint函数,在这个函数中不是也有0xfa命令吗?

直接使用当然可以!不过WriteEndpoint函数不是还有其他语句嘛,那样不是比较罗嗦嘛!

   为什么非要先从上位机向下位机write个数,然后在rx_ep1中用使能缓冲命令呢?为什么前一种会出错?

    
先写个数是为了产生out中断,这样在out中断里使能缓冲,接下来才能产生in中断,然后在in中断中传数具!因为in中断不是随便能产生的
!!!

   你说在tx_ep1里要有传送代码,是不是指把定时中断里的传送代码搬过来(我原来是定时中断里传送数据的)?


就是把你要写的数据写进相应的端点的缓冲啊!
下面是我的代码你看看吧!!呵呵!我记得我们一起讨论过的吧!
void main_txdone(void)
{  unsigned char i ;
   D12_ReadLastTransactionStatus(5); /* Clear interrupt flag */
  
   for (i=0;i<32;i++)

  
       AD();
       DataBuf[2*i]=Ad_memal;
       DataBuf[2*i+1]=Ad_memah;
      }
    
D12_WriteEndpoint(5, 64, DataBuf);
}


void main_rxdone(void)
{
unsigned char len;
D12_ReadLastTransactionStatus(4); /* Clear interrupt flag */
    len = D12_ReadEndpoint(4, 64, EpBuf); //+ ioCount);
    if(len!=0)
{  
  outportusb(command,5);
              outportusb(command,0xFA);
    }
}


上位机要先写就可连续读了!!
holyrock
驱动牛犊
驱动牛犊
  • 注册日期2003-12-27
  • 最后登录2005-08-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-03-30 15:23
    顶一下
    另外,用easydll提供的函数,一次只能读64字节,这样用它是不是不可能达到1、2百k的速度?
holyrock
驱动牛犊
驱动牛犊
  • 注册日期2003-12-27
  • 最后登录2005-08-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-03-29 22:04
    多谢,不过还是有点疑问:既然要先使能端点,直接用固件中的WriteEndpoint函数,在这个函数中不是也有0xfa命令吗?为什么非要先从上位机向下位机write个数,然后在rx_ep1中用使能缓冲命令呢?为什么前一种会出错?
    你说在tx_ep1里要有传送代码,是不是指把定时中断里的传送代码搬过来(我原来是定时中断里传送数据的)?
zhangzhuoliang
驱动牛犊
驱动牛犊
  • 注册日期2003-06-23
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望42点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-03-29 16:39
1:支持吧!不过我用bulk方式传,没出错!
2:在读的时候你的下位机必须  ""先""   使能端点!如果你要是用tx-ep1传数的话,你要先让这个中断产生(它是在传完数时产生的)所以你在用read函数的时候你可以先write个数,然后下位机产生rx_ep1中断,在这里你让下位机使能in缓冲(0xfa命令)!然后你机在调用read这样保证不会出错!接下来你可以连续的read了,当然你的tx-ep1函数中有传送代码!
游客

返回顶部