MCU

ADSP-BF533定时器入门(原创)

0
阅读(3983)

由于上个月插入ADP5588芯片的学习,这个继续学习ADSP-BF533的定时器。Blackfin处理器上总共有6个定时器,3个通用的可编程定时器,一个看门狗定时器和一个内核定时器和一个RTC定时器,今天主要是对通过定时器进行学习。

通用的定时器可以分别被配置成下面三种模式中的任意一种:

1.脉冲宽度调整模式,即PWM模式;

2.脉冲宽度计数和捕捉模式,即WDTH_CAP模式;

3.外部事件模式;

每一个通用定时器在芯片上都有一个专用的双向管脚,TMRx. 这个管脚在PWM模式中是作为输出管脚,而在WDTH_CAP模式和外部事件模式中则是作为输入管脚。为了实现定时器的各个功能,必须对相关的寄存器进行设置。每个通用定时器都有4个寄存器,具体包括有定时器配置寄存器TIMERx_CONFIG、定时器计数器TIMERx_COUNTER、定时器周期TIMERx_PERIOD和定时器脉冲宽度寄存器TIMERx_WIDTH.

这三个通用定时器也同时共享3个寄存器:使能寄存器TIMER_ENABLE,禁止寄存器TIMER_DISABLE和状态寄存器TIMER_STATUS。使能寄存器TIMER_ENABLE可以同时使能3个定时器,有3个写1使能位,每一位对应一个定时器。同样,禁止寄存器TIMER_DISABLE也有3个写1禁止位,每一位对应一个定时器。读取寄存器TIMER_ENABLE和TIMER_DISABLE的值可以返回定时器的使能情况。最后说一下状态寄存器TIMER_STATUS,该寄存器中有3个中断锁存位TIMILx、3个上溢/错误标志位TOVF_ERRx和3个指示定时器是否运行的状态位TRUNx,分别对应于每个定时器,这些寄存器由硬件置位,由软件写1来清零。

最后说一下BF533定时器的工作原理和定时时间的计算:

1.BF533定时器是基于加计数模式的计数定时器,当定时器被使能后,定时器计数器COUNTER将从零开始计数,当计数值达到定时器周期PERIOD后,状态寄存器STATUS中的TOVF_ERRx位将被置1(不断读取该值可通过查询法实现定时功能),这时如果系统的定时器中断有开,系统将进入中断处理函数,即通过中断法实现定时功能。

2.定时时间的计算:在配置寄存器CONFIG中有一个CLK_SEL位,该位用于定时器时钟的选择,当为0时,选择系统时钟用于计数;当为1时,选择PWM时钟用作计数。这里以系统时钟为例,假设芯片的系统时钟为133MHZ,那么定时器的最大定时时间为((2^32-1)/133MHZ)=32.2seconds 。其中32为定时器TIMER_COUNTER的位宽。当TIMER_PERIOD设置为m值时,系统的定时时间则为m/133MHZ,呵呵,是不是很简单呢,好吧,今天就到此,明天再看看例程。