您的位置 首页 ADAS

ARM9基础教程lessen2—定时器

上篇IO控制文章中,程序需要延时时,我们是利用循环语句来实现。这种方法的延时简单,但不是很精确。当需要精确延时时,就不能采用这

上篇I/O操控文章中,程序需求延不时,咱们是运用循环句子来完结。这种办法的延时简略,但不是很准确。当需求准确延不时,就不能选用这种办法了。一般是运用守时器来完结。在这里,咱们就介绍一下s3c2440守时器。

► S3C2440的时钟源
在解说之前,先介绍一下s3c2440时钟体系。一般来说,MCU的主时钟源首要是外部晶振或外部时钟,而用的最多的是外部晶振。在正确情况下,体系内所运用的时钟都是外部时钟源经过必定的处理得到的。因为外部时钟源的频率一般不能满意体系所需求的高频条件,所以往往需求PLL(锁相环)进行倍频处理。在s3c2440中,有2个不同的PLL,一个是MPLL,另一个是UPLL。
UPLL是给USB供给48MHz。在这里,咱们首要介绍MPLL。外部时钟源经过MPLL处理后可以得到三个不同的体系时钟:FCLK、HCLK和PCLK。
♥ FCLK是主频时钟,用于ARM920T内核;
♥ HCLK用于AHB总线设备,如ARM920T,内存操控,中止操控,LCD操控,DMA以及USB主模块;
♥ PCLK用于APB总线设备,如外围设备的看门狗,IIS,I2C,PWM,MMC接口,ADC,UART,GPIO,RTC以及SPI。
这三个体系时钟(FCLK、HCLK和PCLK)是有必定的比例联系,这种联系是经过寄存器CLKDIVN中的HDIVN位和PDIVN位来操控的,因而咱们只需知道了FCLK,再经过这两位的操控,就能确认HCLK和PCLK。
而FCLK是怎么得到的呢?它是经过输入时钟(即外部时钟源)的频率,经过一个核算公式(详细公式请查阅数据手册)得到的,这个核算公式还需求三个参数(MDIV、PDIV、SDIV),而这三个参数是经过寄存器MPLLCON装备得到的。
最终,咱们用最明晰的线路来制作一下时钟的发生进程:
外部时钟源→经过寄存器MPLLCON得到FCLK→再经过寄存器CLKDIVN得到HCLK和PCLK。
这个装备进程在发动文件中就已完结。例如,外部晶振为12MHz,进过MPLL倍频今后得到400MHz的FCLK,而FCLK、HCLK、PCLK之间的比例联系为1:4:8,因而HCLK为100MHz,PCLK为50MHz。

► S3C2440的守时器特性
S3C2440有5个16位的守时器,守时器0~3有脉宽调制功用(PWM)。守时器4没有输出引脚的内部守时器。守时器0有一个用于大电流设备的死区生成器。S3C2440守时器0和1同享一个8位的预分频器,守时器2、3、4同享另一个8位预分频器。每个守时器有一个时钟分频器,其间以生成5种不同的分频信号。
每个守时器有一个自己的由守时器时钟驱动16位递减计数器,当递减计数器为零时,守时器中止请求生成告诉CPU守时器操作完结。
S3C2440守时器特性如下:
◎ 5个16位守时器
◎ 两个8位预分频器和2个4位分频器
◎ 输出波形的可编程使命操控
◎ 主动重载形式或单脉冲形式
◎ 死区生成器

► S3C2440的守时器寄存器
S3C2440守时器:
● 守时器装备寄存器(TCFGn);
● 守时器操控寄存器(TCON);
● 守时器n计数缓存寄存器(TCNTBn),守时器n比较缓存寄存器(TCMPBn);
● 守时器计数调查计数器。
守时器寄存器详细阐明请查阅S3C2440芯片手册。

♥ 守时器装备寄存器(TCFGn)
守时器装备寄存器用于装备两个8位预分频器值,该寄存器复位值为0,守时器输出时钟频率核算如下:
守时器输出时钟频率 = PCLK / (预分频器值+1) / 分频值

● TCFG0装备寄存器:[0-7]装备守时器0,1的预分频值;[8-15]装备守时器2,3,4的预分频值。
● TCFG1装备寄存器:[0-3]装备守时器0分频值;[4-7]装备守时器1分频值;[8-11]装备守时器2分频值;[12-15]装备守时器3分频值;[16-149]装备守时器4分频值;

♥守时器操控寄存器(TCON)
TCON寄存器用于操控守时器0~4,寄存器复位值为0。

TCON寄存器 描绘
0~3 操控守时器0:使能[0]、手动更新[1]、匹配输出[2]、主动重载[3]
4 死区使能
8~11 操控守时器1:使能[8]、手动更新[9]、匹配输出[10]、主动重载[11]
12~15 操控守时器2:使能[12]、手动更新[13]、匹配输出[14]、主动重载[15]
1516~19 操控守时器3:使能[16]、手动更新[17]、匹配输出[18]、主动重载19]
20~22 操控守时器4:使能[20]、手动更新[21]、主动重载[23]

♥ 守时器n计数缓存寄存器(TCNTBn),守时器n比较缓存寄存器(TCMPBn)
守时器计数与比较缓存寄存器用于缓存用户所给的守时值,当装备TCON寄存器守时器n使能“手动更新”时,该值将在下一个守时发动时装载到TCMPn与TCNTn中,从头进行守时。例如,守时器0内部结构如图所示:

TCMP0与TCNT0不能直接对其操作。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/adas/260769.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部