打印
[Kinetis]

使用KDS3.0+SDK1.2库开发YL-KL26Z(非PE)

[复制链接]
1192|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
IversonCar|  楼主 | 2015-9-27 09:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
YL-KL26Z开发板是优龙科技的开发板,采用飞思卡尔Kinetis L系列的KL26Z128V4,ARM® Cortex™-M0+内核,主频48MHZ,片上资源有:128K内部Flash,和32K的SRAM,8通道16位ADC,12位DAC,高速比较器,低功率触摸传感界面,2路SPI,2路I2C,1路I2S,2路UART,1路LPUART,USB 2.0 FS OTG/ Host/Device控制器。
这个属飞思卡尔的第三方开发板。
大家在收到社区送的板子时,都配了一个光盘,上面有优龙科技给大家配的例程和驱动,电路图等资料。
看到社区朋友使用优龙给大家提供的程序测试,学习。
我也通过上面的例程学了,但是上面的程序是基于寄存器操作的,而我比较倾向于库,但却没有。
还好,飞思卡尔出了KSDK1.2库,里面飞思卡尔自己的开发板例程非常丰富。像同系列的FRDM-KL26。
于是有了这个想法,使用KSDK1.2库写程序,把FRDM-KL26的例程等改到YL-KL26Z上。
准备也出一个系列,把最近的学习过程给大家分享一下欢迎指导交流。
今天就给大家分享最简单的,控制YL-KL26Z控制3个LED实现流水灯。

相关帖子

沙发
IversonCar|  楼主 | 2015-9-27 09:51 | 只看该作者
一、对比YL-KL26Z和FRDM-KL26Z
1、要想使用官网的软件例程,首先最基本的硬件要一样,于是下载官网的FRDM-KL26Z的电路与YL-KL26Z电路来对比。
当然外围资源是不一样的,YL-KL26Z的资源要比官网FRDM-KL26Z的资源丰富的多!这也是值得称赞的地方。
(1)首先,2个电路板使用的芯片是一样的MKL26Z128VLH4
(2)看下电源地的连接,如下图,完全一样:

YL-KL26Z电源与地

FRDM-KL26Z电源与地
3、接下来晶振电路,两者都选择了片外8MHz的晶振,如图:

YL-KL26Z时钟电路

FRDM-KL26Z时钟电路
4、下面是复位电路,两者也基本一样,只不过YL-KL26Z不仅有OPENSDA上有个复位键,还多了一个复位键,直接接到PTA20上,就是我们板子上右上角的K2键。如图:

YL-KL26Z的K2复位


上面2个图是YL-KL26Z的OPENSDA上实现复位和BOOTLOADER的

FRDM-KL26Z的复位脚


通过网络编号,我们可以看到,接到了上图的这个地方,实现目标板的复位和BOOTLOADER,和YL-KL26Z也一致
5、再来看看ADC的模拟电源和参考电压,也是一致的。

YL-KL26Z的模拟电源地和参考电压电路

FRDM-KL26Z的模拟电源地和参考电压电路
7、再来看看调试接口SWD口,复位段上面分析过了,看看SWD_DIO和SWD_CLK引脚



上面3个图是YL-KL26Z的接口


这2个图是FRDM-KL26Z的接口
8、最后我们来看看大家经常用的虚拟串口,调试程序过程可以输出调试信息来用!



上面是YL-KL26Z的虚拟串口,可以看出使用的是芯片的UART0,连接到了调试用的K20的UART1上。


FRDM-KL26Z的和YL-KL26Z的一样,也用了UART0,

使用特权

评论回复
板凳
IversonCar|  楼主 | 2015-9-27 09:51 | 只看该作者
通过比较,可以看出,这两个板子的基本电路是一样的,芯片也一样,那么他们的程序也应该能够通用。
只是外界资源不同,比如LED、按键、SPI、I2C、ADC等资源使用的引脚不同,那么只需要改动一下引脚配置,很容易实现的。
这样就可以使用飞思卡尔的强大的SDK库了。


3360.jpg(100.44 KB, 下载次数: 2)




使用特权

