打印
[技术问题解答]

KL15在MCG的PBE模式下bus clock是多少?

[复制链接]
4187|40
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wxb18k|  楼主 | 2014-7-2 14:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的程序经过低功耗LLS模式后唤醒,最后进入了PBE模式,这时我的串口uart2发出的数据是乱码,通过测量是波特率变了,uart2的时钟源是bus clock,我想知道在MCG的PBE模式下bus clock是多少?

相关下载

相关帖子

沙发
wxb18k|  楼主 | 2014-7-2 14:45 | 只看该作者
或者这时候要怎么调整波特率呢?

使用特权

评论回复
板凳
wxb18k|  楼主 | 2014-7-2 16:50 | 只看该作者
怎么没有人回我呢?

使用特权

评论回复
地板
wxb18k|  楼主 | 2014-7-2 16:50 | 只看该作者
求助啊!!!!

使用特权

评论回复
5
FSL_TICS_ZJJ| | 2014-7-2 17:02 | 只看该作者
wxb18k 发表于 2014-7-2 14:45
或者这时候要怎么调整波特率呢?

楼主你好。
你的外围晶振是多少M呢?
然后在查看你的OURTDIV1, OUTDIV4就可以计算出来了。

使用特权

评论回复
6
FSL_TICS_ZJJ| | 2014-7-2 17:04 | 只看该作者
而且你的bus clock你也可以把它引到引脚上去测试的,
在SIM_SOPT2[CLKOUTSEL]中有选择bus clock的,可以引到PTC3引脚测试。

使用特权

评论回复
7
wxb18k|  楼主 | 2014-7-2 17:25 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-7-2 17:02
楼主你好。
你的外围晶振是多少M呢?
然后在查看你的OURTDIV1, OUTDIV4就可以计算出来了。

我的外围晶振是8M

使用特权

评论回复
8
wxb18k|  楼主 | 2014-7-2 17:43 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-7-2 17:02
楼主你好。
你的外围晶振是多少M呢?
然后在查看你的OURTDIV1, OUTDIV4就可以计算出来了。

我计算出来是4M,当设置成9600波特率的时候能够正常收发,但是设置成115200的时候就是乱码了,我的程序是:;是不是程序代码错了啊?

123.jpg (42.21 KB )

123.jpg

使用特权

评论回复
9
wxb18k|  楼主 | 2014-7-3 08:57 | 只看该作者
求解释啊!

使用特权

评论回复
10
wxb18k|  楼主 | 2014-7-3 09:45 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-7-2 17:04
而且你的bus clock你也可以把它引到引脚上去测试的,
在SIM_SOPT2[CLKOUTSEL]中有选择bus clock的,可以引 ...

设置了,但是PTC3没输出

使用特权

评论回复
11
FSL_TICS_ZJJ| | 2014-7-3 10:31 | 只看该作者
wxb18k 发表于 2014-7-3 09:45
设置了,但是PTC3没输出

你PTC3的alt选择对了没有?
在相应的PORT中设置?

使用特权

评论回复
12
wxb18k|  楼主 | 2014-7-3 10:36 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-7-3 10:31
你PTC3的alt选择对了没有?
在相应的PORT中设置?

我不知道在哪里设置啊

使用特权

评论回复
13
wxb18k|  楼主 | 2014-7-3 10:40 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-7-3 10:31
你PTC3的alt选择对了没有?
在相应的PORT中设置?

不好意思,我知道怎么设置了,没反应过来

使用特权

评论回复
14
wxb18k|  楼主 | 2014-7-3 10:52 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-7-3 10:31
你PTC3的alt选择对了没有?
在相应的PORT中设置?

用示波器看了,是4MHZ,但是为什么我的波特率115200会不对呢?难道我的算法错了?

使用特权

评论回复
15
FSL_TICS_ZJJ| | 2014-7-3 11:02 | 只看该作者
本帖最后由 FSL_TICS_ZJJ 于 2014-7-3 11:04 编辑
wxb18k 发表于 2014-7-3 10:52
用示波器看了,是4MHZ,但是为什么我的波特率115200会不对呢?难道我的算法错了? ...


应该是计算结果有些偏差导致的。
你看看你寄存器的 SBR是多少了呢?
再带回算下看看波特率是多少。

使用特权

评论回复
16
FSL_TICS_ZJJ| | 2014-7-3 11:23 | 只看该作者
楼主你好,按照4M的bus你计算出来的波特率偏差实在太大,就不会达到115200,你是一定要工作在PBE模式下吗?
一般情况下,我们从低功耗唤醒,会再经过时钟模式转换,把PBE转到PEE,这样再配置下UART你就能工作了,在我们的KL25低功耗的例程中也有相关的转换你可以参考下。
如果没有特殊要求工作在PBE,还是转过来呢。

使用特权

评论回复
17
wxb18k|  楼主 | 2014-7-3 11:24 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-7-3 11:02
应该是计算结果有些偏差导致的。
你看看你寄存器的 SBR是多少了呢?
再带回算下看看波特率是多少。 ...

SBR是0x02,算出的波特率是125000,那怎样才能设置正确啊?貌似当SBR是1和3计算出来的波特率都不符合啊,怎么办?

使用特权

评论回复
18
FSL_TICS_ZJJ| | 2014-7-3 11:24 | 只看该作者
wxb18k 发表于 2014-7-3 11:24
SBR是0x02,算出的波特率是125000,那怎样才能设置正确啊?貌似当SBR是1和3计算出来的波特率都不符合啊, ...

是的,所以是时钟模式要转一下,你把时钟模式转到PEE,然后在重新初始化下uart就好了。

使用特权

评论回复
19
FSL_TICS_ZJJ| | 2014-7-3 11:25 | 只看该作者
是的,所以你要把时钟模式转下,从PBE转到PEE,然后在重新初始化下UART就可以了。

使用特权

评论回复
20
FSL_TICS_ZJJ| | 2014-7-3 11:26 | 只看该作者
                      op_mode = what_mcg_mode();
                      if(op_mode==PBE)
                      {
                          mcg_clk_hz = pbe_pee(CLK0_FREQ_HZ);
                          uart0_clk_khz = ((mcg_clk_hz / 2) / 1000); // UART0 clock frequency will equal half the PLL frequency
                          uart_configure(uart0_clk_khz,SIM_SOPT2_UART0SRC(1));
                      }

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

140

帖子

1

粉丝