乐鑫技术交流
直播中

从未拥有

9年用户 962经验值
擅长:可编程逻辑 电源/新能源 光电显示
私信 关注
[问答]

ESP32S2使用单根USB线创建MSC+CDC与上位机通信,CDC异常的原因?

芯片型号:ESP32S2
SDK版本:ESP-IDF 4.4.6
现在的环境是使用单根USB线创建MSC+CDC与上位机通信。当CDC和MSC同时运行,且MSC接口有大数据量通过时CDC设备端口会断开。
附件内有用WIRESHARK 4.2.0抓取到的数据包log可供参考,以下是对log的一些解析:
2.46.2是CDC设备
2.46.3是MSC设备
2.41.2是串口打印设备(调试用)
2.1.2 鼠标
在log的第81760条数据时,MSC收到大量数据后,CDC开始出现了异常,设备端开始没有数据回复了。
                                                                                                                                                                                                                                                                                 

回帖(1)

地方

2024-6-6 14:50:42
根据您提供的信息,我将尝试分析可能导致CDC异常的原因,并提供一些建议。

1. 分析问题:当MSC接口有大数据量通过时,CDC设备端口会断开。这可能是由于带宽限制或资源竞争导致的。

2. 带宽限制:单根USB线同时传输MSC和CDC数据可能导致带宽不足。当MSC数据量较大时,可能会占用大量带宽,导致CDC数据传输受到影响。

建议:尝试降低MSC数据传输速率,或者使用双USB线分别传输MSC和CDC数据,以减少带宽竞争。

3. 资源竞争:ESP32S2在处理MSC和CDC数据时,可能会发生资源竞争,导致CDC异常。

建议:检查ESP-IDF 4.4.6版本是否有已知的资源竞争问题,或者尝试升级到较新的版本。同时,优化代码以减少资源竞争,例如使用中断而非轮询来处理数据传输。

4. 驱动程序问题:可能是由于驱动程序存在bug或者不兼容导致的CDC异常。

建议:检查ESP-IDF 4.4.6版本中的CDC驱动程序是否有已知问题,或者尝试升级到较新的版本。同时,确保上位机的驱动程序也是最新的,以确保兼容性。

5. 硬件问题:可能是由于USB线或ESP32S2硬件存在问题导致的CDC异常。

建议:尝试更换USB线,或者使用其他ESP32S2设备进行测试,以排除硬件问题。

6. 调试:使用WIRESHARK抓取的数据包log可以帮助分析问题。仔细检查log中的数据包,查找可能导致CDC异常的数据包,以便进一步分析问题。

总之,要解决这个问题,需要从多个方面进行排查和优化。希望这些建议对您有所帮助。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分