[技术问答] 关于华大L136串口通信波特率问题,提高波特率数据就错乱...

[复制链接]
2246|10
 楼主| singleyork 发表于 2020-7-13 13:52 | 显示全部楼层 |阅读模式
本帖最后由 singleyork 于 2020-7-13 13:55 编辑

如图,用的SDK中的uart_poll这个例程,当波特率为9600,工作模式为1或者3时,数据收发正常:

01.png

同样为串口1或者3时,波特率设置为57600,数据收发就不对了(同样也试过115200波特,问题依旧):

02.png

所使用的开发板为下面这款:

03.jpg
板子上使用的是32MHz的晶振:

04.png

那么问题来了?是MCU本身波特率误差太大了吗?还是程序中要做其他修改?



评论

@eelux :如果使用内部22.12MHz晶振,程序中要怎么切换?  发表于 2020-7-13 14:41
工业级常用波特率,推荐使用内部22.12MHz, 其他主频并非同时满足所有波特率的整数倍,因此某些波特率会有计算误差  发表于 2020-7-13 14:24
martinhu 发表于 2020-7-13 15:10 | 显示全部楼层
你用的时钟频率是多少?如果是默认4M,不会支持所有串口波特率
 楼主| singleyork 发表于 2020-7-13 15:12 | 显示全部楼层
martinhu 发表于 2020-7-13 15:10
你用的时钟频率是多少?如果是默认4M,不会支持所有串口波特率

默认的例程,应该用的是4M的吧,但是不知道怎么切换到22.14

评论

用户手册里有切换步骤啊,Sysctrl的switch例子也有切换的样例  发表于 2020-7-14 16:33
yy_yanyu 发表于 2020-7-13 17:40 | 显示全部楼层
我调试用的2M 也没错误。。
 楼主| singleyork 发表于 2020-7-14 11:24 | 显示全部楼层
yy_yanyu 发表于 2020-7-13 17:40
我调试用的2M 也没错误。。

你说的是晶振用的2M还是波特率?波特率的话,用32M晶振,2Mbps误差本来就是0
qjp1988113 发表于 2020-7-14 12:48 | 显示全部楼层
这个板子我也有啊,115200正常啊!
 楼主| singleyork 发表于 2020-7-15 10:30 | 显示全部楼层
qjp1988113 发表于 2020-7-14 12:48
这个板子我也有啊,115200正常啊!

可以发一下源代码给我参考一下嘛?谢谢:121377715@qq.com
739114505 发表于 2021-3-23 21:08 | 显示全部楼层
可以发一下源代码给我参考一下嘛?谢谢:739114505@qq.com   谢谢大佬
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

41

帖子

1

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