NXP S32K1 Timer之LPTMR

概述

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

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

特征

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

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

模式

NXP S32K1 Timer之LPTMR

引脚

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

NXP S32K1 Timer之LPTMR
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能够触发事件到其它外设,在不需要软件干预情况下。
NXP S32K1 Timer之LPTMR

上一篇:zabbix 2.4 连接不上数据库的问题


下一篇:Zabbix监控学习系列(1):centos8.3部署Zabbix5.4(Mysql&Apache)