完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我这边使用的是ESP8685(我理解跟ESP32C3在这方面是一样的).
IDF是5.0版本. 我这边期望是: 我平时调试log与烧录通过默认的硬件串口实现. 与电脑上位机的通讯通过芯片自带的USB Serial/JTAG Controller中的虚拟串口功能实现. 目前问题: 目前测试下来(并根据你们的API指南),要让USB Serial正常收发通讯就得打开CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG宏. 但是这样会导致log也打印在USB Serial里,会干扰上位机的数据包解析. 我目前只能在打开CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG并关闭全部Log的情况下正常与上位机通讯. 所以想问下有没有办法可以做到log跟烧录在默认硬件串口,然后USB Serial完全交给我这边读写,不会插入log内容? |
|
相关推荐
1个回答
|
|
ESP32-C3的USB Serial/JTAG Controller确实可以作为通讯串口使用,但是根据您的描述,您遇到的问题是在打开`CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG`宏后,日志也会打印在USB Serial中,这会干扰上位机的数据包解析。
要解决这个问题,您可以尝试以下方法: 1. **使用不同的日志级别**:您可以在代码中设置不同的日志级别,例如使用`ESP_LOG_INFO`、`ESP_LOG_WARN`、`ESP_LOG_ERROR`等,然后在`esp_log_level_set()`函数中设置只输出特定级别的日志。这样,您可以在调试时开启日志输出,而在与上位机通讯时关闭或降低日志级别。 2. **使用日志过滤器**:您可以使用`esp_log_set_vprintf()`函数来设置一个自定义的日志输出函数,在这个函数中,您可以根据需要决定是否输出日志信息。例如,您可以在与上位机通讯时关闭日志输出,而在其他时候正常输出日志。 3. **使用软件串口**:如果硬件串口不足以满足您的需求,您可以考虑使用ESP32-C3的软件串口功能。这样,您可以将一个GPIO引脚配置为TX,另一个GPIO引脚配置为RX,从而实现软件串口通信。您可以使用`esp_serial_slave_link()`函数来配置和使用软件串口。 4. **使用任务调度**:您可以创建两个任务,一个用于与上位机通讯,另一个用于日志输出。通过合理的任务调度,可以避免日志输出干扰上位机的数据包解析。 5. **使用中断和标志位**:您可以使用中断和标志位来控制日志输出。在与上位机通讯时,设置一个标志位,当日志输出函数检测到这个标志位时,就暂时不输出日志。在通讯结束后,清除标志位,恢复正常的日志输出。 请注意,以上方法可能需要您对ESP-IDF进行一些定制和修改。希望这些建议能帮助您解决问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
1106 浏览 1 评论
574浏览 6评论
477浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
460浏览 5评论
461浏览 4评论
435浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 11:25 , Processed in 0.823292 second(s), Total 50, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号