Skip to content
This repository has been archived by the owner on Feb 17, 2022. It is now read-only.

This is a Low-layer Support Library for KinetisKE MCUs of NXP/Freescale, I called it as CSL

License

Notifications You must be signed in to change notification settings

zhang-stephen/Chip-Support-Library

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chip Support Library for NXP/FreeScale KinetisKEA MCUs

This is a Low-layer Support Library for KinetisKE MCUs of NXP/Freescale, I called it as CSL

概述

CSL是一个以STM32-HAL为蓝本设计的针对KinetisKEA系列MCU的软件开发库,我将尽量为这个库提供详尽的使用说明

1. 该软件库写于KinetisKEA128处理器平台(S9KEAZ128AMLK),理论上支持KEAZ128和KEAZ64两种微处理器
2. 我致力于降低该软件库内部的耦合度,目前仅有几个外设驱动是必须的,它们负责驱动该处理器的内核,时钟,内部flash,以及包含了一些必须的定义
3. 在编程时,我修改了startup(asm)文件和system_keaz128xxx4.h/.c,这让它们看起来和官方提供的文件有些不同,因此在使用CSL时,务必使用我提供的文件

文件说明

上传到github时,我只提供必须文件,而工程模板及例程将在release中发布,包括IAR for ARM(v8.10.0)和MDK-ARM(v5.24a),这是我目前正在使用的两个开发环境

  1. 必需文件
    前文中已经说过哪些文件是必不可少的,这里给出CSL的组织结构

    KinetisKEA_CSL  
        +-----inc\
        |-----------\ KinetisKE_csl.h  
        |-----------\ KinetisKE_csl_assert.h  
        |-----------\ KinetisKE_csl_clk.h  
        |-----------\ KinetisKE_csl_config.h    
        |-----------\ KinetisKE_csl_cortex.h    
        |-----------\ KinetisKE_csl_def.h  
        |-----------\ KinetisKE_csl_flash.h  
        |-----------\ KinetisKE_csl_modulexx.h   
        +-----src\  
        |-----------\ KinetisKE_csl.c  
        |-----------\ KinetisKE_csl_clk.c  
        |-----------\ KinetisKE_csl_cortex.c  
        |-----------\ KinetisKE_csl_flash.c  
        |-----------\ KinetisKE_csl_modulexx.c  
        +-----\ KinetisKE_csl_inc.h

    其中KinetisKE_csl_inc.h包含了所有的CSL头文件,可在main函数之前调用,此外其他的所有文件基本上均可删除而不影响使用

使用说明

  1. 该软件包依靠宏定义确定使用芯片型号

    #ifdef	CSL_KEAZ128xxx4
     #include "kinetis_keaz128xxx4.h"
     #define FLASH_SIZE				((uint32_t)(128U*1024U))		//Flash: 128KiB
    #elif defined(CSL_KEAZ64xxx4)
     #include "kinetis_keaz64xxx4.h"
     #define FLASH_SIZE				((uint32_t)(64U*1024U))		    //Flash: 64KiB
    #else
     #error "Please specify your MCU model!"
    #endif /* Model Selection */
  2. 该系列芯片基于ARM Cortex-M0+架构,若要使用数学库请在预处理器中定义ARM_MATH_CM0PLUS,不过该芯片无FPU,故不要对其浮点性能抱太大希望

  3. KinetisKEA的上电复位(POR)

    这是一个比较复杂的话题,我尽量用简洁的语言将这一过程描述的简明易懂

    1. 芯片上电后,首先执行Reset_Handler() 函数,此函数在startup文件中定义
    ; Reset Handler
    ; MDK-ARM
    Reset_Handler   PROC
                    EXPORT  Reset_Handler             [WEAK]
                    IMPORT  SystemInit
                    IMPORT  __main
                    LDR     R0, =SystemInit
                    BLX     R0
                    LDR     R0, =init_data_bss
                    BLX     R0
                    LDR     R0, =__main
                    BX      R0
                    ENDP

    基本上可以确定,首先执行SystemInit()函数,然后执行主函数,在SystemInit()函数中,主要进行基本的时钟配置,使芯片可以正常运行以进行其他外设的初始化,进行时钟配置后会执行SystemClock_Update()函数,以便将当前时钟的频率保存下来作为内核与Flash时钟初始化之用

    1. 进入主函数后,首先执行SystemClock_Init()函数,根据用户配置更新时钟并更新时钟频率,作为新的内核与Flash初始化的依据

    2. 其次执行CSL_Init()函数,该函数主要进行这么几件事:

    • 开启Flash时钟,根据配置决定是否开启Flash高速缓存、推断以及Flash中断并对内部Flash进行初始化
    • 根据配置决定是否开启ICS(内部时钟源)失锁中断(仅对FLL有效)
    • 初始化SysTick定时器为每1ms进入一次中断(可以自定义)
    1. 以上都无错误时,进行用户的外设初始化,执行用户代码,直到断电或者再次复位
  4. CSL中的用户配置

    CSL中的用户配置见KinetisKE_csl_config.h,其中的大致内容已经在上文中提过,该文件主要规定了一些重要中断的开启与否,外部时钟源、内部振荡器和内部低功耗振荡器的频率,以及其他用户配置,鉴于该文件注释较详细,此处不多赘述,但是使用前记得按需修改配置

    除此之外,该文件还有各个外设模块的时钟选通配置,均为宏定义。在调用外设初始化及使能函数时,这些宏定义需要用户在自己的外设初始化函数中调用,具体请参阅该文件

    注意:用户在执行自己的初始化代码时,必须首先初始化GPIO/FGPIO,以免和其他外设引脚相冲突!

    注意:初始化任何引脚时,尽量不要占用PTA4/PTA5/PTB4/PTB6/PTB7/PTC4!

  5. 其他详细配置请见工程模板

  6. 具体使用请见例程

Documents

使用帮助 请点击此链接

更新日志

version 0.0.1 (2017.12.4)

  1. 仅提供工程模板

version 0.2.5 (2017.12.22)

  1. 修复了大量bug
  2. 提供对UART,PWT,PMC,FLASH的支持
  3. 其他模块正在完善中

version 0.4.2 (2018.01.01)

  1. 修复部分Bug并更新了新的Bug
  2. 添加对ACMP、ADC、FTM、PIT和SPI的支持
  3. 提供的工程模板中添加KEIL-MDK模板,见MDK-ARM文件夹
  4. IAR工程根目录为模板目录下的EWARM文件夹
  5. 部分中间小版本未更新至GitHub

Copyright © Yangtze University, Stark-Zhang, All rights reserved
Copyright © 长江大学 电子信息学院 张璞 保留所有权利

About

This is a Low-layer Support Library for KinetisKE MCUs of NXP/Freescale, I called it as CSL

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published