乐鑫技术交流
直播中

李泽坚

8年用户 1429经验值
私信 关注
[问答]

USB-JTAG/serial存在脏数据怎么解决?

环境信息:
操作系统
Fedora 40
硬件:esp32c3-mini-1(chip reversion v0.4)
ESP-IDF:ESP-IDF v5.2.2

UART0通过USB转串口模块连接到电脑的`/dev/ttyUSB0`
USJ通过USB线直接连接到电脑`/dev/ttyACM0`

sdkconfig按照文档和USJ可能相关的有:
CONFIG_SOC_USB_SERIAL_JTAG_SUPPORTED=yCONFIG_SOC_EFUSE_DIS_USB_JTAG=yCONFIG_ESP_ROM_USB_SERIAL_DEVICE_NUM=3# CONFIG_APPTRACE_DEST_USB_CDC is not set# CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG is not set# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set# CONFIG_ESP_CONSOLE_NONE is not set# CONFIG_ESP_CONSOLE_SECONDARY_NONE=y# CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG is not set
代码基于usb_serial_jtag_echo这个example改的

预期结果:
USJ像普通串口一样工作,`usb_serial_jtag_read_bytes`正常读取

实际结果:
USJ时不时出现长度不一致的脏数据,这些数据通常出现在我自己数据的前方,看起来像是LOG之类的东西。


补充信息:
部分脏数据
hex: 70 75 5F 73 74 61 72 74 3A 20 41 70 70 20 76 65

ascii: pu_start: App ve

hex: 29 20 63 70 75 5f 73 74 61 72 74 3a 20 41 70 20

ascii: ) cpu_start: Ap

     

回帖(1)

is.milk

2024-7-19 17:31:14
脏数据问题可能是由于多种原因导致的,以下是一些建议来解决这个问题:

1. **检查硬件连接**:确保USB线和USB转串口模块连接稳定,没有松动或损坏。

2. **检查电源**:确保ESP32-C3-mini-1模块的电源稳定,避免电压波动导致数据传输不稳定。

3. **更新驱动程序**:检查操作系统中的USB驱动程序是否为最新版本,如有需要,请更新驱动程序。

4. **调整波特率**:尝试调整UART0和USB-JTAG/serial的波特率,以找到最佳的传输速率。在`sdkconfig`文件中,可以设置波特率,例如:
   ```
   CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200
   ```

5. **检查串口终端软件设置**:确保使用的串口终端软件(如PuTTY、Minicom等)的设置与`sdkconfig`中的配置相匹配,包括波特率、数据位、停止位和奇偶校验。

6. **使用软件流控制**:在某些情况下,使用软件流控制(如XON/XOFF)可以减少脏数据的问题。在串口终端软件中启用软件流控制功能。

7. **检查ESP-IDF配置**:确保ESP-IDF配置正确,特别是与USB-JTAG/serial相关的配置。你已经列出了一些相关的配置,确保它们正确设置。

8. **检查代码**:检查你的应用程序代码,确保没有导致脏数据的问题,例如错误的数据包处理或缓冲区溢出。

9. **使用硬件流控制**:如果可能,尝试使用硬件流控制(如RTS/CTS)来减少脏数据的问题。这可能需要额外的硬件连接。

10. **尝试其他USB设备**:如果可能,尝试使用其他USB设备(如USB集线器)来连接ESP32-C3-mini-1模块,以排除USB端口问题。


举报

更多回帖

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