CC3200AI实验教程
——疯壳·开发板系列
PWM
PWM(Pulse Width Modulation)即脉冲宽度调制。PWM运用非常的广泛,大到航天飞船,小到便携式USB风扇都可以见到PWM的身影。
许多MCU的定时器均带有PWM模式,CC3200也不例外。
1.1寄存器
CC3200通用定时器支持PWM模式。在PWM模式下,定时器被配置为一个24位的减计数器,初始值在GPTMTnILR和GPTMTnPR寄存器中进行定义。在该模式中,PWM频率和周期是同步事件,这样可以消除毛刺。PWM模式可以通过向寄存器 GPTMTnMR中的TnAMS位写入0x01,TnCMR位写入0x00,TnMR位写入0x02。当定时器使能时,装载到定时器寄存器中的值如表1.0.1所示。
表1.0.1 装载到定时器的值
表1
当通过软件写GPTMCTL寄存器中的TnEN位时,计数器开始进行减计数直到0。在周期模式中的下一个计数循环,计数器从GPTMTnILR和GPTMTnPR寄存器中装载初始值,并重新开始计数直到通过软件清除GPTMCTL寄存器中的TnEN位进行关闭。该定时器可以通过上升沿、下降沿和边沿触发这3种类型的事件来产生中断。事件类型通过GPTMCTL寄存器中的TnEVENT位来进行配置。中断通过
GPTMTnMR寄存器中的TnPEMIE位来进行使能。当事件发生时,GPTMRIS寄存器中的CnERIS位被置位。并且一直保持到通过GPTMICR寄存器来进行清除。如果捕捉模式事件中断通过GPTMIMR寄存器进行使能,则通用定时器也要置位GPTMMIS寄存器中的CnEMIS位。需要注意的是中断状态只有在TnPWMIE被置位时才会更新。
另外,通过置位GPTMCTL寄存器中的TnOTE位和GPTMDMAEV寄存器中的
CnEDMAEN位使能DMA触发模式,则当TnPWMIE被置位并且发生捕捉时间时, 定时器自动产生DMA的触发事件。
在PWM模式中,GPTMTnR和GPTMTnV寄存器始终保持相同的值。
当计数器的值等于GPTMTnILR和GPTMTnPR寄存器的值时,输出PWM信号, 当计数器的值等于GPTMTnMATCHR和GPTMTnPMR寄存器的值时,信号进行翻转。可以通过软件设置GPTMCTL寄存器中的TnPWML位,来对PWM信号的电平进行翻转。这里要注意的是如果PWM输出翻转使能了,那么边沿检测的行为就会相反,本来上升沿有效的,现在就变成了下降沿有效。
如图1.0.1就是一个产生PWM信号的例子。
图1.0.1 产生PWM信号的例子
图1
GPTMCFG寄存器配置通用定时器模块的全局操作。确定通用定时器工作于32位模式还是16位模式。该寄存器中的值只能是在GPTMCTL寄存器中的TAEN和TBEN 两位被清零时改变。如图1.0.2所示为该寄存器及其位定义。
图1.0.2 GPTMCFG寄存器及其位定义
图2
即把2~0 位写入0,配置为32位定时器模式;写入4,配置为16位定时器模式。
GPTMTAMR寄存器的配置是基于GPTMCFG寄存器的配置来进行选择的。在 PWM模式中,置位TAAMS位、清除TACMR位和配置TAMR为0x01或者0x02。如图1.0.3所示为GPTMTAMR寄存器,如图1.0.4为其位定义。
图1.0.3 GPTMTAMR寄存器
图3