重庆中环建设有限公司网站,wordpress网站嵌入音乐,公司介绍信,网页设计师可转行培训一、问题描述 使用GD32单片机串口进行通信测试#xff0c;单片机的串口配置的是偶校验(Even)、数据位为8、停止位为1、波特率为9600。串口测试软件用的格西烽火#xff0c;软件的配置如下#xff1a; 单片机通过串口和串口测试软件进行通信交互#xff0c;软件收到的数…一、问题描述 使用GD32单片机串口进行通信测试单片机的串口配置的是偶校验(Even)、数据位为8、停止位为1、波特率为9600。串口测试软件用的格西烽火软件的配置如下 单片机通过串口和串口测试软件进行通信交互软件收到的数据和单片机发送的数据不一致。
二、解决办法 UART 串口的特点是将数据一位一位地顺序传送只要 2 根传输线就可以实现双向通信一根线发送 数据的同时用另一根线接收数据。UART 串口通信有几个重要的参数分别是波特率、起始位、数据位、停止位和奇偶检验位对于两个使用 UART 串口通信的端口这些参数必须匹配否则通信将无法正常完成。 UART 串口传输的数据格式如下图所示
空闲位数据线在空闲状态的时候为逻辑“1”状态也就是高电平表示没有数据线空闲 没有数据传输。起始位当要传输数据的时候先传输一个逻辑“0”也就是将数据线拉低表示开始数据 传输。数据位数据位就是实际要传输的数据数据位数可选择 5~8 位我们一般都是按照字节传输数据的一个字节 8 位因此数据位通常是 8 位的。低位在前先传输高位最后传输。奇偶校验位这是对数据中“1”的位数进行奇偶校验用的可以不使用奇偶校验功能。停止位数据传输完成标志位停止位的位数可以选择 1 位、1.5 位或 2 位高电平一般都 选择 1 位停止位。波特率波特率就是 UART 数据传输的速率也就是每秒传输的数据位数一般选择 9600、 19200、115200 等。 GD32官方用户手册关于串口的介绍 单片机的串口配置中数据位的最后一位可以用作校验位。所以如果数据有8位又有奇校验或者偶校验(需要占1位数据)的时候则GD32单片机配置的数据长度应为9。
三、验证
代码修改如下
//修改前
usart_parity_config(USART2, USART_PM_EVEN);
usart_word_length_set(USART2, USART_WL_8BIT);
//修改后
usart_parity_config(USART2, USART_PM_EVEN);
usart_word_length_set(USART2, USART_WL_9BIT);重新编译测试可以看到串口测试软件和单片机之间的数据交互是正常的。
stm32参考资料 链接1 链接2