查看: 1942|回复: 2

[已解决] kl16 uart2

[复制链接]

该用户从未签到

12

主题

54

帖子

0

注册会员

Rank: 2

积分
142
最后登录
2019-7-8
发表于 2016-12-1 11:59:55 | 显示全部楼层 |阅读模式
我在将KL16总线时钟配置为8MHZ时,uart2的波特率是没法配置为115200的,误差太大了。总线时钟配置为24M时,是可以的。有办法在配置为8M时使用UART2的115200串口吗?

最佳答案

楼主你好! 在UART2中,8Mhz的bus时钟配不出115200的波特率。 原因如下: 波特率计算公式是: Baud Rate = UART Module Clock/(SBR[12:0] × 16); 所以如果要获得115200波特率。 则, SBR[12:0]=8MHZ/(115200*16)=4 ...
回复

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24861
最后登录
2025-7-18
发表于 2016-12-1 12:34:02 | 显示全部楼层
楼主你好!
在UART2中,8Mhz的bus时钟配不出115200的波特率。
原因如下:
波特率计算公式是: Baud Rate = UART Module Clock/(SBR[12:0] × 16);
所以如果要获得115200波特率。
则, SBR[12:0]=8MHZ/(115200*16)=4.3, 因为寄存器不能取小数,所以要么取4, 要么取5.
取4: 实际波特率=8Mhz/(4*16) = 125000, 误差率为8.5%
取5:实际波特率=8Mhz/(5*16) = 100000,误差率为13.1%
通常,能够正常工作的误差率为1.5%,所以通过修改SBR不能达到合适的115200波特率。
而公式中,除了SBR,就只能改变UART module clock, UART2的时钟是BUS clock,所以你只能修改bus clock了。
要么就是换波特率。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16697
    最后登录
    1970-1-1
    发表于 2016-12-1 13:33:54 | 显示全部楼层
    原来如此
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-18 22:16 , Processed in 0.094842 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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