打印

再问版主USB库遇到的问题

[复制链接]
4574|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
armmcu|  楼主 | 2008-8-27 06:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SMT32F103,根据例程Custom_HID修改,利用EP1 以EP_INTERRUPT 的方式 发送包,原来的例程每次发送2个字节,现在修改后包的长度不超过64字节时发送是正常的,但当一个包长超过64字节时就发送失败,没有数据出来(程序没有死机),该改的地方都已经修改了,不知道哪个地方还没有改到位,谢谢!
沙发
香水城| | 2008-8-27 11:25 | 只看该作者

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

使用特权

评论回复
板凳
armmcu|  楼主 | 2008-8-28 07:26 | 只看该作者

Re

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

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

使用特权

评论回复
地板
香水城| | 2008-8-28 08:38 | 只看该作者

你修改了哪些?在哪里?

有了这些信息我才能知道你的错误在哪里,才能回答你的问题——不知道哪个地方还没有改到位?

使用特权

评论回复
5
armmcu|  楼主 | 2008-8-29 07:04 | 只看该作者

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. 所以问题很简单,就是如何发送一个多数据包,发送函数要如何写?
谢谢!

使用特权

评论回复
6
armmcu|  楼主 | 2008-8-30 01:21 | 只看该作者

Re:

谢谢版主,已经搞定!
需要代码的朋友发Email我, 支持 SET REPORT 和 多包发送

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

145

主题

181

帖子

0

粉丝