You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Zephyr项目USART3串口终端输出乱码问题求助

问题:Zephyr项目中USART3串口输出乱码

配置与环境信息

prj.conf 配置

CONFIG_GPIO=y
CONFIG_SERIAL=y
CONFIG_UART_STM32=y
CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=y

已尝试过上述配置的不同组合。

设备树(USART3)配置

&usart3 {
    pinctrl-0 = <&usart3_tx_pd8 &usart3_rx_pd9 &usart3_de_pd12 &usart3_cts_pd11>;
    pinctrl-names = "default";
    current-speed = <115200>;
    status = "okay";
};

注:该USART3用于RS485输出,引脚为典型配置。

核心代码(main.c)

#include <stdio.h>
printf("LED state: %s\n", led_state ? "ON" : "OFF");

终端工具配置(picocom)

启动命令:

sudo picocom -b 115200 /dev/ttyUSB0

工具参数:

*** baud: 115200
*** flow: none
*** parity: none
*** databits: 8
*** stopbits: 1
*** dtr: up
*** rts: up
*** mctl: DTR:1 DSR:0 DCD:0 RTS:1 CTS:0 RI:0

现象

终端输出乱码:

(�    �)�ӖV���)
 (�     �)�Ӗ(����)
(�    �)�ӖV���)
(�     �)�Ӗ(����)

此前使用纯STM32 HAL+寄存器配置USART3时,可正常输出ASCII字符。


排查与解决建议
  • RS485方向控制配置缺失
    该串口用于RS485输出,Zephyr默认不会自动处理DE引脚的方向切换,需在设备树和配置中补充RS485相关设置:

    1. 在设备树中添加RS485属性:
      &usart3 {
          // 保留原有配置
          rs485-rts-active-low; // 根据硬件实际电平调整,DE通常与RTS绑定
          rs485-rts-delay = <0 0>; // 发送前后延迟,单位ms,按需设置
          status = "okay";
      };
      
    2. 在prj.conf中开启RS485支持:
      CONFIG_SERIAL_RS485=y
      

    之前HAL配置中你手动控制了DE引脚,Zephyr下需通过上述配置让框架自动处理方向切换,否则发送时DE未正确置位会导致数据传输异常。

  • 控制台串口映射错误
    Zephyr默认可能将控制台绑定到其他串口(如USART1),需明确指定USART3为控制台:

    1. 在设备树的USART3节点中添加console;属性:
      &usart3 {
          console; // 指定该串口为系统控制台
          // 保留原有配置
      };
      
    2. 或在prj.conf中指定设备名:
      CONFIG_UART_CONSOLE_ON_DEV_NAME="USART3"
      
      (设备名需与Zephyr注册的设备一致,STM32平台通常为USART3或uart3)
  • 引脚复用配置验证
    核对设备树中usart3_tx_pd8等引脚的复用定义,确保与STM32 HAL配置中的寄存器值一致,避免引脚功能配置错误。

  • 波特率偏差排查
    尽管配置都是115200,但Zephyr时钟配置差异可能导致实际波特率偏移:

    1. 在prj.conf中开启串口调试日志:CONFIG_SERIAL_DEBUG=y,查看启动日志中USART3的波特率计算信息。
    2. 用示波器抓取TX引脚波形,测量实际波特率是否与115200一致。

内容的提问来源于stack exchange,提问作者drerD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 23:36:14