查看: 4345|回复: 9

[求助] KL16 UART2配置问题

[复制链接]

该用户从未签到

4

主题

18

帖子

0

注册会员

Rank: 2

积分
98
最后登录
2016-10-18
发表于 2016-4-23 20:35:03 | 显示全部楼层 |阅读模式
开发环境 IAR+KSDK1.3
    CLOCK_SYS_EnablePortClock(PORTD_IDX);
    PORT_HAL_SetMuxMode(PORTD,2u,kPortMuxAlt3);
    PORT_HAL_SetMuxMode(PORTD,5u,kPortMuxAlt3);
    uart_user_config_t uartConfig;
    uartConfig.baudRate = 115200;
    uartConfig.bitCountPerChar = kUart8BitsPerChar;
    uartConfig.parityMode = kUartParityDisabled;
    uartConfig.stopBitCount = kUartOneStopBit;
    uart_state_t uartState;
    UART_DRV_Init(2, &uartState, &uartConfig);
应该配置为115200-8-N-1
实际测试 配置9600 19200 38400 57600都正常 115200有波形,但频率不正确
请问该如何配置呢

我知道答案 目前已有9人回答
回复

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24871
最后登录
2025-7-18
发表于 2016-4-25 09:52:47 | 显示全部楼层
楼主你好!
115200bps你那边测下来,偏了多少?
回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

18

帖子

0

注册会员

Rank: 2

积分
98
最后登录
2016-10-18
 楼主| 发表于 2016-4-25 14:56:12 | 显示全部楼层
本帖最后由 冬天的风 于 2016-4-25 14:57 编辑
小恩GG 发表于 2016-4-25 09:52
楼主你好!
115200bps你那边测下来,偏了多少?

我们实测
0xf0的上升时间是40us
所以一个uint8占用时间是80us
计算下来的话应该合11111bps吧
回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

18

帖子

0

注册会员

Rank: 2

积分
98
最后登录
2016-10-18
 楼主| 发表于 2016-4-25 15:00:56 | 显示全部楼层
另外在fsl_clock_MKL16Z4文件中
函数
uint32_t CLOCK_SYS_GetUartFreq(uint32_t instance)
{
    uint32_t freq = 0;

    switch (instance)
    {
    case 0:
    case 1:
    case 2:
        freq = CLOCK_SYS_GetBusClockFreq();
        break;
    default:
            freq = 0U;
        break;
    }

    return freq;
}
这个也不太正确吧,根据手册 UART0和UART1 2用的不是同一个时钟
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24871
最后登录
2025-7-18
发表于 2016-4-25 16:28:28 | 显示全部楼层
冬天的风 发表于 2016-4-25 14:56
我们实测
0xf0的上升时间是40us
所以一个uint8占用时间是80us

误差大于1.5%了,这个要重新配下。
UART0,1,2用的时钟都是bus时钟。
你现在系统时钟源用的是外部时钟,还是内部时钟?
我待会看下KSDK1.3.0,并测试下。
回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

18

帖子

0

注册会员

Rank: 2

积分
98
最后登录
2016-10-18
 楼主| 发表于 2016-4-25 16:49:04 | 显示全部楼层
小恩GG 发表于 2016-4-25 16:28
误差大于1.5%了,这个要重新配下。
UART0,1,2用的时钟都是bus时钟。
你现在系统时钟源用的是外部时钟, ...

使用的FRDM-KL26Z开发板测试
应该用的是8M的外部时钟
回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

18

帖子

0

注册会员

Rank: 2

积分
98
最后登录
2016-10-18
 楼主| 发表于 2016-4-25 16:51:29 | 显示全部楼层
小恩GG 发表于 2016-4-25 16:28
误差大于1.5%了,这个要重新配下。
UART0,1,2用的时钟都是bus时钟。
你现在系统时钟源用的是外部时钟, ...

另外,根据我在KL16 RM手册上看到的波特率发生器好像确实不相同
UART0:
UART0.PNG
UART1、2:
UART12.PNG
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24871
最后登录
2025-7-18
发表于 2016-4-26 10:46:56 | 显示全部楼层
冬天的风 发表于 2016-4-25 16:51
另外,根据我在KL16 RM手册上看到的波特率发生器好像确实不相同
UART0:

对的,结构计算公式是一不一样的,时钟源是一样的。
所以,你可以通过计算公式算一个最接近115200的数据出来。
回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

18

帖子

0

注册会员

Rank: 2

积分
98
最后登录
2016-10-18
 楼主| 发表于 2016-4-26 11:01:06 | 显示全部楼层
小恩GG 发表于 2016-4-26 10:46
对的,结构计算公式是一不一样的,时钟源是一样的。
所以,你可以通过计算公式算一个最接近115200的数据 ...

这样,好的了解了
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24871
最后登录
2025-7-18
发表于 2016-4-26 18:27:55 | 显示全部楼层

你先配置下看看,我后面有空这边也会检查下,暂时比较忙,所以你可以自己尝试修改寄存器。
调试过程中遇到任何问题,都跟帖出来。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-7-19 19:45 , Processed in 0.112557 second(s), 31 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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