wildluo
驱动牛犊
驱动牛犊
  • 注册日期2003-07-10
  • 最后登录2003-10-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1847回复:7

请问D12的BULK READ传输

楼主#
更多 发布于:2003-10-07 10:13
我用DS向导生成的一个驱动程序。
BULK WRITE基本正常,
PC往设备写数据时,D12产生main_rxdone中断,在该中断完成数据接收工作。
但bulk read不能工作。
按照我的理解,PC调用读设备命令时,D12应该产生main_txdone型中断,然后我在该中断程序中往D12的缓冲区中填入数据。不知理解是否有误。
我现在的情况是,一进行读设备,要么是死亡蓝屏,要么读到0字字。
请各位大侠指教。
hhddy
驱动牛犊
驱动牛犊
  • 注册日期2003-09-13
  • 最后登录2006-12-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-10-07 16:09
我的问题和你差不多,如果你解决了,麻烦通知一声。谢谢。
wildluo
驱动牛犊
驱动牛犊
  • 注册日期2003-07-10
  • 最后登录2003-10-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-10-07 18:19
那我问一下关于bulk write 的问题。
我在应用程序中通过BULK方式往设备写几个字节的数据。
设备会产生N次main_rxdone中断,每次只能读到一个字节。
为何会这样
clevor
驱动牛犊
驱动牛犊
  • 注册日期2003-06-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分115分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-10-08 08:49
这样试试。
在WINDOWS直接读,D12里直接写。我感觉D12只会在完成发送后才能产生main_txdone型中断。你理解的不用传送数据,只要上位机开始读就先有一个中断(可能)不对,我的程序是直接读写的,我也想把它改成你说的样子。
clevor
驱动牛犊
驱动牛犊
  • 注册日期2003-06-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分115分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-10-08 08:52
后一个问题,你用sniffusb 0.13看看就知道了,这样子猜不到是怎么回事。
wildluo
驱动牛犊
驱动牛犊
  • 注册日期2003-07-10
  • 最后登录2003-10-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-10-08 12:13
我在固件程序的主循环中不停地往输出端点(我用的是端点1)写数据并读端点状态。
temp = D12_WriteEndpoint(3, outbuffer, 16);
printf(\"write to ep3 %d bytes.\\n\",temp);
temp= D12_ReadEndpointStatus(3);
printf(\"ep3 status is: %x\\n\",tem
每次写完,端点状态都是0X20(缓冲0满)
在PC端的应用程序中读却读不到任何数据。
下面是两次读时用BUSHOUND看到的数据
10.1  USTS   0c 00 00 c0  buffer overrun    4.0sc         2.1.0        
  10    URB    48 00 09 00  BULK/INT XFER      36us         2.2.0        
               0c 00 00 c0                                  2.2.4        
  10.1  LEN    03 00 00 00  3                 2.4sc         3.1.0        
  10.1  DI     cd cd cd     ...                31us         3.2.0        
  10.1  USTS   30 00 00 c0  endpoint halted     5us         3.3.0        
  10    URB    48 00 09 00  BULK/INT XFER       6us         3.4.0        
               30 00 00 c0                                  3.4.4        

第一次出现buffer overrun,这是什么意思。
第二次则出现endpoint halted.
我在固件中读端点的状态为0x20(缓冲区满),停止位为0,表明该端点没有停止呀。


[编辑 -  10/8/03 by  wildluo]

[编辑 -  10/9/03 by  wildluo]
wildluo
驱动牛犊
驱动牛犊
  • 注册日期2003-07-10
  • 最后登录2003-10-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-10-09 14:20
请各位高手不吝赐教。
急死了。
wildluo
驱动牛犊
驱动牛犊
  • 注册日期2003-07-10
  • 最后登录2003-10-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-10-10 16:13
帮我确定一下问题所在也行呀。
是HOST端驱动的事还是DEVICE端的事?
游客

返回顶部