【原创】从零入手Kinetis系统开发(二)
0赞经过了上一篇的一阵啰嗦的准备,呵呵,该有的硬件和软件开发环境已经选择好了,下面该是我们大展身手的时候了。。。废话不多说了,首先想先以自己的理解分析介绍下飞思卡尔官方提供的k60最小系统的硬件电路和IAR例程的编程结构,这个很重要,先学学人家的在创新自己的(汗,不知不觉走上了中国制造思想的这条路,先模仿再超越,至于能不能超越???未知,呵呵)。
说的这里我还想提一下,我在这里想分享的不仅仅是自己的开发过程和以后可能的一些代码(当然这部分很重要,想得到一些高手们的一些意见和交流),而是更重要的想分享给徘徊在初学者阶段的人学习一款新片子的完整流程也就是学习方法,授人以“渔”才是王道,呵呵,虽然这个流程我时至今日还在摸索完善,但是期望能给他们一些启发,因为身为一个搞电子的学生,都是从那一步走过来的,我深知其中的艰辛和渴望有人指点的迫切。至于这个流程,呵呵,随着本系列的深入,我相信会体会出来的~
言归正传,首先介绍下FSL塔式结构的K60最小系统板子上的资源,上图:
从图上我们可以看到,它几乎把K60的资源全部引出来了,原理图在附件:
1、电源部分,USB供电,经过LDO转成3.3v,这里重点提一下,其实可以不用LDO而是采用K60自带的USB电压调节器,5v输入电压调节器输入端(VREGIN),输出(VOUT33)3.3v以供芯片工作,我上篇的板子就是这样用的,飞思卡尔显然也考虑到了,所以加了跳线选择;
2、时钟部分,50MHz有源晶振,32768Hz实时时钟(RTC)。其中主时钟输入如果用到以太网模块的话需要引出,因为以太网的PHY和K60需要同相,很重要;至于RTC,供电VBAT则可以使用外部电源3.3v也可接纽扣电池,掉电保存;
3、加速度传感器MMA7660,官方有个DEMO例程有个小应用用到它,还是挺好玩的,可以做些姿态感知;
4、ADC,外接一个电位器,貌似这都快成为一个最小系统的(括弧:测试用的)的标配了,呵呵,用来测试AD模块的,官方例程有介绍;
5、TSI,个人觉着FSL很好的一个资源,集成了电容触摸功能,在当下电容触摸红红火火的时候,这个飞思卡尔没有落下,挺好,呵呵;
6、LED灯,这个也是标配了(想起了跑马灯,流水灯,呵呵,真怀念,哈哈),测试GPIO用;
7、SD卡驱动,人家是正经的SD模式驱动,可不像俺以前搞的SPI模式(速度不是很快,还不稳,哎);
8、infrared port,红外调制模块。
9 。。。。。。(待加)
下面以飞思卡尔官方提供的在IAR环境下的GPIO例程为例,分析下编程结构,注意是分析飞思卡尔的编程结构,而不是逐行讲程序,因为我觉着熟悉一个开发环境工具,首先就要熟悉它的工程构架和风格,然后编辑编译连接代码,功能设置,下载调试等等,最后这才敢说叫掌握一种开发环境,这才敢以后毕业写在简历上呢,呵呵。。。再上图:
如上图,官方的例程一般都是K60和K40平台的两种,这里我们通过选择左侧工程窗口的选项卡选择K60平台,然后选择FLASH_512K_PFLASH配置模式,这是随便选择的,呵呵,其实这个配置模式还是很重要的,这个会在下次重点介绍下,下面分别介绍下每个工作组。
1、common工作组
这个工作组的文件比较杂,这里挑几个重要的以后会用到的说一下。首先startup两个文件,可以直接就猜到,这个启动代码有关的文件,其实这个文件只包括了RAM区的初始化即把向量表和一些数据放到RAM区,所以是不全的,以后我会单独写一篇有关启动代码部分的,而且最后把启动部分都归到一个文件里;然后就是printf.c文件,用在终端交互上;最后就是common.h文件了,也是最重要的头文件了,你会发现几乎每个模块都加载了这个头文件,而且你也会发现你翻遍了这几个工作组文件都没找的K60的头文件,应为它们都在这个文件里加载了,这个需要引起足够的重视。至于其他的文件以后用到再分析。
2、cpu文件组
这个文件组涉及到了M4核文件arm_cm4,启动文件crt0.s、start.c、sysinit.c和向量表文件vectors.c。这几个文件都很重要,其中M4核文件包括了一些有关NVIC即中断模块的应用函数,例如使能和禁止IRQ中断,设置中断优先级等,至于启动部分都会统一在后面系列介绍,至于vectors文件则是缺省的向量表文件,这个以后用到中断设置的时候会用到,很重要。
3、drivers文件组
这是驱动部分文件组,这个例程只写了三个部分的驱动,即多时钟产生器(MCG),异步串行通信(UART),看门狗(wdog)。这个文件组主要就是放置K60资源的驱动代码,这里只有三个,因为例程里只用到了这三个模块,可以直接调用其内部子函数。
4、IAR文件组
这个文件组为IAR环境的配置模式文件组,每个icf文件代表一种配置模式,其内部对K60内存映射做了相应的的分配,从每个文件名就可以看出其含义,具体区别和分析,将在下系列做详细的介绍。
5、platforms文件组
这个是平台文件组,内部包括了跟相应平台相关的硬件配置定义。像这个例程,就包括了UART通信端口和波特率的定义和系统全局时钟的定义。
6、project文件组
这个才是我们最喜欢的真正“main”文件组了,呵呵,把gpio_k60.c当成main.c就是了。我们在工程开发相关的文件可以放到这个文件组里,这个例程是实现K60的GPIO功能,所以添加了gpio_k60.c文件。另外isr.h文件则是编写中断服务程序需要用到的头文件了,里面定义了所需中断的中断向量和中断服务程序的声明。
7、output文件组
这个文件组包括了整个工程编译链接后生成的文件,其中.map文件描述了K60最后的内存分配情况,在里面可以查看工程耗费的ROM容量和RAM容量还有一些变量函数等等的地址,还是挺有用的;out文件则是最后生成的文件,调试下载所需的文件。
这篇主要对K60 Tower系统官方的的硬件和软件进行了简单的介绍,有了这个基础才能建立自己风格的硬件和软件环境。人家的毕竟是人家的,用着不舒服,只有自己消化吸收了用自己容易理解的风格建立一套有自己特色的开发系统才是正道,呵呵,拭目以待,下回分解~
附件为tower硬件原理图和较新的官方IAR关于K60的例程。