[技术问答] N76E003串口的通讯问题?

[复制链接]
882|18
 楼主| Annie556 发表于 2025-6-24 14:48 | 显示全部楼层 |阅读模式
用的新唐BSP里的UART0例子,加一个发送字符串的函数,正常发送0x55都可以,但是发送test在串口调试助手中就变成了QStT,这是为什么?

a_ziliu 发表于 2025-6-25 14:59 | 显示全部楼层
本帖最后由 a_ziliu 于 2025-6-25 15:00 编辑

可以使用printf.
zhuomuniao110 发表于 2025-6-25 15:57 | 显示全部楼层
QStT是什么,截图看看。
ewyu 发表于 2025-8-27 12:02 | 显示全部楼层
新唐 BSP 的 UART0 例子中发送字符串出现 “test” 变成 “QStT” 的乱码问题,通常是字符编码或发送逻辑错误导致的
miltk 发表于 2025-8-27 12:03 | 显示全部楼层
“test”(ASCII 码:0x74 0x65 0x73 0x74)变成 “QStT”(ASCII 码:0x51 0x53 0x74 0x54)可见每个字节的数值被无规律篡改,这大概率是因为发送函数没有正确处理字符串的每个字符,或 UART 配置存在波特率偏差、数据位 / 校验位错误。
nqty 发表于 2025-8-27 12:04 | 显示全部楼层
本帖最后由 nqty 于 2025-8-27 12:08 编辑

检查 UART 初始化参数(波特率 / 数据格式)乱码的首要原因是 UART 配置与串口调试助手不一致
星星点点didi 发表于 2025-8-27 12:05 | 显示全部楼层
确保 BSP 中 UART0 的初始化波特率(如 115200、9600)与调试助手设置完全一致。波特率偏差超过 ±3% 会导致接收错误(例如 BSP 设为 115200,助手设为 110000)。
teaccch 发表于 2025-8-27 12:06 | 显示全部楼层
数据位 / 停止位 / 校验位:新唐 UART 默认通常是 “8 位数据位、1 位停止位、无校验”(8N1),需在调试助手中对应设置,若设置为 “7 位数据位” 或 “奇校验”,会导致字节高位被截断或篡改。
canfeil 发表于 2025-8-27 12:06 | 显示全部楼层
BSP 的示例通常只有单字节发送函数(如UART_SendData),若自定义字符串发送函数存在缺陷,会导致字节发送错误
twinkhahale 发表于 2025-8-27 12:07 | 显示全部楼层
若UART_SendData没有等待发送缓冲区为空就发送下一字节,会导致数据覆盖(前一个字节还没发完,后一个字节已写入,导致字节错误)。
gra22ce 发表于 2025-8-27 12:08 | 显示全部楼层
通过查询 UART 的发送完成标志(如TE_FLAG),确保上一字节发送完毕后再发送下一字节,避免数据冲突。
eleg34ance 发表于 2025-8-27 12:12 | 显示全部楼层
若字符串中包含不可见控制字符(如\r、\n)或被意外修改,也可能导致显示异常,发送前打印字符串的十六进制值,确认是否与预期一致
nuan11nuan 发表于 2025-8-27 12:12 | 显示全部楼层
输出异常,可能是字符串被栈溢出、指针错误等问题篡改,需检查内存是否被意外修改。
onlycook 发表于 2025-8-27 15:50 | 显示全部楼层
可能串口配置错误。
duo点 发表于 2025-8-27 15:50 | 显示全部楼层
发送函数未正确处理字符串或缓冲区。
七毛钱 发表于 2025-8-27 15:51 | 显示全部楼层
若发送函数使用缓冲区但未正确管理,可能导致数据覆盖或错位。
内政奇才 发表于 2025-8-27 15:51 | 显示全部楼层
TXD/RXD引脚虚焊、电平不匹配或串口调试助手接线错误。
海滨消消 发表于 2025-8-27 15:52 | 显示全部楼层
可能是中断冲突。。
麻花油条 发表于 2025-8-27 15:52 | 显示全部楼层
降低编译器优化级别试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

81

主题

1868

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部