NXP MCU 技术论坛
直播中

芒果冰

11年用户 920经验值
私信 关注
[讨论]

基于KL25的ADC乒乓模式采样——上篇

ADC 与 TPM 是 Kinetis 的 L 系列 MCU 的重要模块, ADC 可为开发者提供最高精度可达
16 位的 A/D 采样,而 TPM 可用于输入捕捉、比较输出以及 PWM 输出等,俩模块功能强大﹑
性能优越,早已让飞粉们垂涎三尺,但 ADC 与 TPM 的寄存器繁多,加上工作模式多样,常让
小伙伴们望而却步(心里那个恨啊)。飞思卡尔中文论坛支持小组与飞粉们心有灵犀,知道大
家在使用 ADC 与 TPM 过程中遭了不少罪,所以果断推出此文,通过 PE+ADC+TPM 的强强联
合,实现 ADC 的 Ping-Pong 模式。
①运行平台     
  • FRDM-KL25Z
  • CW10.4或10.5

②预备知识
1.   ADC特性介绍:
  • 采用高达16位精度的线性逐次逼近算法(速度比Sigma  Delta有优势,精度还能达到如
此程度,实属不易);
  • 具有多达4对的差分模拟输入和24个单端模拟输入引脚(应该能满足一般工业要求啊);
  • 输出模式支持:差分为16位、13位、11位以及9位模式,单端为16位、12位、10位以及8位模 式;
  • 输入时钟种:bus_clock、bus_clock/2、ALTCK、ADACK,且ADC可配置不同的采样
速率和转换速度。
  • 硬件平均功能(可节省代码量,感觉挺实用);
  • 具有小于、大于、等于、范围内、范围外和可编程值的自动比较中断;
  • 内置温度传感器(用于监控芯片温度);
  • 具有自校准模式;

但就罗列出的特性即可看出ADC功能是很强大的,应付一般的工业应用是没有任何问题的,
如果小伙伴想更深入的了解ADC模块的原理结构(如图1所示)、应用细节,可查阅参考手册
的ADC章节。
图片1.jpg
图 1 ADC内部结构框图

2.   TPM特性介绍:

  • 可选择不同的时钟源:MCGIRCLK、OSCERCLK、MCGFLLCK、MCGPLLCK;
  • 具有16位的计数器,可以自由计数,计数方向可加亦可减;
  • 包含有6个通道,可配置为输入捕捉、输出比较和边缘对齐或中心对齐PWM模式;
  • 所有通道都可产生中断和DMA请求;
  • 可选的输入触发源用于复位或启动计数;
TPM的时钟模式是相当多样的,能胜任大多数客户对时钟模式以及PWM输出的要求,而K
系列MCU的FTM模块作为其增强版,其性能更加优越、功能模式也更加丰富,能满足更多用
户的要求(在以后的文档中会有介绍)。TPM内部结构原理图如下所示。
图片2.jpg
图2 TPM内部结构框图
③ 例程功能
配置TPM1的CH0和CH1为Edge-Aligned PWM模式,并以CH0F,CH1F标志作为ADC0硬件
触发源(工作原理如图3所示),使得ADC0形成Ping-Pong模式,采样内置温度传感器和Bandgap
的值,并将采样的数据通过串口传出。
图片3.jpg
图 3 CH0F,CH1F触发ADC
   ④ PE配置说明
例程使用下列 IO 引脚资源,以及每个 IO 引脚的功能描述如下:


4.jpg
为了节省小伙伴们创建新工程的时间,避免创建工程中的重复劳动,建议大伙好好利用
Processor  Expert的导出及载入特性,在此例程中,本人首先将例程hello  world的工程配置导出,
接着在新建的工程中导入hello world的工程配置,避免重新配置Processor和Components操作。

工程建立
小伙伴们可采用两种方法建立自己所需要的工程,第一种(最简单易懂)即从零开始,利
用PE工具建立新工程,本例程就是采用这种方法;而第二种即是导入现有工程,然后在此基
础上根据所需工程要求做修改。这些应该对小伙伴们来说应该不陌生吧,所以也不做过多的介
绍,如有对工程建立有疑惑的童鞋们可查阅本文末尾的参考资料。

Components 配置
1)   Processor 配置
如上所述,本例程建立采用工程建立的第一种方式,至于对 Processor 配置,则是利用
Processor Expert 的导出及载入特性,直接导入 hello world 的工程配置。



更多回帖

发帖
×
20
完善资料,
赚取积分