查看: 7609|回复: 21

[原创] FRDM-KL02Z评测(3)精悍的LiteFwLib固件库

[复制链接]
  • TA的每日心情
    奋斗
    2017-1-17 10:45
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    38

    主题

    395

    帖子

    3

    高级会员

    Rank: 4

    积分
    780
    最后登录
    2023-11-17
    发表于 2015-8-30 23:09:25 | 显示全部楼层 |阅读模式
    本帖最后由 suyong_yq 于 2015-8-30 23:11 编辑

    【缘起】
    【使用固件库能干啥】
    【LiteFwLib_frdmkl02z固件库】
    【如何使用LiteFwLib固件库创建新工程】
    【结语】



    【缘起】


    由于KL02芯片的外设比较少,我才考虑以固件库的形式把所有常用的模块驱动都整合起来,做成一个相对完整的芯片支持包,这就是自己编写LiteFwLib_frdmkl02z固件库的初衷。相对于之前玩过的K60/K64,这个实现固件库要简单很多,毕竟不需要考虑以太网、USB之类的大模块。代码规模很小,所以在我失去激情和耐心之前,在冲动的支持下,就已经完成了几乎全部的代码。


    【使用固件库能干啥】


    谈及固件库的设计和实用价值,其实有很多的方面,为了臭美显摆,我在这里为一一道来。


    1. 提供单片机应用基础

    这个是基本的功能啦。其实不管是各家半导体设计公司搞出来的芯片多么不同,在常用模块的应用上都应该是差不多的,否则特别奇葩的模块大家也不常用,意义不大。但是底层硬件毕竟有差别,而且要把硬件用起来就需要阅读大本的使用手册,搞清楚特别的配置值和操作时序。这些东西对于应用工程师实在是太麻烦了,在应用中只要关心能用起来芯片的功能,而不想过多地考虑实现细节的。此时,固件库就可以帮忙抽象对硬件的操作,用户通过调用固件库间接操作硬件,就方便多了。单片机的固件库程序多使用C语言编写,通过函数和参数调用,要比直接配置芯片寄存器的方式友好很多。


    2. 研究嵌入式软件架构

    固件库程序通常都是按照特定的方式将源代码组织起来的,这些组织方式实际上变现出来的是软件架构的实现。组织固件库源代码涉及到平台的可移植性,代码复用、功能隔离、统一接口风格等内容,为了最优化这些方面,通常都经过非常精密的设计。了解这些内容将会对程序架构上有更深刻的认识。


    3. 标准化程序设计

    不同的人基于共同的固件库设计应用程序,由于绝大部分是相同的,这样便于沟通,容易说明问题。


    4. 为扩展上层软件奠定基础

    固件库本身是一个比较全面的底层支持包,可以为开发更高层次的软件奠定完善的基础,这样,在软件层次上会有清晰的划分,上层软件开发人员也可以更专注地开发自己模块的部分,有助于提高开发效率。


    5. 学习项目管理

    设计固件库程序也是一个完成的软件项目,单片机爱好者在玩板子的早期会写各种各样的小程序以实现基本功能,但专业的代码需要良好的组织和科学的管理。通过编写固件库软件,走完一个完整的项目开发流程,可以为进阶开发提供不少经验。


    【LiteFwLib_frdmkl02z固件库】


    LiteFwLib_frdmkl02z固件库是基于FRDM-KL02Z开发板设计的单片机软件固件库软件,提供了Freescale KL02Z单片机的底层驱动程序,可用于支持基于KL02Z的应用程序开发。


    LiteFwLib在提供驱动程序的同时,还基于FRDM-KL-2Z开发板为每个模块提供了可以演示的样例程序,便于用户快速上手。固件库样例工程选用Keil作为演示平台,但不依赖于具体的集成开发环境,可以无缝移植到其它开发平台上,例如IAR,ARM GCC类开发平台等。

    image_01.png
    图1

    image_02.png
    图2


    下面通过样例程序的演示内容介绍LiteFwLite_frrdmkl02z支持的驱动


    01_UART_HelloWorld
    通过UART0与上位机的串口终端建立连接,在上位机的串口终端交互窗口中打印“Hello, World”,然后回显在交互窗口中输入的任何字符。


    02_GPIO_Blinky
    通过GPIO控制开发板上的LED闪烁。程序运行后,在串口终端中通过输入任何字符触发LED亮暗状态的切换。


    03_SYSTICK_Ticker
    通过ARM Cortex M系列单片机通用的Systick定时器模块实现延时的功能。这个延时模块实现两个功能,一个阻塞是延时,还有定时回调。在样例程序中分别用这两种方式控制两个不同颜色的LED闪烁。


    04_I2C_AccSensor
    通过I2C模块读取板载三轴加速度传感器MMA8451芯片的感应值。在串口终端中根据提示输入任何字符,将回显当前的三轴加速度信息。变换开发板的姿态,回显的采样值也会发生变化。


    05_TPM_BubbleLight
    通过TPM产生的PWM控制LED小灯的亮度。在串口终端中根据提示输入任何字符,触发PWM占空比的变化,从而控制LED小灯的亮度变化。连续触发会有呼吸灯的效果。


    06_LPTMR_Ticker
    使用LPTMR定时器模块实现的延时功能,同Systick类似。但是LPTMR可以在低功耗模式下工作,这点Systick不服不行。


    07_ADC_ThermalSensor
    使用ADC模块的软件触发模式采集片上的温度传感器值。在串口终端中输入任何字符,触发ADC采样,回显当前ADC的采样值。


    08_SPI_MasterLoop
    SPI模块自发自收数据,在串口终端中输入任何字符,SPI自发自收进行匹配,若是收发一致就输出匹配成功,否则输出匹配失败。做这个实验的时候需要人工地将SPI的TX和RX连起来,否则就会输出匹配失败。所幸这两个引脚在FRDM-KL02Z的外扩插针是相邻的,如果不用导线,用条线帽也是可以的,社么?连跳线帽也没,那就用钥匙或者镊子先凑合一下吧。


    PS:目前版本的LiteFwLib_frdmkl02z还没有支持CMP模块。


    【如何使用LiteFwLib固件库创建新工程】


    在之前已经介绍了如何从零开始创建工程,但推荐LiteFwLib的用户使用更快捷、方便、安全的方式——复制样例工程并修改以创建新工程。

    样例工程中已经帮忙设定了工程配置,这样可以非常容易复制样例工程的演示效果。


    对于只需要固件库的驱动程序的情况,固件库的驱动文件本身独立性很强,所有驱动仅仅对芯片头文件“fsl_device_registers.h”有依赖,很容易移植。


    【结语】


    大部分演示程序都是需要观察和操作板子的,例如观察小灯闪烁、变换开发板姿态及改变外扩引脚的连接情况,这些都需要读者自己操作体会。如果你手头上有一块FRDM-KL02Z开发板,那就赶快下载附件中的LiteFwLib_frdmkl02z固件库的代码来体验一下吧。同时也欢迎大家回帖提提建议。


    附件

    LiteFwLib_frdmkl02z固件库开发包: LiteFwLib_frdmkl02z_v0.9.zip (288.78 KB, 下载次数: 139)
    回复

    使用道具 举报

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

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    15290
    最后登录
    1970-1-1
    发表于 2015-8-30 23:57:14 | 显示全部楼层
    楼主高产呀
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-5-3 11:19
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    50

    主题

    1万

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    14090
    最后登录
    2024-4-19
    发表于 2015-8-31 09:28:39 | 显示全部楼层
    楼主强大。。。 blank.png blank1.png blank2.png blank3.png blank4.png blank5.png blank6.png blank7.png blank8.png blank9.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-9 14:16
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    25

    主题

    1785

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2245
    最后登录
    2024-4-12
    发表于 2015-8-31 11:52:34 | 显示全部楼层
    本帖最后由 JackieLaura 于 2015-8-31 12:09 编辑

    4小时一个小型库,效率啊
    freescaleic.org.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-1-17 10:45
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    38

    主题

    395

    帖子

    3

    高级会员

    Rank: 4

    积分
    780
    最后登录
    2023-11-17
     楼主| 发表于 2015-8-31 14:27:57 | 显示全部楼层

    我连着三个帖子的沙发都被你占了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-1-17 10:45
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    38

    主题

    395

    帖子

    3

    高级会员

    Rank: 4

    积分
    780
    最后登录
    2023-11-17
     楼主| 发表于 2015-8-31 14:29:03 | 显示全部楼层

    下载固件库用用看呗,提提意见。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-1-17 10:45
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    38

    主题

    395

    帖子

    3

    高级会员

    Rank: 4

    积分
    780
    最后登录
    2023-11-17
     楼主| 发表于 2015-8-31 14:29:46 | 显示全部楼层
    JackieLaura 发表于 2015-8-31 11:52
    4小时一个小型库,效率啊

    很多代码都是复用的,所以比较快。
    回复 支持 反对

    使用道具 举报

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

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    15290
    最后登录
    1970-1-1
    发表于 2015-8-31 14:40:01 | 显示全部楼层
    suyong_yq 发表于 2015-8-31 14:27
    我连着三个帖子的沙发都被你占了

    我就等沙发坐呢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-9 14:16
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    25

    主题

    1785

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2245
    最后登录
    2024-4-12
    发表于 2015-8-31 15:02:15 | 显示全部楼层
    suyong_yq 发表于 2015-8-31 14:29
    很多代码都是复用的,所以比较快。

    “我们是大自然的搬运工”。。。
    freescaleic.org.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-4-7 20:47
  • 签到天数: 537 天

    [LV.9]以坛为家II

    69

    主题

    2521

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    7122
    最后登录
    2024-4-9
    发表于 2015-8-31 20:41:03 | 显示全部楼层
    不错,手头有一块KE02的板子,也要好好学习学习
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-29 20:06 , Processed in 0.151107 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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