[技术讨论] GD32F450使用USB虚拟串口,发送乱码问题

[复制链接]
 楼主| 阿亮之家 发表于 2021-10-23 22:59 | 显示全部楼层 |阅读模式
本帖最后由 阿亮之家 于 2021-10-23 22:59 编辑

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 阿亮之家 发表于 2021-10-23 23:02 | 显示全部楼层
GD32F4例程中配置没有找到DMA的配置,不知道是不是DMA造成的数据不一致问题,我单步运行发现发送函数也没有使用DMA发送,不知道为什么会出现乱码,请大家指教。
tyw 发表于 2021-10-24 07:34 | 显示全部楼层
阿亮之家 发表于 2021-10-23 23:02
GD32F4例程中配置没有找到DMA的配置,不知道是不是DMA造成的数据不一致问题,我单步运行发现发送函数也没有 ...





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
xing650721 发表于 2021-10-24 09:04 来自手机 | 显示全部楼层
资料下载
 楼主| 阿亮之家 发表于 2021-10-24 09:55 | 显示全部楼层

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

评论

tyw
少累,木玩过,自已啃资料  发表于 2021-10-24 10:02
6552918 发表于 2021-10-24 19:59 | 显示全部楼层
这种问题只能自己挂仿真器一点点跟了
 楼主| 阿亮之家 发表于 2021-10-25 09:11 | 显示全部楼层
6552918 发表于 2021-10-24 19:59
这种问题只能自己挂仿真器一点点跟了

我跟到发送函数,看了一下发送缓存区数据是对的,不知道为什么串口助手接收的不对。
 楼主| 阿亮之家 发表于 2021-10-25 09:14 | 显示全部楼层
我工程将系统时钟超频到了400M,这个不知道有没有影响
6552918 发表于 2021-10-25 10:00 | 显示全部楼层
阿亮之家 发表于 2021-10-25 09:14
我工程将系统时钟超频到了400M,这个不知道有没有影响

波特率是根据总线时钟计算得到的,你超频,总线时钟就不是原来计算的值,需要修改波特率计算那
vkic007 发表于 2021-10-25 10:23 | 显示全部楼层
这种VCP设备。通常都是USB-HOST---->USB-DEVICE------>UART.那么你首先应该看USB-HOST---->USB-DEVICE的数据是否正确,这一段是USB之间的通信。然后在看USB-device转到UART的数据是否正确,最后就开UART出来的数据是否正确。一般情况来看,UART波特率出现问题的可能性比较大,你用示波器确认一下UART通信时的波特率
 楼主| 阿亮之家 发表于 2021-10-26 15:46 | 显示全部楼层
我测试发现不是波特率的问题,是发送fifo的数据在其它地方被换掉了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

13

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部