KW41Z 时钟
其实freescale的mcu不算复杂,它的工具也一直做的很不错。前面的帖子里有说到CodeWarrior提供一个强大的Processor Expert工具。PE工具也延续到后面的IDE产品。虽然KW41Z发布已经有半年时间,不过可惜的是近期发布的KDS和MCUXpresso Config Tools都不支持KW41Z。要等官方工具支持的话,依照nxp一贯的慢性,可能活动结束了都还推不出来。图形化工具和配置器实在是太方便,以至于没有这些工具而要人纯手工码的话,想想就是一个没有动力的事情。
不过还好,无意中翻到老版的SDK1.3有对KW40的支持,而简单对比了一下,KW40和KW41几乎可以认为是一个相同的core,只在rf部分有差异,并且pin2pin。也就是说,虽然不能由工具直接生成KW41Z的东西,可生成的KW40的文件几乎可以无修改的Ctrl+C过去使用。这倒是一个很简便的折中。
也借这个图形工具简单说说KW41的时钟系统。
1、首先自然是要安装SDK1.3和KDS了。KINETIS-SDK要在这里去找,而不是mcuxpresso.nxp.com,如下面的图。打开之后在归档旧版里下载SDK1.3 mainline 。


2、然后是安装KDS_IDE,这个安装很直接,就不截图了。
3、整合SDK和IDE。在SDK的安装目录下找到下图的zip文件。

然后打开KDS,安装插件,如:



下一步直接安装,重启即可。
4、然后我们新建一个项目,项目名字随便:

因为安装了SDK1.3,因此可以找到KW40Z了。

如下选择PE配置,然后可以下一步或者直接Finish。

其实就要的是这个。。。

这里默认的界面显示的是KW40Z的引脚分布与配置。
5、时钟

点击时钟管理组件,右边切换成时钟配置。

到这步,我们知道该在哪里配置时钟。后面自然是如何填入正确的值。
6、KW41/40Z器件时钟的样子。


KW40/1Z的用户手册里,彩色的,基本就是大学一年级数字电路的样子,细节就不解释了,不是选择就是通路。总之最后要的是所谓的Core Clock,System Clock,Bus Clock等输出。
内部时钟32.768慢时钟和4M时钟可以输进去到上面的配置了。修正值不知道就不管吧。
外部时钟配置,在frdm kw41z的原理图里。

32.768K和32M的晶振都有安装。


外部有RTC晶振,没有RTC时钟。外部晶振。

7、时钟控制
以上设置完毕基础时钟的输入,现在需要做的是配置出最终需要的时钟输出。

根据KW40/1Z的时钟框图,我们可以同时配置多种时钟的输入输出组合,用于不同的外设,用在不同功耗场合。当然,如果为了没那么复杂或者省事,只配置一种组合是完全可以的。
这里以正常主时钟为例,简单看看哪些配置项。

鼠标停留一小会,有选型解释。
如果配置有错误,PE会用红色错误提示,比如下


不轻易的让你出错,这点还是挺方便。
最后配出来的系统主时钟是

默认使用正常主时钟。

8、咋用呢?
比如我们添加一个spi

双击之后添加在项目中。
在项目中再双击之后,出现spi的属性

红色的是不满足需要的配置,这里的意思是我们没有指定SPI速度。好的,我们搞个1MHz进去好了。

,右边的…点击之后出现可选速度列表。

还可以同时把pin选了。

弄了半天就为这个时钟选择

9、最后一步
也就是生成代码。

回到文件视图里,找到生成代码
