CC2530的定时器1(T1)是16位多功能定时器,支持三种工作模式:自由运行模式、模模式和正计数/倒计数模式。以下从模式原理、配置方式、应用场景及寄存器设置等角度进行详细解析:
一、工作模式详解
1.自由运行模式(Free Running Mode)
工作原理:
计数器从0x0000开始递增,每个时钟边沿加1.达到最大值0xFFFF时溢出并自动复位到0x0000重新计数。
特点:
溢出周期固定为0xFFFF,不可自定义。
溢出时触发中断标志IRCON.T1IF和T1STAT.OVFIF。
应用场景:
适用于需要连续周期性中断的场合,如简单定时任务或高频信号生成。
2.模模式(Modulo Mode)
工作原理:
计数器从0x0000递增至用户设定的最大值(存储在T1CC0寄存器),达到后复位到0x0000重新计数。
特点:
周期可通过T1CC0灵活配置,计算公式为:
周期=定时时长/时钟周期×分频系数
适用于需要精确控制溢出时间的场景,如周期可调的PWM输出。
应用场景:
精准定时(如秒闪LED)、频率可调的PWM信号生成。
3.正计数/倒计数模式(Up/Down Mode)
工作原理:
计数器从0x0000正向计数到T1CC0设定值,再反向递减至0x0000.形成一个对称周期。
特点:
周期是模模式的两倍(从0x0000到T1CC0再返回)。
适用于需要对称脉冲输出的应用,如中心对齐的PWM(用于电机控制)。
应用场景:
电机驱动、对称PWM生成(如呼吸灯、调光系统)。
二、配置寄存器设置
定时器1的模式选择通过T1CTL寄存器的MODE[1:0]位实现,具体配置如下:
模式 | T1CTL.MODE[1:0] | 关键寄存器 | 说明 |
---|---|---|---|
自由运行模式 | 01 |
T1CTL 、T1STAT |
无需设置T1CC0 ,周期固定 |
模模式 | 10 |
T1CC0H:T1CC0L |
需写入最大计数值到T1CC0 |
正计数/倒计数模式 | 11 |
T1CC0H:T1CC0L |
需设置T1CC0 ,且中断触发在倒计数结束时 |
此外,时钟分频通过T1CTL.DIV[1:0]设置(分频系数可选1、8、32、128),影响计数速度。
三、典型应用实例
PWM输出:
在正计数/倒计数模式下,结合通道比较功能,可生成中心对齐的PWM信号,用于电机调速或LED调光。
精确定时:
模模式常用于实现秒级定时(如LED闪烁),通过分频和T1CC0的配合达成。
输入捕获:
自由运行模式配合输入捕获通道,可测量外部信号的频率或脉宽。
四、中断与DMA触发
中断机制:
每种模式均可在溢出时触发中断,需使能TIMIF.OVFIM(溢出中断屏蔽位)和IEN1.T1EN(定时器1中断使能)。
DMA支持:
定时器1可触发DMA传输,用于高效数据搬运(如ADC采样结果存储)。
五、模式对比与选型建议
模式 | 周期可控性 | 适用场景 | 复杂度 |
---|---|---|---|
自由运行模式 | 低 | 简单定时、高频中断 | 低 |
模模式 | 高 | 精确周期控制、可变PWM | 中 |
正计数/倒计数模式 | 中 | 对称脉冲输出、电机控制 | 高 |
建议:优先选择模模式进行通用定时任务,需对称输出时切换至正计数/倒计数模式。
通过上述分析,可全面掌握CC2530定时器1的三种工作模式及其应用方法,为实际开发提供技术依据。