查看: 1623|回复: 3

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

[复制链接]
  • TA的每日心情

    4 天前
  • 签到天数: 1481 天

    [LV.10]以坛为家III

    203

    主题

    2万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    92877
    最后登录
    2024-4-30
    发表于 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, 下载次数: 11)
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 1336 天

    [LV.10]以坛为家III

    88

    主题

    4293

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

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

    使用道具 举报

  • TA的每日心情
    开心
    5 天前
  • 签到天数: 148 天

    [LV.7]常住居民III

    10

    主题

    387

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

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

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

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

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-5-4 11:01 , Processed in 0.119609 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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