ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

NXP S32K1 Timer之LPTMR

2022-01-07 18:57:59  阅读:305  来源: 互联网

标签:CNR NXP LPTMR Counter Timer filter S32K1 CSR


概述

S32K1具有丰富的Timer资源,今天,我们从最简单的LPTMR开始。

LPTMR:Low Power Timer ,S32K1xx有一个LPTMR模块,该模块是一个通道的16bit时间(time counter)或者脉冲计数器。 可配置为带有可选预分频器的时间计数器,或带有可选毛刺滤波器的脉冲计数器,适用于所有功耗模式,包括低泄漏模式。 它还可以在大多数系统重置事件中继续运行,从而可以将其用作时间计数器。

特征

-16位带比较器的时间计数器或脉冲计数器;
可选中断可从任何低功耗模式产生异步唤醒
硬件触发输出
计数器支持自由运行模式或比较触发复位

  • 可配置时钟源
  • 可配置脉冲计数器输入源(上升沿或者下降沿)

模式

操作模式

引脚

LPTMR_ALTn Pulse Counter Input

内存映射

/** LPTMR - Register Layout Typedef */
typedef struct {
  __IO uint32_t CSR;           /**<  Control Status Register */
  __IO uint32_t PSR;           /**<  Prescale Register */
  __IO uint32_t CMR;           /**<  Compare Register  */
  __IO uint32_t CNR;           /**<  Counter Register  */
} LPTMR_Type, *LPTMR_MemMapPtr;

CSR

CSR
TDRE: Timer DMA Request Enable
TCF: Timer Compare Flag, 1b - The value of CNR is equal to CMR and increments.
TIE: Timer Interrupt Enable
TPS: Timer Pin Select
TPP: Timer Pin Polarity
0:CNR increments on the rising-edge.
1:CNR increments on the falling-edge.
TFC: Timer Free-Running Counter
0b - CNR is reset whenever TCF is set.
1b - CNR is reset on overflow
TMS: Timer Mode Select
0b - Time Counter mode.
1b - Pulse Counter mode.
TEN: Timer Enable

PSR

BIT6-3: PRESCALE
BIT2: PBYP Prescaler Bypass
BIT1-0: PCS Prescaler Clock Select

功能描述

电源与复位

LPTMR在所有模式下保持供电,如果在低功耗模式下不需要LPTMR,应在进入低功耗前将其失能。

LPTMR仅在全局上电复位POR和低电压监测LVD情况下复位,失能情况下配置LPTMR CMRPSR,然后CSR[TIE]置位使能。

时钟

LPTMR prescaler/glitch filter的时钟必须在模块使能前配置,可从4个中选择一个。 PSR[PCS]选择的时钟必须在低功耗模式下保持,LPTMR才能在低功耗模式下运行。
输入脉冲时钟不应超过fLPTMR。

prescaler/glitch filter

在Time Counter模式下,当prescaler使能,prescaler的输出为CNR提供时基,CNR在2^2 到 16预分频时钟下加1,LPTMR 使能后,由于同步逻辑,CNR 的第一个增量需要额外的一个或两个预分频器时钟周期。
当prescaler被旁路bypassed,CNR在prescaler的每个时钟周期加1.

在Pulse Counter 模式下,当glitch filter使能,glitch filter的输出为CNR提供时基。CNR在glitch filter 的输出有效下加1,
if(The selected input source remains asserted for at least 2^1 to 15 consecutive prescaler clock rising-edges)
then(The glitch filter output also asserts.)
当glitch filter被旁路bypassed,CNR在glitch filter的每个时钟周期加1.
在LPTMR 初次使能前,选择的时钟强制为高,避免CNR意外计数。

LPTMR counter

The CNR increments by one on every:
• Prescaler clock in Time Counter mode with prescaler bypassed
• Prescaler output in Time Counter mode with prescaler enabled
• Input source assertion in Pulse Counter mode with glitch filter bypassed
• Glitch filter output in Pulse Counter mode with glitch filter enabled
当LPTMR失能或者CNR溢出或者CSR[TFC] w1c时,CNR复位。

当在调试模式内核暂停时:

  • Pulse Counter mode, the CNR continues incrementing
  • Time Counter mode, the CNR stops incrementing.

CNR读取前,先随意写入一个值,再读取,这样是从临时寄存器中读取到的当前CNR。

当读取CNR,bus clock必须大于CNR增速2倍,否则读取的数据不正确。

LPTMR compare

CMR==CNR时:
• CSR[TCF] is set.
• LPTMR interrupt is generated if CSR[TIE] is also set.
• LPTMR hardware trigger is generated.
• CNR is reset if CSR[TFC] is clear

当更新CMR时,还需CSR[TCF]被清除。
当 LPTMR 在时间计数器模式下启用时,由于同步逻辑,第一个增量将需要一个或两个时钟周期。 这将导致第一次比较(因此中断和硬件触发)稍晚发生。更快的预分频器时钟或更大的预分频器值将最大限度地减少这种影响。

LPTMR interrupt

当CSR[TIE] 使能,CSR[TCF] 置位时中断产生,该中断能任意模式下产生唤醒。

LPTMR hardware trigger

CSR[TCF]置位时,硬件触发。LPTMR hardware trigger能够触发事件到其它外设,在不需要软件干预情况下。
hardware trigger

标签:CNR,NXP,LPTMR,Counter,Timer,filter,S32K1,CSR
来源: https://blog.csdn.net/Kinetis_Linux/article/details/122358150

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有