串口输出误码


我用EC600M,使用的quecpython的示例代码,代码如下:
“”"
运行本例程,需要通过串口线连接开发板的 MAIN 口和PC,在PC上通过串口工具
打开 MAIN 口,并向该端口发送数据,即可看到 PC 发送过来的消息。
“”"
import _thread
import utime
import log
from machine import UART

‘’’

  • 参数1:端口
    注:EC100YCN平台与EC600SCN平台,UARTn作用如下
    UART0 - DEBUG PORT
    UART1 – BT PORT
    UART2 – MAIN PORT
    UART3 – USB CDC PORT
  • 参数2:波特率
  • 参数3:data bits (5~8)
  • 参数4:Parity (0:NONE 1:EVEN 2:ODD)
  • 参数5:stop bits (1~2)
  • 参数6:flow control (0: FC_NONE 1:FC_HW)
    ‘’’

设置日志输出级别

log.basicConfig(level=log.INFO)
uart_log = log.getLogger(“UART”)

class Example_uart(object):
def init(self, no=UART.UART2, bate=115200, data_bits=8, parity=0, stop_bits=1, flow_control=0):
self.uart = UART(no, bate, data_bits, parity, stop_bits, flow_control)
self.uart.set_callback(self.callback)

def callback(self, para):
    uart_log.info("call para:{}".format(para))
    if(0 == para[0]):
        self.uartRead(para[2])


def uartWrite(self, msg):
    uart_log.info("write msg:{}".format(msg))
    self.uart.write(msg)

def uartRead(self, len):
    msg = self.uart.read(len)
    utf8_msg = msg.decode()
    uart_log.info("UartRead msg: {}".format(utf8_msg))
    return utf8_msg

def uartWrite_test(self):
    for i in range(10):
        write_msg = "Hello count={}".format(i)
        self.uartWrite(write_msg)
        utime.sleep(1)

if name == “main”:
uart_test = Example_uart()
uart_test.uartWrite_test()

运行结果示例

‘’’
INFO:UART:write msg:Hello count=0
INFO:UART:write msg:Hello count=1
INFO:UART:write msg:Hello count=2
INFO:UART:write msg:Hello count=3
INFO:UART:write msg:Hello count=4
INFO:UART:write msg:Hello count=5
INFO:UART:write msg:Hello count=6
INFO:UART:write msg:Hello count=7
INFO:UART:write msg:Hello count=8
INFO:UART:write msg:Hello count=9

INFO:UART:call para:[0, 2, 15]
INFO:UART:UartRead msg: my name is XXX

‘’’
但是最后串口输出的数据里误码严重

您好,UART 通信误码通常由硬件连接、电气特性或配置不匹配引起。结合您的 EC600M 与 QuecPython 示例,请按以下思路排查:

  1. 串口参数一致性
    PC 端串口工具(如 QCOM、SSCOM)的波特率、数据位、停止位、校验位、流控,需与代码中的 115200, 8, 0 (NONE), 1, 0 (FC_NONE) 完全一致。尤其留意波特率是否有偏差。

  2. 接线与共地
    UART2 是 MAIN 口,检查 Tx/Rx 是否交叉连接(模组 TX → PC RX,模组 RX → PC TX),并确保 GND 可靠连接。共地不良是乱码的常见原因。

  3. 电源与干扰
    模组供电是否稳定(建议 3.8~4.2 V,峰值电流足够),开发板走线是否存在干扰源,USB 转串口工具质量欠佳也会引入乱码,可换一个转换器或降低波特率测试(如 9600)。

  4. EC600M 引脚映射
    UART2 对应物理引脚请查阅硬件设计手册,确认没有与其他功能复用冲突。

  5. 进一步定位
    建议先屏蔽回调接收,只让模块主动循环发送固定数据,若 PC 收到依旧乱码,则问题多在链路层;若发送正常、仅接收乱码,则检查 PC 发送端配置及模块接收缓存。

若仍无效,请补充误码截图、所用串口工具型号及具体接线方式,以便进一步分析。

参考文档

本回答仅供参考。若问题已解决,可标记为 :white_check_mark:解决方案 ;若仍有疑问,请等待官方技术人员回复,最终请以专业解答为准。

我用的官方的开发板,共地都正常