目前在用STM32做个产品,USB通讯是在官方的Mass_Storage基础上改的,在BULK-ONLY子类命令中添加了自定义的命令,通过这个来实现大批量数据交互,主机首先发送OUT的CBW+命令,然后发送IN的CBW,设备返回响应,就是依次执行UserToPMABufferCopy(),SetEPTxCount(),SetEPTxStatus()。在指令执行时间较短的情况下(2S以内)无任何问题,但是时间较长的情况下(4S以上)就出现异常,从抓到的USB数据上看,主机在发送完命令,一段时间(等于指令执行的时间)后Get 0 bytes from the device。
不知道为什么,PC的驱动是公司一款成熟产品上拿来用的,那款产品使用的是AVR的芯片,我也抓过它的数据,对比下来并没有发现区别,请帮忙分析下问题可能出现在哪里?
|