打印
[技术讨论]

GD32F450使用USB虚拟串口,发送乱码问题

[复制链接]
7184|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
阿亮之家|  楼主 | 2021-10-23 22:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 阿亮之家 于 2021-10-23 22:59 编辑

#申请原创#    大家好!最近移植GD32官方USB虚拟串口例程到自己的工程中,出现开机通信一段时间后发送数据乱码的问题。工程中配置时钟选择12M外部时钟,6分频,选择PLLSAI作为USBFS的时钟输入,未开启48M时钟校验,USBFS配置为虚拟串口,发送波特率500000。调试发现开机前几次USB发送数据是正常的,可以通过串口助手接受到数据;发送几次后,USB发送给串口助手的数据就出现乱码,但是串口助手接收的字节数是对的,通过单步运行发现USBFS发送内存中的数据也是对的。请问大家这个出现的原因都有哪些?

12.jpg (177.02 KB )

时钟配置

时钟配置

使用特权

评论回复

相关帖子

沙发
阿亮之家|  楼主 | 2021-10-23 23:02 | 只看该作者
GD32F4例程中配置没有找到DMA的配置,不知道是不是DMA造成的数据不一致问题,我单步运行发现发送函数也没有使用DMA发送,不知道为什么会出现乱码,请大家指教。

使用特权

评论回复
板凳
tyw| | 2021-10-24 07:34 | 只看该作者
阿亮之家 发表于 2021-10-23 23:02
GD32F4例程中配置没有找到DMA的配置,不知道是不是DMA造成的数据不一致问题,我单步运行发现发送函数也没有 ...

GD32F4xx_User_Manual_CN_V1.2 1004页 书签版.pdf (21.37 MB)
GD32F4xx_固件库用户指南.pdf (2.98 MB)
21ic下载_GD32F4xxZxT6_Demo板资料包.rar (21.18 MB)

使用特权

评论回复
地板
xing650721| | 2021-10-24 09:04 | 只看该作者
资料下载

使用特权

评论回复
5
阿亮之家|  楼主 | 2021-10-24 09:55 | 只看该作者

你好,这几份资料看完还是不知道哪里出问题了。我现在现象比较怪,开机数据传输正常,跑一会数据就乱码,但是有时候又恢复正常,所以才怀疑是dma数据不统一,但我又没开dma。

使用特权

评论回复
评论
tyw 2021-10-24 10:02 回复TA
少累,木玩过,自已啃资料 
6
6552918| | 2021-10-24 19:59 | 只看该作者
这种问题只能自己挂仿真器一点点跟了

使用特权

评论回复
7
阿亮之家|  楼主 | 2021-10-25 09:11 | 只看该作者
6552918 发表于 2021-10-24 19:59
这种问题只能自己挂仿真器一点点跟了

我跟到发送函数,看了一下发送缓存区数据是对的,不知道为什么串口助手接收的不对。

使用特权

评论回复
8
阿亮之家|  楼主 | 2021-10-25 09:14 | 只看该作者
我工程将系统时钟超频到了400M,这个不知道有没有影响

使用特权

评论回复
9
6552918| | 2021-10-25 10:00 | 只看该作者
阿亮之家 发表于 2021-10-25 09:14
我工程将系统时钟超频到了400M,这个不知道有没有影响

波特率是根据总线时钟计算得到的,你超频,总线时钟就不是原来计算的值,需要修改波特率计算那

使用特权

评论回复
10
vkic007| | 2021-10-25 10:23 | 只看该作者
这种VCP设备。通常都是USB-HOST---->USB-DEVICE------>UART.那么你首先应该看USB-HOST---->USB-DEVICE的数据是否正确,这一段是USB之间的通信。然后在看USB-device转到UART的数据是否正确,最后就开UART出来的数据是否正确。一般情况来看,UART波特率出现问题的可能性比较大,你用示波器确认一下UART通信时的波特率

使用特权

评论回复
11
阿亮之家|  楼主 | 2021-10-26 15:46 | 只看该作者
我测试发现不是波特率的问题,是发送fifo的数据在其它地方被换掉了。

使用特权

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

本版积分规则

3

主题

13

帖子

0

粉丝