完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
问题描述:
我使用tinyusb_cdcacm_write_queue()函数发送数据,每150ms调用一次,每次发送10256个数据。 一开始能正常发送,大概5分钟之后,tinyusb_cdcacm_write_queue()无法再发送数据,一直返回0。但电脑端发送过来的数据还能正常接收。跳转进入函数内部,发现const uint32_t size_available = tud_cdc_n_write_available(itf);//Get remaining space in FIFO.(获取FIFO中的剩余空间。) 的结果一直为0。 我尝试在tinyusb_cdcacm_write_queue()后增加 tinyusb_cdcacm_write_flush(acm_cfg.cdc_port, 0); 这句代码也没用 尝试使用tud_cdc_n_write_clear()函数清空FIFO内存再发送,也无法解决问题。 发送函数的代码如下:Code: Select all void usb_usart_write(uint8_t* buf, size_t size){ TickType_t t = xTaskGetTickCount();//单位10ms /* write back */ for (size_t i = 0; i < size;) { size_t sendbytes = size - i; if (sendbytes > 64) sendbytes = 64; size_t wbytes = tinyusb_cdcacm_write_queue(acm_cfg.cdc_port, buf + i, sendbytes); tinyusb_cdcacm_write_flush(acm_cfg.cdc_port, 0); if (wbytes == 0) { TickType_t def = xTaskGetTickCount() - t; if (def > 1) // 超时退出 { ESP_LOGW(TAG, "usb_usart_write-> def:%ld break", def); break; } } else { t = xTaskGetTickCount(); i += wbytes; } } } 请问这个问题可能的原因是什么?我该从哪里进行排查和解决?或者怎么才能在不重启的情况下,让TX功能恢复过来? |
|
相关推荐
1个回答
|
|
根据您提供的问题描述,ESP32S3 USB CDC TinyUSB TX卡死的原因可能有以下几点:
1. FIFO(First In First Out,先进先出)缓冲区溢出:当发送数据的速度超过接收端处理数据的速度时,FIFO缓冲区可能会被填满,导致无法再发送数据。 2. 软件问题:TinyUSB库可能存在一些bug或者配置问题,导致发送数据时出现问题。 3. 硬件问题:ESP32S3的USB硬件可能存在问题,导致发送数据时出现问题。 为了解决这个问题,您可以尝试以下方法: 1. 检查FIFO缓冲区大小:确保FIFO缓冲区足够大,以容纳您发送的数据。如果需要,您可以尝试增加FIFO缓冲区的大小。 2. 降低发送数据的频率:尝试减少每150ms发送的数据量,或者增加发送数据的时间间隔,以降低发送数据的速度。 3. 检查TinyUSB库配置:检查TinyUSB库的配置是否正确,确保所有设置都符合您的硬件和需求。 4. 更新TinyUSB库:检查是否有TinyUSB库的更新版本,以解决可能存在的bug或问题。 5. 检查硬件:确保ESP32S3的USB硬件没有问题。如果可能,尝试使用其他硬件进行测试。 6. 使用其他库:如果问题仍然存在,您可以尝试使用其他USB通信库,如ESP32的官方USB库,以排除TinyUSB库的问题。 7. 优化代码:检查您的代码,确保没有死循环或其他可能导致程序卡死的问题。 8. 调试和日志:在发送数据的过程中,添加调试信息和日志,以便更好地了解问题发生的原因和时机。 通过尝试以上方法,您应该能够找到问题的原因并解决它。 |
|
|
|
只有小组成员才能发言,加入小组>>
321 浏览 0 评论
1178 浏览 1 评论
586浏览 6评论
483浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
468浏览 5评论
467浏览 4评论
442浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 12:32 , Processed in 0.811516 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号