阅读:1392回复:4
【求助】D12的两个简单问题
1.D12Test.sys这个驱动支持哪几种传输类型?Bulk支持吗?
最快传输速度大概多少? 2.用easyd12提供的函数读端点1,好像每隔一段时间就会出 一次错,读不到数据,为什么? |
|
沙发#
发布于: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); } } 上位机要先写就可连续读了!! |
|
板凳#
发布于:2004-03-30 15:23
顶一下
另外,用easydll提供的函数,一次只能读64字节,这样用它是不是不可能达到1、2百k的速度? |
|
地板#
发布于:2004-03-29 22:04
多谢,不过还是有点疑问:既然要先使能端点,直接用固件中的WriteEndpoint函数,在这个函数中不是也有0xfa命令吗?为什么非要先从上位机向下位机write个数,然后在rx_ep1中用使能缓冲命令呢?为什么前一种会出错?
你说在tx_ep1里要有传送代码,是不是指把定时中断里的传送代码搬过来(我原来是定时中断里传送数据的)? |
|
地下室#
发布于:2004-03-29 16:39
1:支持吧!不过我用bulk方式传,没出错!
2:在读的时候你的下位机必须 ""先"" 使能端点!如果你要是用tx-ep1传数的话,你要先让这个中断产生(它是在传完数时产生的)所以你在用read函数的时候你可以先write个数,然后下位机产生rx_ep1中断,在这里你让下位机使能in缓冲(0xfa命令)!然后你机在调用read这样保证不会出错!接下来你可以连续的read了,当然你的tx-ep1函数中有传送代码! |
|