[技术问题解答] KL15在MCG的PBE模式下bus clock是多少?

[复制链接]
4822|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 | 显示全部楼层
求助啊!!!!
FSL_TICS_ZJJ 发表于 2014-7-2 17:02 | 显示全部楼层
wxb18k 发表于 2014-7-2 14:45
或者这时候要怎么调整波特率呢?

楼主你好。
你的外围晶振是多少M呢?
然后在查看你的OURTDIV1, OUTDIV4就可以计算出来了。
48.jpg
FSL_TICS_ZJJ 发表于 2014-7-2 17:04 | 显示全部楼层
而且你的bus clock你也可以把它引到引脚上去测试的,
在SIM_SOPT2[CLKOUTSEL]中有选择bus clock的,可以引到PTC3引脚测试。
 楼主| wxb18k 发表于 2014-7-2 17:25 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-7-2 17:02
楼主你好。
你的外围晶振是多少M呢?
然后在查看你的OURTDIV1, OUTDIV4就可以计算出来了。

我的外围晶振是8M
 楼主| wxb18k 发表于 2014-7-2 17:43 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-7-2 17:02
楼主你好。
你的外围晶振是多少M呢?
然后在查看你的OURTDIV1, OUTDIV4就可以计算出来了。

我计算出来是4M,当设置成9600波特率的时候能够正常收发,但是设置成115200的时候就是乱码了,我的程序是:;是不是程序代码错了啊?
123.jpg
 楼主| wxb18k 发表于 2014-7-3 08:57 | 显示全部楼层
求解释啊!
 楼主| wxb18k 发表于 2014-7-3 09:45 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-7-2 17:04
而且你的bus clock你也可以把它引到引脚上去测试的,
在SIM_SOPT2[CLKOUTSEL]中有选择bus clock的,可以引 ...

设置了,但是PTC3没输出
FSL_TICS_ZJJ 发表于 2014-7-3 10:31 | 显示全部楼层
wxb18k 发表于 2014-7-3 09:45
设置了,但是PTC3没输出

你PTC3的alt选择对了没有?
在相应的PORT中设置?
 楼主| wxb18k 发表于 2014-7-3 10:36 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-7-3 10:31
你PTC3的alt选择对了没有?
在相应的PORT中设置?

我不知道在哪里设置啊
 楼主| wxb18k 发表于 2014-7-3 10:40 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-7-3 10:31
你PTC3的alt选择对了没有?
在相应的PORT中设置?

不好意思,我知道怎么设置了,没反应过来
 楼主| wxb18k 发表于 2014-7-3 10:52 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-7-3 10:31
你PTC3的alt选择对了没有?
在相应的PORT中设置?

用示波器看了,是4MHZ,但是为什么我的波特率115200会不对呢?难道我的算法错了?
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是多少了呢?
再带回算下看看波特率是多少。
FSL_TICS_ZJJ 发表于 2014-7-3 11:23 | 显示全部楼层
楼主你好,按照4M的bus你计算出来的波特率偏差实在太大,就不会达到115200,你是一定要工作在PBE模式下吗?
一般情况下,我们从低功耗唤醒,会再经过时钟模式转换,把PBE转到PEE,这样再配置下UART你就能工作了,在我们的KL25低功耗的例程中也有相关的转换你可以参考下。
如果没有特殊要求工作在PBE,还是转过来呢。
 楼主| wxb18k 发表于 2014-7-3 11:24 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-7-3 11:02
应该是计算结果有些偏差导致的。
你看看你寄存器的 SBR是多少了呢?
再带回算下看看波特率是多少。 ...

SBR是0x02,算出的波特率是125000,那怎样才能设置正确啊?貌似当SBR是1和3计算出来的波特率都不符合啊,怎么办?
FSL_TICS_ZJJ 发表于 2014-7-3 11:24 | 显示全部楼层
wxb18k 发表于 2014-7-3 11:24
SBR是0x02,算出的波特率是125000,那怎样才能设置正确啊?貌似当SBR是1和3计算出来的波特率都不符合啊, ...

是的,所以是时钟模式要转一下,你把时钟模式转到PEE,然后在重新初始化下uart就好了。
FSL_TICS_ZJJ 发表于 2014-7-3 11:25 | 显示全部楼层
是的,所以你要把时钟模式转下,从PBE转到PEE,然后在重新初始化下UART就可以了。
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

粉丝
快速回复 在线客服 返回列表 返回顶部