nRF52832——定时器 TIME-原理分析

和其他 MCU 处理器一样,在 nRF52832 中定时器的功能是十分强大的。其内部包含了 5 个定 时器 TIMER 模块:TIMER0、TIMER1、TIMER2、TIMER3、TIMER4,如下表:
在这里插入图片描述
定时器有着不同的位宽选择,位宽的大小直接决定了计数器的最大溢出时间。处理器可以通过 BITMODE 选择不同的位宽,该寄存器位于计数器内部。如下图所示。

BITMODE 寄存器:配置计数器使用的位宽。
在这里插入图片描述
下图为定时器内部结构图,下面结合结构图来详细分析下其基本工作原理以及相关概念:
在这里插入图片描述

  • 时钟源
    首先定时器 TIMER 工作在高频时钟源(HFLCK)下,同时包含了一个 4bit(1 / 2X)的分频 (PRESCALER),可以对高频时钟源(HFLCK)进行分频。框图入口处给了两个时钟源表示两种时 钟输入模式:1MHz 模式(PCLK1M)和 16MHz 模式(PCLK16M)。时钟源通过分频器分频后输出一 个频率 fTIMER ,系统将会通过这个参数来自动选择时钟源,而不需要工程师设置寄存器。

    • 当 fTIMER 1MHZ 时,系统自动选择 PCLK16M 作为时钟源。
    • 当 fTIMER 1MHZ 时,系统会自动用 PCLK1M 替代 PCLK16M 作为时钟源以减少功耗。
  • 分频器
    分频器对输入的时钟源进行分频。输出的频率计算公式如下:
    在这里插入图片描述
    公式中的 HFLCK 不管是使用哪种时钟源输入,计算分频值的时候都使用 16MHz。PRESCALER 为一个 4bit 的分频器,分频值为 0~15。当 PRESCALER 的值大于 9 后,其计算值仍然为 9,即 fTIMER 的最小值为 16/29 。通过设置寄存器 PRESCALER 可以控制定时器的频率。
    PRESCALER 寄存器:预分频寄存器
    在这里插入图片描述

  • 工作模式
    定时器 TIMER 可以工作在两种模式下:定时器模式(timer)和计数器模式(counter)。工作模式通过寄存器 MODE 进行选择。

    • 当 MODE 设置为 0 的时候为定时器模式,
    • 设置为 1 的时 候为计数器模式,
    • 设置为 2 时,选择低功耗的计算器模式。
      MODE 寄存器:定时器模式设置寄存器
      在这里插入图片描述
  • 比较/捕获功能
    定时模式下设定比较(Compare)/捕获(Capture)寄存器 CC[n]的值,可以设置定时的时间(Timer value)
    在这里插入图片描述
    当定时时间的值跟 CC[n]寄存器的值相等时,将触发一个 COMPARE [n] event。COMPARE [n] event 可以触发中断。如果是周期性的触发,则需要在触发后清除计数值,否则会一直计数,直到溢出。 计数模式下,每次触发 COUNT 任务时,TIMER 的内部计数器 Counter 寄存器都会递增 1,同时,计数器模式下是不使用定时器的频率和预分频器,COUNT 任务在定时器模式下无效。通过设定一个 CAPTURE Task,捕获的计数器的值存储到 CC[n]寄存器内,然后对 CC[n]寄存器进行读取计数的值。

  • 任务延迟和优先级

    • 任务延迟:TIMER 启动后,CLEAR 任务,COUNT 任务和 STOP 任务将保证在 PCLK16M 的一 个时钟周期内生效。
    • 任务优先级:如果同时触发 START 任务和 STOP 任务,即在 PCLK16M 的同一时段内,则优先执行STOP 任务。 下表是定时器的寄存器列表,详细说明如下
      在这里插入图片描述
上一篇:《MobileFaceNet:一种用于移动设备实时人脸验证的高效CNN》论文阅读


下一篇:设计用于驱动12 V汽车接地负载,VN5E160ASTR、VND5E160MJTR、VND5E025AKTR、VND5E050ACKTR 单/双通道高侧驱动器