(1)预分频器和除法器
一个8 位预分频器和一个独立的4 位时钟除法器可产生下列的输出频率,见表6.50。
表6.50 输出频率表
(2)基本的定时操作
定时器(除定时器5)有TCNTBn、TCNTn、TCMPBn 和TCMPn。 当定时器为“0”时,TCNTBn 和TCMPBn 被装载到TCNTn 和TCMPn。 当TCNTn 为“0”时,如果中断使能的话,将产生中断请求(TCNTn 和TCMPn 是内部寄存器的名称,TCNTn 寄存器可从TCNTOn 寄存器中读出)。
(3)自动装载和双缓冲
S3C44B0X PWM 定时器具有双缓冲特性,可在不停止当前定时器操作的前提下为下一次定时器操作改变其预装载值。 因此,虽重新设定定时器的装载值,但当前定时器的操作仍能成功完成。
定时器的值可写入TCNTBn(定时器计数缓冲寄存器),且定时器的当前计数值可从TCNTOn(定时器计数观察寄存器)中读出。 从TCNTBn 中读出的值,不是计数器的当前状态,而是下一定时器周期的预装值。
自动装载操作是当TCNTn 为“0”时,复制TCNTBn 到TCNTn 中,写到TCNTBn 的值只会在TCNTn 为“0”并且自动装载使能时装载到TCNTn 中。 如果TCNTn 为“0”,自动装载位为“0”,则TCNTn 不再工作。
定时器初始化时使用手动更新位和转换位。 因为定时器的自动装载操作发生在减法计数器为“0”时,TCNTn 的初始值没有预先定义,这种情形下,就必须手动更新装载初值。 开启一个定时器的步骤如下:
①向TCNTBn 和TCMPBn 中写入初始值。
②设置相关定时器的手动更新位。 推荐配置转换开/关位。
③设置相关定时器的开始位启动定时器(同时,清除手动更新位)。
如果定时器被强制关闭的话,TCNTn 就保持计数值且没有从TCNTBn 重新装载计数值。如果新的值必须被重新设置,手动更新就是必需的了。
(4)PWM 脉宽调制
PWM 特性可通过使用TCMPBn 来实现,PWM 频率由TCNTBn 决定。
减小PWM 的输出值,需减小TCMPBn。 为获得更高的PWM 输出值,需增大TCMPBn 的值,若输出转换器使能,增/减可能是颠倒的。(www.xing528.com)
由于双缓冲的特性,为了下一个正确的PWM 周期,可在当前PWM 周期的任意点通过ISR(中断服务程序)或其他程序来写TCMPBn。
(5)输出极性控制
下面的方法可用于保持TOUT 为高或低(假设转换器为关)
①关闭自动预装载位,然后TOUTn 变为“1”,TCNTn 变为“0”后定时器停止,推荐使用该方法。
②通过清除定时器启动/停止位来停止定时器工作,若TCNTn <TCMPn,则输出电平为高电平;若TCNTn >TCMPn,则输出电平为低电平。
③写TCMPBn(该值大于TCNTBn 的值),这将阻止TOUTn 变为高,因为TCMPBn 的值不能与TCNTn 相等。
④TOUTn 可根据TCON 中的转换开/关而反向。 转换器除去额外的电路,以调整输出极性。
(6)死区产生器
死区用于电源设备中的PWM 控制。 该特性用于在开关设备的断开时和另一开关设备开启时插入时间间隔,这个时间间隔禁止两个开关设备同时动作,即使时间很短也不行。
TOUT0 是PWM 的输出,nTOUT0 是TOUT0 取反。 若使能了死区,则TOUT0 和nTOUT0的输出波形将分别为TOUT0_DZ 和nTOUT0_DZ。 这种情况下在死区时间内,TOUT0_DZ 和nTOUT0_DZ 不可能同时被打开,如图6.7 所示。
图6.7 死区特性开启时输出波形比较
(7)DMA 请求模式
PWM 定时器在任何指定的时间均可产生一个DMA 请求。 定时器接收到应答信号ACK之前,PWM 一直保持DMA 请求信号为“0”。 当定时器接收到应答信号时,产生一停止请求信号。 6 个定时器中同时只有1 个可产生DMA 请求,这个定时器通过设置DMA 模式位(在TCFG1 定时器)来决定。 若定时器配置为DMA 请求模式,该定时器将不会产生中断请求,其他可产生普通中断请求。
表6.51 DMA 模式和DMA 请求的配置
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。