zyftank 发表于 2025-7-25 13:19

GD32串口奇偶校验乱码问题

我在调试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位停止位

cainiao518 发表于 2025-7-26 10:00

校验位是独立于有效数据8bit之外的

CXFLBH 发表于 2025-7-26 11:02

跟我的示波器一样,设置数据位为9位显示就正常了。


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位模式
        }

大大财迷 发表于 2025-7-26 15:44

CXFLBH 发表于 2025-7-26 11:02
跟我的示波器一样,设置数据位为9位显示就正常了。

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

CXFLBH 发表于 2025-7-26 17:04

大大财迷 发表于 2025-7-26 15:44
示波器什么型号的,看着很吊啊

麦科信TO1004

tpgf 发表于 2025-7-27 10:45

根据用户手册和社区经验,当启用奇偶校验功能时,必须将UART配置为9位模式

和下土 发表于 2025-7-31 23:58

具体需结合芯片手册的电气特性说明
页: [1]
查看完整版本: GD32串口奇偶校验乱码问题