在线时间613 小时
UID252169
注册时间2010-12-5
NXP金币0
TA的每日心情 | 开心 2019-2-14 16:49 |
---|
签到天数: 296 天 连续签到: 1 天 [LV.8]以坛为家I
金牌会员
 
- 积分
- 4473
- 最后登录
- 2020-4-14
|
本帖最后由 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
|
|