阅读:1916回复:8
PD12开发
用PD12,设置了四个ENDPOINT,OX81\\OX1\\0X82\\0X2,均为BULK传输。
设备安装后用usbview查开一切正常。写数据时正常。读时用斯波器观察根本就没有中断信号低点平产生。 设备驱动读写的差别就时读时的的传输标志加了个transferFlags |= USBD_TRANSFER_DIRECTION_IN。请问高手,此为何因? 同时另外用driverworks自动生成驱动时,产生了四个ioctl. 安装后用usbview观察,没有任何pipe打开。也用了acStatus = m_Usb.ActivateConfiguration( 1)。设备的配置情况如下: DEV_DSC: DB 12H,01H,10H,01H,00H,00H,00H,10H,81H,04H DB 01H,00H,00H,01H,00H,00H,00H,01H CFG_DSC: DB 09H,02H,2EH,00H,01H,01H,00H,80H,32H DB 09H,04H,00H,00H,04H,00H,00H,00H,00H DB 07H,05H,81H,02H,10H,00H,00H DB 07H,05H,01H,02H,10H,00H,00H DB 07H,05H,02H,02H,40H,00H,00H DB 07H,05H,82H,02H,40H,00H,00H 请高手分析原因? |
|
最新喜欢:![]() |
沙发#
发布于:2002-07-02 11:57
在你读数据之前,D12的对应PIPE的缓冲中必须有数据,而且缓冲要使能。这才能产生中断。
|
|
|
板凳#
发布于:2002-07-02 12:48
缓冲区有数据,而且也使能了。但就是无法产生中断。
|
|
地板#
发布于:2002-07-03 15:58
PIPE选对没有呀?
先要向对应的PIPE buffer中填数据哟。 |
|
|
地下室#
发布于:2002-07-03 18:08
PIPE选择应该没有错。从驱动程序内核追踪确实是选择PIPE IN的管道。0X81和0X82都如此。
|
|
5楼#
发布于:2002-07-05 08:44
D12怎么能够有四个BULK管道呢?我看手册上就是两个呀,都是2号管道,1号管道是general管道。
|
|
|
6楼#
发布于:2002-07-08 22:53
Generic endpoint can be used either as Bulk or Interrupt endpoint
|
|
7楼#
发布于:2002-07-10 19:17
------------------------------------------
同时另外用driverworks自动生成驱动时,产生了四个ioctl. 安装后用usbview观察,没有任何pipe打开。 ---------------------------------------- 要在对应的四个“空壳”函数中加相关请求的 :D :D |
|
8楼#
发布于:2002-07-10 20:58
谢谢各位的关心。
通过几天的调测,问题总算有点眉目了。 对于第一个问题,原因在于读数据时应采用异步的方式。 对于第二个问题,原因在于我的firmware里面对getconfiguration的请求数据长度只判断了低字节部分,而没有判断高字节。driverworks 里的ActiveConfiguration函数第二个参数的缺省值为 1024,相当于0x4000.恰被硬件判断为读取configuration的长度为零,不做任何的处理。所以也就无从谈配置。 |
|