查看: 4646|回复: 3

[原创] 关于LPC54xx系列串口波特率配置的计算

[复制链接]
  • TA的每日心情
    奋斗
    5 天前
  • 签到天数: 1849 天

    连续签到: 4 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112633
    最后登录
    2025-7-22
    发表于 2021-9-3 14:21:38 | 显示全部楼层 |阅读模式
    本帖最后由 stm1024 于 2021-9-4 21:49 编辑

    众所周知,UART可以说是玩LPC永远少不了的一个外设,在通讯或者调试的时候会经常用到,在使用串口时,必然会有个波特率配置的问题。
    以LPC54xx系列为例,UM上的说明如下:
    1.png

    2.png
    大致意思是,先配置Flexcomm的Fclk,这个通常是12MHz,然后配置USART的寄存器BRG(Baud Generator Register)和OSR(oversample selection register)的参数。公式写的很明白。
    不过为了凑出需要的波特率,数字组合就很多了,BRGVAL的取值可以是1~65536,OSRVAL的值可以是5~16,如何选择组合,给出波特率误差最小的值,对通讯稳定性还是很有帮助的,为此干脆写了一个简单的搜搜程序,计算在期望波特率情况下,使用何种数据组合,算出来的误差最小;
    这个是几个波特率的计算结果:
    2021-09-03_141726.png
    115200给出的结果,和UM手册上一致: 2021-09-03_142415.png
    这里算出来的是BRGVAL和OSRVAL,如果操作寄存器的话,实际上需要把该值减去1,例如配置为115200时:
    USART0->BRG=7;
    USART0->OSR=12;

    程序用C#写的,简单粗暴。代码见附件: LPCBRS.zip (185.41 KB, 下载次数: 13)
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-6-10 23:03
  • 签到天数: 1502 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    97

    主题

    4688

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    10080
    最后登录
    2025-7-2
    发表于 2021-9-3 14:40:20 | 显示全部楼层
    楼主这个厉害了。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-5-15 09:29
  • 签到天数: 178 天

    连续签到: 1 天

    [LV.7]常住居民III

    11

    主题

    423

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    1392
    最后登录
    2025-5-15
    发表于 2021-9-6 12:15:11 | 显示全部楼层
    好东东。。。。。
    加油加油
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    38
    最后登录
    2024-4-14
    发表于 2023-10-20 19:15:59 | 显示全部楼层
    谢谢分享
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-27 20:28 , Processed in 0.089862 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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