完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我正在使用一个PIC32 MZ上的高速USB HID。我的应用程序的USB部分取自HID样本。它工作得很好,除非我看到在从主机(Windows 7)向PIC发送1K数据包的长突发时偶尔出现数据错误。错误发生在一些牌子的PC上,而不是其他牌子的PC上,而且很罕见,大约每10000包出现一个错误。我的读数表明USB支持硬件级的错误检测和重试。是这样吗?在微芯片HID或USB驱动程序中,我找不到任何CRC或重试。是否需要做一些事情来实现纠错,HID样例代码不做的事情?或者可以启用错误校正但仍然失败,即,传输错误发生的频率是否会比我意识到的更高,因为仅报告了致命错误?我有没有办法监视纳克和重试的数量?最好的问候,克里斯
|
|
相关推荐
7个回答
|
|
|
校验和在硬件上是透明的。数据包使用CRC16校验和,对于低级别的细节,见一如USB。检测到的错误是由于缺少ACK应答来表示的,NAK通常指示另一端忙。WiReSurk包括一个基于软件的USB协议分析器,您可以尝试,还有其他免费和商业的替代品。一个基于硬件的分析器给出了最好的结果,但是它们的价格是700美元到1500美元。
|
|
|
|
|
|
谢谢!这很有帮助。相关问题:USB是否包括流量控制?我假设是这样的,在这种情况下,只在一个方向(到PIC)发送长突发数据包(实际上是HID“报告”)应该没有问题。然而,我担心PIC侧的堆栈会被过度的ISR开销淹没。我曾经遇到过在不同的嵌入式处理器(Sitara)上使用以太网堆栈的类似问题。在这些长的突发事件中,我的吞吐量不同,例如,一台PC的吞吐量约为2MBytes/s,而另一台PC的吞吐量约为4MBytes/s。克里斯
|
|
|
|
|
|
你犯了什么错误?是否有错误数据、丢失数据包、硬件错误的数据包?
|
|
|
|
|
|
我得到错误的数据,但不丢失数据包或硬件错误。我很惊讶地看到这一点,因为我的印象是硬件会自动重试,直到数据包成功传输。但重试次数可能有限吗?在哪种情况下,我应该期望发送函数返回一个错误?
|
|
|
|
|
|
它计算每个数据包的CRC,所以数据错误将非常罕见。我宁愿怀疑是发送还是接收软件。
|
|
|
|
|
|
同样,我真的怀疑这个问题是在USB管内,而它很可能是它的任何一方。
|
|
|
|
|
|
我不知道你的情况,但我可以分享,一旦我遇到类似的问题,在数据传输间歇性损坏,只有在传输大量的数据在许多数据包。经过一些调查,我发现问题很简单:我使用的USB软件栈的数据缓冲区偶尔会被下一个包的有效负载覆盖。在将下一个数据加载到缓冲区之前,我没有以正确的方式检查前一个包是否已经完全传输。呃,也许这也是你的问题,我建议你检查一下:
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1122浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1095浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
872浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 22:55 , Processed in 0.810287 second(s), Total 84, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
593