打印

关于STM32 USBOTG的问题

[复制链接]
3025|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangjun2012|  楼主 | 2012-11-15 09:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在研究USBOTG,遇到了如下问题:
想实现PC发送的数据,STM32接受到返回该数据。利用Custom_HID修改,版本3.1.0
本人程序中开了软件缓冲区,STM32的USB接受到来自PC的数据写到缓冲区里,主程序判断当缓冲区有数据则操作以下:

USB_SIL_Write(EP1_IN, (uint8_t*)Receive_Buffer,4);
OTGD_FS_FlushTxFifo(64);

当PC发送数据时,发送次数100次,发送间隔10ms不会出现问题,STM可以收到数据且返回给PC。当发送次数10000次,发送间隔10ms,PC机USBDEBUG会提示读取数据失败,此时STM32一直进入
    /* IN Endpoint interrupt */
#ifdef INTR_INEPINTR
    if (gintr_status.b.inepint)
    {
      retval |= OTGD_FS_Handle_InEP_ISR();//一直在IN 中断里循环。
    }
为什么一直会进入IN中断,如何解决此问题?
沙发
wangjun2012|  楼主 | 2012-11-15 13:24 | 只看该作者
顶,别沉下去了,知道的大虾帮忙!谢谢!

使用特权

评论回复
板凳
wangjun2012|  楼主 | 2012-11-15 18:43 | 只看该作者
这个时候出现错误的时候无法进入发送回调函数了.有朋友遇到类似问题吗?

使用特权

评论回复
地板
wangjun2012|  楼主 | 2012-11-15 18:52 | 只看该作者
正常情况是先OTGD_FS_PCD_WriteEmptyTxFifo(epnum);
后进入(*pEpInt_IN[epnum -1])();         回调函数,提示发送成功.出问题的时候就再也无法进入该回调函数了,且一直进入IN中断,为什么?????????

使用特权

评论回复
5
wangjun2012|  楼主 | 2012-11-15 18:58 | 只看该作者
diepint.d32 = OTGD_FS_PCD_ReadDevInEP(ep); 发送成功时 diepint.d32 =0x81,而发送失败时=0x80,这个时候虽然调用了  OTGD_FS_PCD_WriteEmptyTxFifo(epnum); 但是没有进入发送成功,请问这种情况发生在什么条件下,如何处理?

使用特权

评论回复
6
wangjun2012|  楼主 | 2012-11-15 19:00 | 只看该作者
此刻接受缓冲区都正常有数据填写,但是就是PC机无法再收到数据了?为什么?

使用特权

评论回复
7
wang1216| | 2014-9-26 20:26 | 只看该作者
我也遇到同样问题。没办法啊

使用特权

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

本版积分规则

6

主题

48

帖子

0

粉丝