查看: 23362|回复: 37

[原创] 【YL-KL26Z开发笔记】 KL26 ADC、TPM、UART、SPI、中断模块大杂烩

[复制链接]
  • TA的每日心情
    开心
    2016-11-14 15:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    63

    主题

    605

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1783
    最后登录
    2016-11-14
    发表于 2015-8-1 14:46:51 | 显示全部楼层 |阅读模式
    本帖最后由 最后无事 于 2015-8-3 15:44 编辑

    申明:本贴同时作为YL-KL26Z使用计划贴和使用分享帖

           首先说下我为什么会接触到飞思卡尔KL26这款芯片,小白我是刚刚走出校园的大学生,实战经验不多,之前就玩过ARM9和51内核的芯片,从来没有接触过飞思卡尔的芯片。机缘巧合之下来到了现在的一家小型公司做开发,公司是研发智能穿戴产品的,所以对功耗要求十分的看中,KL26低功耗十分出色。领导在我的第一天上班就给了我这款飞思卡尔KL26开发板给我(黑色的那个),让我研究他的ADC、TPM、UART、SPI、中断模块。对于这款陌生的MO内核的芯片来说,一切我都要从头开始,从上官网找数据手册、原理图、例程到安装环境编译器,一路坎坷一路在论坛的好心人的耐心解答下,才慢慢的走过来的,特别谢谢版主们和好友们的回答,我的问题大部分都是他们最后给出最佳答案的。下面我就分别列出我研究的模块以及在研究过程中遇到的问题,或许解决方法和其他帖子相同,这里就做个笔记汇总。


    使用工具:两块KL26开发板、四根杜邦线、一台PC电脑


    实现功能:使用KL26开发板(黑色)的独立按键设置为外部中断,用他来作为TPM定时器的触发条件,然后TPM软件触发ADC每两秒自动采集CPU的温度,然后KL26开发板(黑色)作为主机将采集到的温度数据使用SPI协议发送给KL26开发板(蓝色),最后KL26开发板(蓝色)用UART协议通过串口助手打印出来。







    SPI通信结果.png
    QQ图片20150801142429.jpg

    KL25 中文数据手册.pdf

    9.25 MB, 下载次数: 215, 下载积分: 威望 1

    KL26数据手册.pdf

    5.31 MB, 下载次数: 164, 下载积分: 威望 1

    KL26温度模块.pdf

    166.63 KB, 下载次数: 63, 下载积分: 威望 1

    KL26原理图.pdf

    207.09 KB, 下载次数: 81, 下载积分: 威望 1

    test.rar

    822.27 KB, 下载次数: 102, 下载积分: 威望 1

    KL26_SPI_Device.rar

    1.19 MB, 下载次数: 106, 下载积分: 威望 1

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-14 15:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    63

    主题

    605

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1783
    最后登录
    2016-11-14
     楼主| 发表于 2015-8-1 14:53:06 | 显示全部楼层
    3.KL26的ADC模块
    答:     1)芯片ADC任意端口配置
    答:芯片ADC的端口配置是由ADC的“SC1寄存器的ADCH位”控制的,KL26芯片一共有31个ADC-Channel,不过大部分是保留的,不能使用。在单端模式下,有24个通道可以使用,在差分模式下只有六个通道可以使用。在演示项目中用到的测CPU温度的ADC通道就是第26通道,具体数据请查看KL26数据手册第91页。

        2)ADC的工作模式(单端、差分)

    答:ADC的工作模式是由ADCx_SC1n的DIFF位控制的,置位就是差分输入,清零就是单端输入,测试温度用的26通道是两种模式都可以使用的,演示项目用的是单端输入,具体数据请看KL26数据手册第489页。

    3)ADC的采集频率
    答:ADC的采集频率跟时钟源有关系,ADC的时钟源选择位BUS(24Mhz),然后当bus时钟为二分频的时候,16位的ADC的转换率配置为最高。根据数据手册上面显示,ADC的采集转换时间公式为如下:

                 ConversionTime=SFCAdder+AverageNum*(BCT+LSTAdder+HSCAdder)

    根据上诉参数的配置,首次单端连续采样时间最快可达2.875微妙,连续采样时间可达2.25微妙,则可以知道,连续采样频率可以最高达到444.44khz。(频露足够完整的保留原始信号中的信息了),详情请查看数据手册的第514页。

    4)ADC的采样精度

    答:由于KL26的ADC在单端模式下可以设置成8位、10位、12位、16位,所以对应的ADC精度为(2的8次方减一)、(2的10次方减一)、(2的12次方减一)、(2的16次方减一)。演示项目中选择的是16位的精度,位数越高,功耗也大。

    5)ADC软、硬件触发

    答:ADC的软、硬件触发触发由ADCx_SC2[ADTRG]控制,置位时是硬件触发,清零时是软件触发,详情请查看KL26数据手册第496页。关于ADC硬件触发的触发源,有如下几个:TPM1、LPTMR、TPMX、PIT CHx、RTC、EXTRG_IN、CMP0,详情请查看KL26数据手册第57页。



    1.png
    2.png
    3.png
    回复 支持 1 反对 0

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-14 15:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    63

    主题

    605

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1783
    最后登录
    2016-11-14
     楼主| 发表于 2015-8-1 14:49:48 | 显示全部楼层
    1.开发环境选择    
    答:飞思卡尔的开发环境有很多选择,例如:KDS、CW、keil、IAR,我用的是CW。我在这里先吐槽下,飞思卡尔的开发环境虽然很多,但是我想对应的例程DEMO要跟的上才行,不要出现一种情况就是某些模块的demo只能在某种IDE里面才能使用,我觉得所有的DEMO例程都要有各个开发环境的版本,这样才能方便开发者。其次CW用起来还是挺好用的,内嵌PE模块,可以自动生成代码,不过我就遇到过一个奇怪的现象就是修改好代码,编译保存之后,退出IDE,然后重新进入再编译一次之后,之前修改好的代码都自动还原了,我在这个地方也被坑了一坑。郁闷了好久,不过好在问题最后得到了解决。
    https://www.nxpic.org.cn/module/forum/thread-600243-1-1.html  (解决办法请看第十楼)。

    2.固件的选择
    答:我用的那个KL26开发板是官方版本的,他可以使用opensda来调试,不过需要换个固件,之前傻乎乎的不知道,结果用CW编译DEMO的时候老是下载不了,最后也是通过版主的耐心教导,问题得到了解决。https://www.nxpic.org.cn/module/ ... =page%3D&page=2    (解决办法请看第16楼)  还有个问题到现在还没有解决,就是不知道是不是我家里电脑系统是盗版的原因,板子连接到电脑之后,设备管理显示不出板子的串口号,用公司的正版系统又没有这种情况出现,这个问题版主也无能为力,所以无法解决!!!



    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-14 15:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    63

    主题

    605

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1783
    最后登录
    2016-11-14
     楼主| 发表于 2015-8-1 14:56:11 | 显示全部楼层
    本帖最后由 最后无事 于 2015-8-1 14:57 编辑

    4.KL26的UART模块
    1) UART的端口配置
    答:KL26有三个uart可以使用,其中uart0在正常模式、等待模式、停止模式下都可以使用。关于uart的端口配置,只需要将有UART0_RX以  及 UARTO_TX 功能的引脚设置引脚属性,清空引脚中断标志位,然后就可以使用了。

        2)UART波特率控制方法

    答:UART的波特率又跟时钟有关系,UART0可以运行在所有的低功耗模式下,他有四种时钟源可以选择,而UART1以及UART2只能在busclock时钟运       行。我选择MCGFLLCLK作为UART0的时钟源,OSR采样率为6,SBR设置为26,可得出波特率为115200。所有根据设置OSR以及BR的最小值,可以推断出在这     个时钟源下的最大波特率是多少,详细请查看KL26数据手册第141页。

    3)UART的通信机理、

    答:在我目前的理解看来,uart是异步串行通信协议,他的发送数据和接收数据是以字符位单位的,字符与字符之间的时间间隔是没有时间限制的,     只要检测到起始位,才开始接收数据,发送数据顺序为无数据位、起始位、数据位、奇偶校验位(可有可无)、停止位、字符与字符之间的发送时间     间隔是没有要求的,但是位与位之间的发送间隔必须按照波特率的来,收发两端的时钟可以不一致,但波特率必须要求一致,而接受回来的数据再经     过串->并处理,就可以使用了(发送前也要进行并->串处理)。

    4.png
    5.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-14 15:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    63

    主题

    605

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1783
    最后登录
    2016-11-14
     楼主| 发表于 2015-8-1 15:02:11 | 显示全部楼层
    6.KL26的TPM定时器模块
    1) 定时器的工作模式配置
    答:工作模式有四种,分为:输入捕捉模式、输入比较模式、边沿对齐PWM模式、中心对齐PWM模式。在输入捕获模式中,捕获动作发生在上升沿、下降沿或者是上升/下降沿上。在输出比较模式中,输出信号可以被置位,清零,脉冲调制,或连接匹配。所有通道可以配置为居中对齐PWM模式。

    2)TPM定时周期控制
    答:定时器周期有如下公式:Period = Modulo counter/(Clock source/Prescaler)Modulo counter:模值由TPMx_MOD寄存器控制,16位寄存器,最大模值为65535。Prescaler:预分频因子由TPM_SC[PS]位寄存器控制,具体参数请看数据手册第577页。

    3)TPM时钟源配置

    答:TPM的时钟模式选择由TPMx_SC[CMOD]寄存器控制,具体参数如图:



    10.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-14 15:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    63

    主题

    605

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1783
    最后登录
    2016-11-14
     楼主| 发表于 2015-8-1 15:06:06 | 显示全部楼层
    7.KL26的中断
    答:KL26中断分为内部中断和外部中断,上诉模块中能产生内部中断的有ADC、SPI、UART、TPM等模块,外部中断可以通过设置GPIO口来产生电平变化,从而产生外部中断。将一个IO口配置成中断功能,需要先将IO口设置成GPIO属性以及清除中断标志位,然后以这个中断标志位为判断条件,判断该IO口是否产生中断,相关寄存器有PORT_PCR[IRQC]以及PORT_PCR[ISR],具体参数请看数据手册第197页。关于中断优先级什么的,还有待更深入的研究,这里有份资料,也是之前在论坛上面看到的,大家可以学习学习。


    K60芯片NVIC模块中断相关寄存器配置以及应用举例 .pdf

    402.04 KB, 下载次数: 80, 下载积分: 威望 1

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-14 15:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    63

    主题

    605

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1783
    最后登录
    2016-11-14
     楼主| 发表于 2015-8-1 15:09:48 | 显示全部楼层
    8.KL26的功耗控制
       1)KL26各个功耗模式关系图
       答:KL26的功耗模式有十种:RUN、WAIT、STOP、VLPR、VLPW、VLPS、LLS、VLLS3、VLLS1、VLLS0,他们的关系如下图:

    11.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-14 15:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    63

    主题

    605

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1783
    最后登录
    2016-11-14
     楼主| 发表于 2015-8-1 15:11:20 | 显示全部楼层
    2)各功耗模式下的官方电流参数


    12.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-14 15:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    63

    主题

    605

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1783
    最后登录
    2016-11-14
     楼主| 发表于 2015-8-1 15:12:11 | 显示全部楼层
    3)各功耗模式下的官方电流参数


    14.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-14 15:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    63

    主题

    605

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1783
    最后登录
    2016-11-14
     楼主| 发表于 2015-8-1 15:13:23 | 显示全部楼层
    4)各功耗模式下的唤醒条件

    15.png
    16.png
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-8-9 14:06 , Processed in 0.107154 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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