查看: 5853|回复: 11

[求助] 提高K60 串口传输速率后,数据出现乱码是什么原因?

[复制链接]

该用户从未签到

29

主题

104

帖子

0

中级会员

Rank: 3Rank: 3

积分
355
最后登录
2019-1-28
发表于 2016-3-28 15:38:34 | 显示全部楼层 |阅读模式
在用K60的UART模块进行数据传输时,串口的UART模块的传输速率跟什么有关系呢?在低波特率下,例如115200bps时,数据能够正常收发且没有误码,如下图: 正确.png
但是当波特率提高到691200bps时,通过串口助手可以看到有数据输出,但是数据是乱码的,如下图:
乱码.png
导致这种现象可能的原因有那些呢?或者说我怎样才能使串口在高波特率下通信时没有误码呢?首先硬件的问题我已经排除,我用的是K60的UART0模块,根据计算,理论上该串口的传输速率最大可达6.25Mbps,另外,我所使用的USB转串口,曾经在2Mbps的通信速率下也没有问题,所以也排除了USB转串口的问题,串口助手的最大通信波特率可以设置到8M,串口助手的问题也已排除,剩下的就只有是程序的问题了,程序应该怎样写,才能保证在高波特率下,通信正确呢?我现在程序中使用的是中断方式接收数据,每接收100个字节的数据,就向外发出10个字节。表示数据通信正常。




我知道答案 目前已有11人回答
回复

使用道具 举报

该用户从未签到

723

主题

6382

帖子

0

超级版主

Rank: 8Rank: 8

积分
25491
最后登录
2025-9-9
发表于 2016-3-28 17:07:54 | 显示全部楼层
速度变高越容易受干扰,还有你可以算算波特率和实际的波特率的误差率是否过大,这时你可以考虑跟换UART时钟源或者重新配置一个系统时钟以求取误差率降低
回复 支持 反对

使用道具 举报

该用户从未签到

29

主题

104

帖子

0

中级会员

Rank: 3Rank: 3

积分
355
最后登录
2019-1-28
 楼主| 发表于 2016-3-28 17:32:09 | 显示全部楼层
小恩GG 发表于 2016-3-28 17:07
速度变高越容易受干扰,还有你可以算算波特率和实际的波特率的误差率是否过大,这时你可以考虑跟换UART时钟 ...

好的,多谢指点。另外,我还想请教下,这个数据传输的时候跟协议有没有关系呢?就是说我自定义一个协议进行数据传输,这样数据在高波特率传输的时候会不会可靠些?我现在的数据传输方式就是最基本的收发数据,没用采用协议打包的方式。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2020-5-24 10:39
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    140

    主题

    2087

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3913
    最后登录
    2020-5-24
    发表于 2016-3-28 21:24:55 | 显示全部楼层
    类似布线高频信号的干扰
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    28

    帖子

    0

    注册会员

    Rank: 2

    积分
    99
    最后登录
    2020-10-22
    发表于 2016-3-29 08:31:22 | 显示全部楼层
    干扰或者是跟串口的时钟频率有关系,示波器抓一下波形
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-5-3 11:19
  • 签到天数: 10 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    50

    主题

    1万

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    14090
    最后登录
    2024-4-19
    发表于 2016-3-29 09:30:14 | 显示全部楼层
    时钟不准确,我遇到过。 0.png 1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    723

    主题

    6382

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    25491
    最后登录
    2025-9-9
    发表于 2016-3-29 09:32:41 | 显示全部楼层
    天天都有好心情 发表于 2016-3-28 17:32
    好的,多谢指点。另外,我还想请教下,这个数据传输的时候跟协议有没有关系呢?就是说我自定义一个协议进 ...

    传输的方式肯定按照UART串口通信的格式来,至于你说的协议,我的理解是不是有点像bootloader数据传输中的应用,比如在有效数据传输之前,添加0xAA或者0x55等标志字节,接收端识别后才开始接收数据,然后在末尾也设置类似的标志字节表明数据传输完成。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    29

    主题

    104

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    355
    最后登录
    2019-1-28
     楼主| 发表于 2016-3-29 09:54:09 | 显示全部楼层
    本帖最后由 天天都有好心情 于 2016-3-29 10:05 编辑
    小恩GG 发表于 2016-3-29 09:32
    传输的方式肯定按照UART串口通信的格式来,至于你说的协议,我的理解是不是有点像bootloader数据传输中的 ...

    恩恩,您说的非常对,因为我要用RS-485接口进行多机通信,所以要自定义一个RS-485通信协议,让数据按帧协议进行传输,也就是您说的在有效数据前后加上帧头帧尾来进行识别,这样的话能不能保证数据在高波特率下不乱码呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    29

    主题

    104

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    355
    最后登录
    2019-1-28
     楼主| 发表于 2016-3-29 10:05:21 | 显示全部楼层
    本帖最后由 天天都有好心情 于 2016-3-29 10:11 编辑
    党国特派员 发表于 2016-3-29 09:30
    时钟不准确,我遇到过。

    您好,能麻烦您再进一步解释一下吗?您说的时钟是指给UART模块提供的时钟吗?这个我没有改动,我看配置里面说的是UART0和UART1使用的是系统时钟100MHZ,UART2~UART5使用的是总线时钟50MHZ,这个时钟参数我需要改动吗?我现在使用的是UART0进行的通信。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    723

    主题

    6382

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    25491
    最后登录
    2025-9-9
    发表于 2016-3-29 11:22:56 | 显示全部楼层
    天天都有好心情 发表于 2016-3-29 09:54
    恩恩,您说的非常对,因为我要用RS-485接口进行多机通信,所以要自定义一个RS-485通信协议,让数据按帧协 ...

    自定义485标准,这都是已经行业内定义好的通信协议,我表示不是很理解
    前一个回复所说的通信协议更像是一种握手协议,用以识别数据接收,他不能去除乱码,要去除乱码我觉得你需要从硬件设计和波特率配置两方面去找问题。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-11 01:34 , Processed in 0.109283 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表