查看: 22545|回复: 75

[原创] 【YL-KL26Z开发例程】+ 使用KDS3.0+SDK1.2库开发YL-KL26Z(非PE)

[复制链接]
  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    15378
    最后登录
    1970-1-1
    发表于 2015-8-15 16:15:28 | 显示全部楼层 |阅读模式
    本帖最后由 lkl0305 于 2015-8-16 07: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实现流水灯。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    15378
    最后登录
    1970-1-1
     楼主| 发表于 2015-8-15 16:16:39 | 显示全部楼层
    本帖最后由 lkl0305 于 2015-8-15 22:53 编辑

    今天下午刚写了个开头,就有急事出去了,现在办完了,继续……
    ======================================================
    一、对比YL-KL26Z和FRDM-KL26Z
    1、要想使用官网的软件例程,首先最基本的硬件要一样,于是下载官网的FRDM-KL26Z的电路与YL-KL26Z电路来对比。
    当然外围资源是不一样的,YL-KL26Z的资源要比官网FRDM-KL26Z的资源丰富的多!这也是值得称赞的地方。
    (1)首先,2个电路板使用的芯片是一样的MKL26Z128VLH4
    (2)看下电源地的连接,如下图,完全一样:
    3302.jpg
    YL-KL26Z电源与地
    3304.jpg
    FRDM-KL26Z电源与地
    3、接下来晶振电路,两者都选择了片外8MHz的晶振,如图:
    3301.jpg
    YL-KL26Z时钟电路
    3303.jpg
    FRDM-KL26Z时钟电路
    4、下面是复位电路,两者也基本一样,只不过YL-KL26Z不仅有OPENSDA上有个复位键,还多了一个复位键,直接接到PTA20上,就是我们板子上右上角的K2键。如图:
    3307.jpg
    YL-KL26Z的K2复位
    3351.jpg
    3352.jpg
    上面2个图是YL-KL26Z的OPENSDA上实现复位和BOOTLOADER的
    3353.jpg
    FRDM-KL26Z的复位脚
    3354.jpg
    3355.jpg
    通过网络编号,我们可以看到,接到了上图的这个地方,实现目标板的复位和BOOTLOADER,和YL-KL26Z也一致
    5、再来看看ADC的模拟电源和参考电压,也是一致的。
    3305.jpg
    YL-KL26Z的模拟电源地和参考电压电路
    3306.jpg
    FRDM-KL26Z的模拟电源地和参考电压电路
    7、再来看看调试接口SWD口,复位段上面分析过了,看看SWD_DIO和SWD_CLK引脚
    3357.jpg
    3356.jpg
    3358.jpg
    上面3个图是YL-KL26Z的接口
    3359.jpg

    这2个图是FRDM-KL26Z的接口
    8、最后我们来看看大家经常用的虚拟串口,调试程序过程可以输出调试信息来用!
    3363.jpg
    3364.jpg
    3365.jpg
    上面是YL-KL26Z的虚拟串口,可以看出使用的是芯片的UART0,连接到了调试用的K20的UART1上。
    3362.jpg
    3361.jpg
    FRDM-KL26Z的和YL-KL26Z的一样,也用了UART0,
    ============================================================
    其他资源不比较了,这些就暂时够用了
    通过比较,可以看出,这两个板子的基本电路是一样的,芯片也一样,那么他们的程序也应该能够通用。
    只是外界资源不同,比如LED、按键、SPI、I2C、ADC等资源使用的引脚不同,那么只需要改动一下引脚配置,很容易实现的。
    这样就可以使用飞思卡尔的强大的SDK库了。

    晚上就到这里吧,明天继续实例说明问题……


    3360.jpg
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    15378
    最后登录
    1970-1-1
     楼主| 发表于 2015-8-15 16:17:31 | 显示全部楼层
    本帖最后由 lkl0305 于 2015-8-16 14:07 编辑

    二、实例要求
    本实例要求非常简单,主要完成KSDK1.2库在YL-KL26Z上面的基本配置,使用非PE模式,采用官方的FRDM-KL26Z工程改过来。
    所以只用KSDK1.2实现开发板上的三个LED灯循环点亮。
    点亮LED灯估计是任何开发板到手后第一个必做实验了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    15378
    最后登录
    1970-1-1
     楼主| 发表于 2015-8-15 16:18:28 | 显示全部楼层
    本帖最后由 lkl0305 于 2015-8-16 14:41 编辑

    三、开始前的准备工作

    1、首先先来看一下YL-KL26Z的LED灯部分的基本电路连接。
    (1)下图是YL-KL26Z上的接LED0、LED1、LED2的接口,可以看到
    LED0----------------PTB18
    LED1----------------PTB19
    LED2----------------PTD01
    3308.jpg
    (2)下图是FRDM-KL26Z的LED接口,可以看到,也是3个引脚,只不过是一个RGB三色LED。
    3309.jpg
    可以看出,两个板子上使用的接口是不同的。
    2、FTDM-KL26Z的例程工程分析
    由于我看用的是KDS3.0开发环境,所以,在飞思卡尔的KSDK1.2库的例程中选择KDS工程,GPIO的那个例程,如下图:
    3330.jpg
    我们可以看到,
    (1)Board文件夹下是对FTDM-KL26Z板子资源的配置,比如gpio、引脚的复用功能、板子的时钟配置等功能
    (2)Utilities文件夹下是板子上那个虚拟串口做调试用的一些功能函数
    分析:
    Board文件夹下的board、gpio_pin、pin_mux这些文件是对板子的整体配置,不论哪个工程都用同样的配置文件
    Board文件夹下的hardware_init.c文件是每个工程单独的硬件初始化函数功能实现,这个每个工程都是单独的
    Utilities文件夹下的是库的一部分,在使用时最好不要改库内容,拿来直接使用就好了。
    3、下面要找到工程中使用的文件的位置
    如下图所在的位置:
    3318.jpg
    把上图的文件拷贝到我们的工程中,修改后使用。如下图,可以新建个文件夹
    3317.jpg
    把文件复制进来,如下图所示:
    3316.jpg
    下面的位置是hardware_init.c
    3319.jpg
    这个每个工程都不一样,所以,要复制到具体工程文件中,如图:
    3366.jpg
    3367.jpg
    Utilities文件夹下的内容就不复制了。

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

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    15378
    最后登录
    1970-1-1
     楼主| 发表于 2015-8-15 16:18:47 | 显示全部楼层
    本帖最后由 lkl0305 于 2015-8-16 22:41 编辑

    四、工程建立

    具体环境搭建可以参见我以前写的帖子:
    【FRDM-K64F开发经验】+ 01 + 环境搭建——KDS3.0+KSDK1.2+PE
    https://www.nxpic.org.cn/module/forum/forum.php?mod=viewthread&tid=599743&fromuid=336767

    =============================================

    1、新建工程
    (1)工程名称为   gpio_led_yl_kl26z
    3310.jpg
    (2)选择MCU型号,如下图
    3311.jpg
    (3)选择库,使用默认的KSDK1.2,不选PE模式
    3312.jpg
    (4)新建的工程如图所示:
    3368.jpg
    (5)在工程中添加Board文件夹
    3314.jpg
    (6)配置如下图,使用虚拟目录
    3313.jpg
    (7)添加utilities文件夹
    3369.jpg
    8、向board文件夹下添加文件
    (1)在文件夹上右键,选择导入
    3320.jpg
    (2)选择文件系统
    3321.jpg
    (3)将我们在之前拷贝的board下的文件添加上去
    3316.jpg
    (4)配置选项如图
    3322.jpg
    (5)还要添加hardware_init.c文件到board文件夹下,如图
    3323.jpg
    9、向utilities文件夹下添加串口调试所需代码,配置如图所示
    3324.jpg
    h文件也要添加
    3325.jpg
    10、最后配置的工程如图所示:
    3326.jpg
    11、进行环境设置:
    (1)添加库的h文件路径
    3327.jpg
    (2)最终效果如图所示
    3328.jpg
    (3)设置link选项
    3329.jpg
    (4)添加KL26Z的库文件,以便编译连接
    3331.jpg

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




    3317.jpg
    3318.jpg
    3319.jpg
    3330.jpg
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    15378
    最后登录
    1970-1-1
     楼主| 发表于 2015-8-15 16:19:38 | 显示全部楼层
    本帖最后由 lkl0305 于 2015-8-18 00:03 编辑

    五、具体实现

    前面的准备工作做好之后,下面就可以对FRDM-KL26Z工程中的board文件夹下的配置文件进行修改,使之适合于我们的YL-KL26Z开发板了。
    1、gpio_pin.h和gpio_pin.c的修改
    这两个文件中是对开发板上使用的普通I/O的声明和结构体变量的定义
    (1)先来看看gpio_pin.h文件
    3370.jpg
    可以看出,这里定义了一个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,所以这里也就用了这三个名字。
    3387.jpg
    (2)再看看gpio_pin.c文件
    3371.jpg
    由上可以看出,这个是定义了一个gpio_output_pin_user_config_t类型的数组ledPins。用于存储LED的引脚配置结构体。
    关于这个结构体的用法,大家可以参看KSDK1.2库的参考手册,上面有。
    或者也可以直接看KSDK库中gpio的库文件,上面写的也有。
    3372.jpg
    3373.jpg
    上面是结构体的描述,下面是举的关于输入的例子。
    3374.jpg
    注意在结构体定义是,一定要加个结束标志。
    3375.jpg
    至于这个结构体内部成员的含义,可以参考芯片的参考手册,不过直接看名字就可以猜的差不多了。
    这里就不过多介绍了,随后有机会在详细说明。
    下面就把gpio_pin.c文件改成YL-KL26Z上的,其实只改改名字而已
    3386.jpg

    2、board.h和board.c的修改
    这两个是关于板子的基本时钟初始化和调试用的虚拟串口初始化,以及一些基本资源的配置。
    (1)首先是board.h的内容
    3376.jpg
    上面可以找到关于LED部分的宏定义,这里大家可以改,不想用宏定义的写法,也可以不改。
    3377.jpg
    上面是给三个LED重新命了一个明显的名字,一看就知道是什么颜色的灯。
    3378.jpg
    这里是单独使能每个LED灯,其实就是调用输出初始化函数。当然,也可以使用一个函数,将所有输入输出口全部初始化一遍。
    3379.jpg
    上面是设置为普通GPIO口
    3380.jpg
    上面是熄灭LED灯的宏定义,当然,程序中也可以直接用相应的函数
    3381.jpg
    上面是点亮LED灯的宏
    3382.jpg
    最后这个是LED状态取反的功能
    明白了这些,就可以修改了,这里我们的名字稍作了改动,改成如下
    3384.jpg
    (2)关于board.c中的内容,牵扯到芯片时钟配置,我们使用和FRDM-KL26Z的一样,默认的吧,简单些。
    置于如何修改,随后再举例子。

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

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

    5、差点忘了hardware_init.c文件了
    打开看看:
    3383.jpg
    这里只有一个函数,用于初始化芯片硬件。
    上面是使能端口时钟
    下面是调用时钟初始化和串口初始化
    这里也使用默认的就行了。

    6、上面最重要的工作做完后,下面就简单了,写本实例的主函数了,功能比较简单,直接写程序:
    3385.jpg
    可以看到主函数中首先调用硬件初始化函数,
    然后调用端口初始化函数
    之后是死循环,使三个LED灯依次点亮,采用软件延时,两灭灯用board.h中刚才声明的宏定义。

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

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


    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    15378
    最后登录
    1970-1-1
     楼主| 发表于 2015-8-15 16:20:04 | 显示全部楼层
    本帖最后由 lkl0305 于 2015-8-17 23:52 编辑

    六、后记

    以上便是本实例的全部过程,实例本身非常简单。但重要的是给大家一起分享了我使用KDS3.0+KSDK1.2库,结合官方FRDM-KL26Z板子的实例,修改使之运行到YL-KL26Z这款开发板。其实这种方法也可以应用在其它板子上。
    个人比较喜欢用库编程,接触底层硬件相对比较少,容易上手。KSDK1.2库资源非常丰富,而且代码写的很是规整、严谨,通过库的分析,可以提高c编程能力,养成良好的编程习惯,而且可以结合库代码和芯片参考手册,对芯片有深入认识。结合实例学习,不至于看参考手册太枯燥。
    记录本身就是一种提高,也希望对向我一样刚开始学习飞思卡尔KSDK1.2库编程的朋友一点帮助。
    内容比较简单,希望大家多交流,共同学习提高……

    ==============================================
    这个就先到这里,随后给大家分享更多的片内外设的学习心得!

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2022-4-4 11:28
  • 签到天数: 351 天

    [LV.8]以坛为家I

    141

    主题

    8054

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5740
    最后登录
    2022-4-4
    发表于 2015-8-15 21:39:38 | 显示全部楼层
    支持下楼主
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    15378
    最后登录
    1970-1-1
     楼主| 发表于 2015-8-15 22:38:21 | 显示全部楼层

    多谢支持哈
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    21

    主题

    435

    帖子

    0

    高级会员

    Rank: 4

    积分
    916
    最后登录
    2020-4-8
    发表于 2015-8-15 22:46:44 | 显示全部楼层
    你占了好几楼,注意安全啊!谢谢分享 楼主这种电路图什么软件画出来的啊??
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-5-14 11:29 , Processed in 0.479166 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表