评论回复
地板
IversonCar|  楼主 | 2015-9-27 09:52 | 只看该作者
二、实例要求
本实例要求非常简单,主要完成KSDK1.2库在YL-KL26Z上面的基本配置,使用非PE模式,采用官方的FRDM-KL26Z工程改过来。
所以只用KSDK1.2实现开发板上的三个LED灯循环点亮。
点亮LED灯估计是任何开发板到手后第一个必做实验

使用特权

评论回复
5
IversonCar|  楼主 | 2015-9-27 09:52 | 只看该作者
三、开始前的准备工作

1、首先先来看一下YL-KL26Z的LED灯部分的基本电路连接。
(1)下图是YL-KL26Z上的接LED0、LED1、LED2的接口,可以看到
LED0----------------PTB18
LED1----------------PTB19
LED2----------------PTD01

(2)下图是FRDM-KL26Z的LED接口,可以看到,也是3个引脚,只不过是一个RGB三色LED。

可以看出,两个板子上使用的接口是不同的。
2、FTDM-KL26Z的例程工程分析
由于我看用的是KDS3.0开发环境,所以,在飞思卡尔的KSDK1.2库的例程中选择KDS工程,GPIO的那个例程,如下图:

我们可以看到,
(1)Board文件夹下是对FTDM-KL26Z板子资源的配置,比如gpio、引脚的复用功能、板子的时钟配置等功能
(2)Utilities文件夹下是板子上那个虚拟串口做调试用的一些功能函数
分析:
Board文件夹下的board、gpio_pin、pin_mux这些文件是对板子的整体配置,不论哪个工程都用同样的配置文件
Board文件夹下的hardware_init.c文件是每个工程单独的硬件初始化函数功能实现,这个每个工程都是单独的
Utilities文件夹下的是库的一部分,在使用时最好不要改库内容,拿来直接使用就好了。
3、下面要找到工程中使用的文件的位置
如下图所在的位置:

把上图的文件拷贝到我们的工程中,修改后使用。如下图,可以新建个文件夹

把文件复制进来,如下图所示:

下面的位置是hardware_init.c

这个每个工程都不一样,所以,要复制到具体工程文件中,如图:


Utilities文件夹下的内容就不复制了。

准备工作基本完成,下面就可以具体实现。

使用特权

评论回复
6
IversonCar|  楼主 | 2015-9-27 09:53 | 只看该作者
1、新建工程
(1)工程名称为   gpio_led_yl_kl26z

(2)选择MCU型号,如下图

(3)选择库,使用默认的KSDK1.2,不选PE模式

(4)新建的工程如图所示:

(5)在工程中添加Board文件夹

(6)配置如下图,使用虚拟目录

(7)添加utilities文件夹

8、向board文件夹下添加文件
(1)在文件夹上右键,选择导入

(2)选择文件系统

(3)将我们在之前拷贝的board下的文件添加上去

(4)配置选项如图

(5)还要添加hardware_init.c文件到board文件夹下,如图

9、向utilities文件夹下添加串口调试所需代码,配置如图所示

h文件也要添加

10、最后配置的工程如图所示:

11、进行环境设置:
(1)添加库的h文件路径

(2)最终效果如图所示

(3)设置link选项

(4)添加KL26Z的库文件,以便编译连接


至此,基本工程文件已经建立好了,下面就可以进行具体编程了。





3317.jpg(23.77 KB, 下载次数: 0)



3318.jpg(53.95 KB, 下载次数: 0)



3319.jpg(48.43 KB, 下载次数: 0)



3330.jpg(52.97 KB, 下载次数: 0)




使用特权

评论回复
7
IversonCar|  楼主 | 2015-9-27 09:53 | 只看该作者
五、具体实现

前面的准备工作做好之后,下面就可以对FRDM-KL26Z工程中的board文件夹下的配置文件进行修改,使之适合于我们的YL-KL26Z开发板了。
1、gpio_pin.h和gpio_pin.c的修改
这两个文件中是对开发板上使用的普通I/O的声明和结构体变量的定义
(1)先来看看gpio_pin.h文件

