欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

X281xDSP——CPU定时器工作原理分析

程序员文章站 2022-06-09 16:44:11
...

CPU定时器工作原理分析

X281xDSP——CPU定时器工作原理分析

可以由图看出有几个寄存器:

  • 32位的定时器周期寄存器 PRDH:PRD
  • 32位的计数器寄存器TIMH:TIM
  • 16位的定时器分频器寄存器TDDRH:TDDR
  • 16位预定标计数器PSCH:PSC

解释:

  1. XH:X形式表示寄存器的方式
  2. 因为X281x DSP的寄存器都是16位的,而CPU定时器是32位的,所以需要将2个16位的寄存器XH和X来表示32位的寄存器(XH表示高16位,X表示低16位)
  3. 通过图我们可以类比的看出它其实有点想两层for循环,即如下所示
int i,j;
for(i=0; i<100; i++)
	for(j=0; j<100; j++)
	{...}

下图或许更能看出这种关系,上面框框为外循环,下面框框为内循环
X281xDSP——CPU定时器工作原理分析
在上面那个框中,在CPU定时器工作前,先根据需要计算好CPU定时器周期寄存器的值,然后给PRDH:PRD赋值,相当于for循环中的i=100。开始工作时将PRDH:PRD的值装载入TIMH:TIM,然后没来一个脉冲,减一,然后判断是否为0,则一直递减,当为0时输出一个中断信号。所以一个CPU定时器周期所经历的时间为:(PRDH:PRD+1)*TIMCLK
而计数器存储器TIMH:TIM多久减1是由下面框中PSCH:PSC多久为0决定。同理可以得出TIMCLK = (TDDRH:TDDR+1)*SYSCLKOUT
综上,假设系统时钟SYSCLKOUT的值为X(单位为MHz),那么CPU定时器一个周期所计量的时间为T = (PRDH:PRD+1)*(TDDRH:TDDR+1)/ (X*10^6)(单位为s)