再问版主USB库遇到的问题

liushupi   2008-8-27 06:54 楼主
                                 SMT32F103,根据例程Custom_HID修改,利用EP1 以EP_INTERRUPT 的方式 发送包,原来的例程每次发送2个字节,现在修改后包的长度不超过64字节时发送是正常的,但当一个包长超过64字节时就发送失败,没有数据出来(程序没有死机),该改的地方都已经修改了,不知道哪个地方还没有改到位,谢谢!

回复评论 (5)

请问你是如何修改的?得到什么现象?

                                  
点赞  2008-8-27 11:25

Re

现象就是 超过63字节的包死活也发不出去,而且发送包的大小 还与 CustomHID_ConfigDescriptor里面的 EP1 IN endpoint 描述里包大小有关 ,没道理啊,其他的MCU 这地方设置为8 照样发送256B 以上的包。

版主你给我个邮箱我发整个工程给你,或者说 在Custom_HID 例程上,把EP1的发送包长度 改到256B一个包,需要改哪里地方? 谢谢
点赞  2008-8-28 07:26

你修改了哪些?在哪里?

                                 有了这些信息我才能知道你的错误在哪里,才能回答你的问题——不知道哪个地方还没有改到位?
点赞  2008-8-28 08:38

Re:

版主好
在Custom_HID例程上修改了如下代码:
1.usb_proc.c 的CustomHID_Reset()里  SetEPTxCount(ENDP1, 64);
2.关闭 DMA中断,不让ADC采样后发送EP1包
3.在main.c里 重复发送一个128B的包,
   while(1){
    for(i=0;i<2;i++)
       { SetEPTxAddr(ENDP1, ENDP1_TXADDR+i*64);
      SetEPTxValid(ENDP1);    
       Delay(10000);      
        }
     }       
4. 由于一个包是128B,最大包长是64B,所以分两次发送出来,奇怪的是所有例程发送包时都没有查发送状态的处理,也没有找到相应的状态等待函数,这样的话,是不是出现第一个包还没有发送完,第二个包就冲掉了第一个包的数据?
5. 所以问题很简单,就是如何发送一个多数据包,发送函数要如何写?
谢谢!
点赞  2008-8-29 07:04

Re:

谢谢版主,已经搞定!
需要代码的朋友发Email我, 支持 SET REPORT 和 多包发送
点赞  2008-8-30 01:21
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复