GD32串口通信上电默认发送FF(00)或其它字节数据,在线调试时无此问题解决

最近项目遇到的问题,查询网络上的解决办法都没有解决,最终摸索出解决方案。

先介绍以下硬件环境。控制器:GD32F103RCT6,通信硬件:上位机信号通过USB-RS422串口线发送或接收数据,数据通过MAX490转为TTL电平与串口通信。

问题现象:硬件上电就会默认给上位机发送FF(00)或其它字节数据,当时我想上电发送0102030405以表示通信正常,但每次上电上位机都会接收到FF0102030405,或者000102030405,或者第一字节是其它的数据。总之,在你想发的数据之前总有一字节数据。

而在在线调试时却不会出现这样的问题,程序全速全部运行都没有一样的现象。因为产品较大,走线多且长,于是理解为上电顺接有干扰问题。

解决办法:我这的解决办法分为了硬件变动和软件加语句。先说硬件变动 

1、通过下图对MAX490进行“上拉”,按道理这种接法会将5(Y)脚稳定为高状态。但这种方式可行后就没有试将3.3V和GND对调接成严格意义上的上拉状(可能也会行)。通过实验,在6(Z)和5(Y)间再多加一个10KΩ,然后将3.3V接在6(Z)和5(Y)之间也可行。

2、软件方面(也不可少),需要在串口初始化前将PA9(USART0_TX),和PA10(USART0_RX)单独再配置一遍普通的推挽输出。代码如下:
 gpio_init(GPIOA,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_9|GPIO_PIN_10 );

gpio_bit_set(GPIOA,GPIO_PIN_9 );

gpio_bit_set(GPIOA,GPIO_PIN_10 );

总结:我是通过这种办法解决的默认上电串口汇报一字节数据问题。但这样做有个缺点。、

缺点:这么改动的话通过SWD下载程序时候,Keil会提示,Inva ROM Table。

这时,需要将5(Y)的3.3V去掉才能下载,如果还不能下载,那就点击Option for Target(魔法棒)

选成这样的,然后点击Flash Download

改成这样即可正常下载,下载后将3.3V还重新接回。再上电就直接收到你想法的数据,而不会多字节。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

带鱼九号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值