打印

GD32串口奇偶校验乱码问题

[复制链接]
996|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zyftank|  楼主 | 2025-7-25 13:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我在调试GD32串口通信时,不使用奇偶检验,串口是能正常通信,但是加上奇偶校验,电脑上的串口调试助手会显示乱码。单片机上的串口参数设置为:8-1-EVEN,串口助手的数据位设置为8或7,接收都是乱码。

使用特权

评论回复
沙发
tonykuai| | 2025-7-25 17:39 | 只看该作者
本帖最后由 tonykuai 于 2025-7-25 17:40 编辑

不知道你使用的芯片型号。你仔细阅读一下用户手册。有的芯片,当使用奇偶校验时,需要设置为9位数据模式。即:9-1-EVEN.

使用特权

评论回复
板凳
zyftank|  楼主 | 2025-7-25 20:45 | 只看该作者
tonykuai 发表于 2025-7-25 17:39
不知道你使用的芯片型号。你仔细阅读一下用户手册。有的芯片,当使用奇偶校验时,需要设置为9位数据模式。 ...

果然是懂行的,407的手册里也没写

使用特权

评论回复
地板
大大财迷| | 2025-7-26 08:06 | 只看该作者
1位start+8位bits+1位校验位+1位停止位

使用特权

评论回复
5
cainiao518| | 2025-7-26 10:00 | 只看该作者
校验位是独立于有效数据8bit之外的

使用特权

评论回复
6
CXFLBH| | 2025-7-26 11:02 | 只看该作者
跟我的示波器一样,设置数据位为9位显示就正常了。


使用特权

评论回复
7
tonykuai| | 2025-7-26 14:51 | 只看该作者
大大财迷 发表于 2025-7-26 08:06
1位start+8位bits+1位校验位+1位停止位

不同的MCU在设置UART时对校验位的定义不同。有的是包含在数据位中的,当设置为有校验位,就要把数据位设置成9位。有的MCU是单独设置校验位的,只要设置有奇偶校验,就自动发送9位数据(包含校验位)。
不是你这种简单的加法。
我用的是GD32E230,设置时的代码:
  if(flagParity)
          {
                  usart_word_length_set(USART0, USART_WL_9BIT);   //如果有奇偶校验,需要设置为9位模式
          }
  else
          {
                  usart_word_length_set(USART0, USART_WL_8BIT);   //无奇偶校验,设置为8位模式
          }  

使用特权

评论回复
8
大大财迷| | 2025-7-26 15:44 | 只看该作者
CXFLBH 发表于 2025-7-26 11:02
跟我的示波器一样,设置数据位为9位显示就正常了。

示波器什么型号的,看着很吊啊

使用特权

评论回复
9
CXFLBH| | 2025-7-26 17:04 | 只看该作者
大大财迷 发表于 2025-7-26 15:44
示波器什么型号的,看着很吊啊

麦科信TO1004

使用特权

评论回复
10
tpgf| | 2025-7-27 10:45 | 只看该作者
根据用户手册和社区经验,当启用奇偶校验功能时,必须将UART配置为9位模式

使用特权

评论回复
11
和下土| | 2025-7-31 23:58 | 只看该作者
具体需结合芯片手册的电气特性说明

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

23

帖子

0

粉丝