查看: 2792|回复: 0

[分享] KL16串口UART实验

[复制链接]
  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
    发表于 2016-6-13 17:08:01 | 显示全部楼层 |阅读模式
    本帖最后由 zhjb1 于 2016-6-13 17:09 编辑

    KL16的UART口采用官方函数设置和应用都非常方便。
    在官方给的案例中有一个文件夹为drv,其中有一个文件为MKL_UART0.c打开后头一个就是UART0Initial函数:void  uart0Init(INT32U ulBaudRate,INT8U ucParityEnable,INT8U ucParityType,INT8U ucDataLength,INT8U ucStopBit)
    此函数需要4个参数带入:INT32U ulBaudRate——32位字节描述的波特率;INT8U ucParityEnable——类型位;INT8U ucDataLength——数据长度位;INT8U ucStopBit——停止位
    影响串口收发的最大的就是波特率。下边是采用改变PLL频率来测试之间的关系,因为牵涉到PLL的倍频分频关系较复杂,就不列出他们之间的关系了。
    实验时采用PLL频率分别为:6MHz、12MHz、24MHz、48MHz、96MHz、100MHz
    在低于24MHz的6、12MHz频率下尽管波特率设置为115200,但在串口的速率中只能设置57600才能得到正确的数据;
    在高于48MHz的96MHz下波特率必须设置的位115200的一半=57600,串口设置为115200结果是正确的;
    在24、48MHZ设置波特率是多少串口也设置同样的值都正确;
    当采用100MHz时,无论设置串口的那个速率均不能获得正确的数据。
    以上实验说明:设置UART的波特率于时钟的关系应该有一个正确的公式,正确了数据无误。按照案例的设置应该无问题——除非晶振的示值与实际相差较大使得波特率误差超出UART的允差范围,就像100MHz一样——当然如果自己找到修改函数中的计算公式应该可以得到正确结果的。
    以下的照片显示了实验的结果。省略了48MHz的。当然声明一下——建议不要在KL16上超频。
    顺序为
    PLL【MHz】 UART【波特率】串口设置【波特率】
    6                115200             57600
    12               115200            57600
    24               115200            115200
    96               57600              115200


    PLL=6_UART=115200=57600.JPG
    PLL=12_UART=115200_57600.JPG
    PLL=24_UART=115200_115200.JPG
    PLL=96_UART=115200_115200.JPG
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-19 05:10 , Processed in 0.086187 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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