可以看出,这里定义了一个gpio_pins类型的枚举结构,里面给出了FRDM-KL26Z开发板的三色LED对应的引脚,以及用户按键对应的引脚。
kGpioLED1        = GPIO_MAKE_PIN(GPIOE_IDX, 31u)
GPIO_MAKE_PIN这个宏定义是将端口和引脚号组成一个32位数,把它的值赋给枚举中的kGpioLED1名称。
知道了这个,咱看看YL-KL26Z的三个LED灯的引脚,分别是:
LED0----------------PTB18
LED1----------------PTB19
LED2----------------PTD01

因此,把它改成下图中的形式,由于板子电路图上命名为LED0、LED1、LED2,所以这里也就用了这三个名字。

(2)再看看gpio_pin.c文件

由上可以看出,这个是定义了一个gpio_output_pin_user_config_t类型的数组ledPins。用于存储LED的引脚配置结构体。
关于这个结构体的用法,大家可以参看KSDK1.2库的参考手册,上面有。
或者也可以直接看KSDK库中gpio的库文件,上面写的也有。


上面是结构体的描述,下面是举的关于输入的例子。

注意在结构体定义是,一定要加个结束标志。

至于这个结构体内部成员的含义,可以参考芯片的参考手册,不过直接看名字就可以猜的差不多了。
这里就不过多介绍了,随后有机会在详细说明。
下面就把gpio_pin.c文件改成YL-KL26Z上的,其实只改改名字而已


2、board.h和board.c的修改
这两个是关于板子的基本时钟初始化和调试用的虚拟串口初始化,以及一些基本资源的配置。
(1)首先是board.h的内容

上面可以找到关于LED部分的宏定义,这里大家可以改,不想用宏定义的写法,也可以不改。

上面是给三个LED重新命了一个明显的名字,一看就知道是什么颜色的灯。

这里是单独使能每个LED灯,其实就是调用输出初始化函数。当然,也可以使用一个函数,将所有输入输出口全部初始化一遍。

上面是设置为普通GPIO口

上面是熄灭LED灯的宏定义,当然,程序中也可以直接用相应的函数

上面是点亮LED灯的宏

最后这个是LED状态取反的功能
明白了这些,就可以修改了,这里我们的名字稍作了改动,改成如下

(2)关于board.c中的内容,牵扯到芯片时钟配置,我们使用和FRDM-KL26Z的一样,默认的吧,简单些。
置于如何修改,随后再举例子。

3、pin_mux.h和pin_mux.c这两个文件,我们这个例程用不上,就不改了。
随后给大家分享芯片其它片内外设时,再来修改。

4、utilities文件夹下的虚拟串口使用的是KSDK库,既然是库,也就不需要修改了。

5、差点忘了hardware_init.c文件了
打开看看:

这里只有一个函数,用于初始化芯片硬件。
上面是使能端口时钟
下面是调用时钟初始化和串口初始化
这里也使用默认的就行了。

6、上面最重要的工作做完后,下面就简单了,写本实例的主函数了,功能比较简单,直接写程序:

可以看到主函数中首先调用硬件初始化函数,
然后调用端口初始化函数
之后是死循环,使三个LED灯依次点亮,采用软件延时,两灭灯用board.h中刚才声明的宏定义。

至此整个工程就写好了,下面就编译下载看效果了

=============================================
本来不想上效果了,可是突然想起来飞思卡尔社区网友shadow丶给的软件好久没用了,拿来练练手(再次感谢飞思卡尔社区网友shadow丶)。
最后还是上个效果吧


使用特权

评论回复
8
舒斯特尔| | 2015-9-27 14:43 | 只看该作者
这个讲的确实太详细了啊

使用特权

评论回复
9
跟屁虫| | 2015-9-27 21:12 | 只看该作者
IversonCar 发表于 2015-9-27 09:51
一、对比YL-KL26Z和FRDM-KL26Z
1、要想使用官网的软件例程,首先最基本的硬件要一样,于是下载官网的FRDM-K ...

对比的不错,区别都写出来了

使用特权

评论回复
10
Roderman_z| | 2015-9-28 07:49 | 只看该作者
这个开发板支持opensda吗

使用特权

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

本版积分规则

50

主题

344

帖子

0

粉丝