概述
在S32K1专栏的《NXP S32K1 Timer之LPIT》中描述了LPIT的寄存器、功能描述,LPIT有4种模式,现将其单独拎出来分析。
相关寄存器
struct {
__IO uint32_t TVAL;
__I uint32_t CVAL;
__IO uint32_t TCTRL;
uint8_t RESERVED_0[4];
} TMR[LPIT_TMR_COUNT];
在LPIT的TMR域中,TVAL是设定值,CVAL是变化的递减值,TCTRL是控制寄存器。
T_EN: Timer Enable
CHAIN: Chain Channel
MODE:
00b - 32-bit Periodic Counter
01b - Dual 16-bit Periodic Counter
10b - 32-bit Trigger Accumulator
11b - 32-bit Trigger Input Capture
TSOT: Timer Start On Trigger
TSOI: Timer Stop On Interrupt
TROT: Timer Reload On Trigger
TRG_SRC: Selects internal triggers
模式0-32位周期计数器模式
因TSOT、TROT、TSOI 产生8种场景组合。
Case1-周期中断
在这种模式下,当T_EN使能后,CVAL根据TVAL递减到0,产生中断,产生触发信号,CVAL继续重载,循环如此,周期的产生中断。在该模式下,输入触发被忽略。
Case2-单次中断
在Case-1基础上,TSOI=1,(Stop On Interrupt),输出效果同Case-1,只是发生一次中断后变停止了。
Case3-触发重载
在Case-1基础上,TROT=1,(Reload On Trigger),输出效果同Case-1,只是当有IN_TRIG触发信号时,CVAL重载TVAL,循环往复。
Case4-触发单次重载
Case3叠加Case2,单次结束后再有触发信号也被忽略。
Case5-触发开始
在Case-1基础上,TSOT=1,(StartOn Trigger),输出效果同Case-1,只是当T_EN使能时,没有开始,需要有一个IN_TRIG触发信号时,才开始周期往复,后续再有触发信号也被忽略。
Case6-触发开始中断停止
在Case-1基础上,TSOT=1,(Start On Trigger),TSOI=1,(Stop On Interrupt),效果叠加,因为输入触发开始了,中断结束了,后续再触发,再停止…。
…
模式1-16位周期计数器模式
差不多同模式0,只是触发输出事件长一点。
模式2-32位触发累加器模式
依据TSOI产生2种场景,对IN_TRIG进行计数,每来一个IN_TRIG上升沿,CVAL根据TVAL递减到0,然后中断,触发输出。
Case0-周期模式
Case1-单次模式
模式3-32位触发捕获模式
依据TSOI , TROT产生4种场景,CVAL不停的从0xFFFFFFFF递减到0,当有IN_TRIG时,TVAL捕获到CVAL的反向值,然后中断,触发输出。
总结
LPIT寄存器简单,控制容易,具有4个通道,适合用作周期中断。
|