首页 > 其他分享 >关于GD32F450ZG系列板卡对RS232发送数据前后不匹配

关于GD32F450ZG系列板卡对RS232发送数据前后不匹配

时间:2024-09-02 09:21:15浏览次数:15  
标签:set 引脚 GD32F450ZG GPIOA 串口 发送数据 GPIO RS232 USART0

        先说一下问题,在Keil 5开发环境下对板卡上的RS232串口进行配置,要求发送0x5A一笔数据,但实际在串口调试助手中收到0xEC 0xF3 两笔数据,前后发送的数据不匹配。

        针对这个问题,对一下几点重新检查,并确保无误:

        1、检查引脚使能情况;

        2、检查串口配置信息;

        3、检查串口调试助手的软件设置信息;

        4、分析数据;

1、检查引脚使能情况:

        以我当前项目为例,根据硬件提供的板卡原理图,确定RS232串口需要配置的GPIO引脚

        

        根据串口端口部分原理图找到TX和RX两点,然后根据TX和RX找到对应串口芯片的位置

        

        根据上面的图可知,在串口芯片中连接GD32芯片上的引脚为TXD0和RXD0,由此可以确定当前GD32对于RS232使能的GPIO引脚位置,分别对应的是PA9(TXD0)和PA10(RXD0)

        

        根据此PA9和PA10两引脚,我们在GD32F450数据手册中查找其复用情况:PA9对应USART0_TX,PA10对应USART0_RX,并且复用功能对应AF7。

        这里我们对于GPIO的引脚信息了解的差不多了,然后我们看源码。

void GPIO_RS232_Init(void)
{
	rcu_periph_clock_enable(RCU_GPIOA);
	/*TX*/
	gpio_af_set(GPIOA,GPIO_AF_7,GPIO_PIN_9);
	gpio_mode_set(GPIOA,GPIO_MODE_AF,GPIO_PUPD_PULLUP,GPIO_PIN_9);
	gpio_output_options_set(GPIOA,GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_9);
	/*RX*/
	gpio_mode_set(GPIOA,GPIO_MODE_AF,GPIO_PUPD_PULLUP,GPIO_PIN_10);
	gpio_af_set(GPIOA,GPIO_AF_7,GPIO_PIN_10);
	gpio_output_options_set(GPIOA,GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_10);
}

        由上面信息以及源码的比对,发现在引脚使能这一块未发现任何问题,大家可以自行对照一下。无误后继续检查下面的步骤进行问题排除。

2、检查串口配置信息:

        根据我们以往的串口配置经验,115200-8-N-1这个口诀都老生常谈了,我们按照这个再进行问题排除。

void BSP_RS232_Init(void)
{
	rcu_periph_clock_enable(RCU_USART0);
	
	/*默认初始化串口*/
	usart_deinit(USART0);
	/*波特率9600*/
	usart_baudrate_set(USART0,9600);
	/*无奇偶校验*/
	usart_parity_config(USART0,USART_PM_NONE);
	/*8位数据*/
	usart_word_length_set(USART0,USART_WL_8BIT);
	/*1位停止位*/
	usart_stop_bit_set(USART0,USART_STB_1BIT);
	/*使能发送与接收功能*/
	usart_transmit_config(USART0,USART_TRANSMIT_ENABLE);
	usart

标签:set,引脚,GD32F450ZG,GPIOA,串口,发送数据,GPIO,RS232,USART0
From: https://blog.csdn.net/weixin_63007052/article/details/141669454

相关文章

  • tcp与udp的总结+connect阻塞+tcp三次握手、四次挥手+常见的服务器IO(发送数据+接收数
    一,TCP与UDP的基本总结TCP(传输控制协议)和UDP(用户数据报协议)是两种主要的传输层协议。TCP是面向连接的,提供可靠、顺序的传输,适用于需要高可靠性的应用,如网页浏览和文件传输。它通过重传机制和流量控制确保数据完整性。UDP是无连接的,速度快但不保证数据的可靠性和顺序,适用于对实时性......
  • 【漫谈C语言和嵌入式004】深入理解RS232、RS422和RS485:嵌入式系统中的串行通信协议
            在嵌入式系统设计中,串行通信协议是设备间数据传输的重要方式。其中,RS232、RS422和RS485是三种常用的标准。这些协议不仅在工业控制、仪器仪表、网络通信等领域得到广泛应用,也在许多嵌入式系统项目中扮演着重要角色。在本文中,我们将深入探讨这三种串行通信标准......
  • 0211-使用 dummy 发送数据
    环境Time2022-11-20WSL-Ubuntu22.04Rust1.65.0pnet0.31.0前言说明参考:https://docs.rs/pnet_datalink/0.31.0/pnet_datalink/linux目标前面使用了pnet自己模拟的一个数据链路层的发送和接收过程。现在使用linux的dummy来模拟数据的发送和接收。新建网络接......
  • [SDR] GNU Radio 系列教程 —— GNU Radio TX PDU (发送数据包操作)的基础知识(超全)
    目录1PDU概述2Demo详解2.1RandomPDUGenerator2.2AsyncCRC322.3ProtocolFormatter(Async)2.4将header和payload合并输出2.5对PDU实施突发填充和渐变2.6RRC滤波与多相任意重采样2.6.1FIR滤波器例子2.6.2滤波器基础及RRC知识1)什么时候用RRC?2)什么是RRC?3......
  • 如何检测 Windows 应用程序 (.exe) 是否正在向外部发送数据?
    我正在使用用Python编写的Windows应用程序(.exe)来操作文件夹中的文件。我怀疑此应用程序可能在未经许可的情况下将我的文件发送到远程服务器。如何验证此应用程序是否正在建立不需要的网络连接?具体来说:有没有办法检查此应用程序是否正在连接到互联网,而无需对源......
  • 当我们创建一个在 https 服务器上获取和发送数据的 python 应用程序时,我们应该如何处
    python脚本使用Urllib3,我的服务器是在Node.js上编写的脚本。我担心(并且不清楚)证书:我是否需要将我的python应用程序上的证书另存为变量?例如我这样做了,http=urllib3.PoolManager(cert_reqs="CERT_REQUIRED",ca_certs='client-cert.pem')并且我不知道......
  • Delphi CnPack CnRs232 以16进制 串口发送消息 WriteCommData
    使用Delphi组件CnPack里面的CnRs232,以十六进制对串口发送消息 WriteCommData找了好久,尝试了N个方法,不想安装MSComm,SPComm在新版Delphi有点怪怪的,还是用cnRs232直接上代码:procedure TForm1.Button1Click(Sender: TObject);var  DataArray:array of byte; Wl......
  • 小型plc的自由协议通讯( 基于RS232)
    1,接线  2,串口设置  2,程序监控 3,串口测试小工具 ......
  • 为什么执行代码,烧入程序之后,电脑对单片机发送数据,但是单片机不反应
    #include"stm32f10x.h"      #include"Uart.h"#include<stdio.h>#include<stdarg.h>u8USART1_RX_BUF[64];  //接收缓冲,最大64个字节.//接收状态//bit7,接收完成标志//bit6,接收到0x0d//bit5~0,接收到的有效字节数目u16USART1_RX_STA=0;   ......
  • TTL 、RS232和RS485
    通信方式通信系统的分类1、按信道信号特征分类:模拟通信和数字通信2、按传输媒质分类:有线通信和无线通信3、按传输方式分类:基带传输和带通传输4、按通信业务分类:电话通信、数据通信、图像通信和遥控通信等5、按工作波段分类:长波通信、短波通信、微波通信和光通信等6、按复用......