智能车制作

标题: PWM 通道时钟周期是什么?? [打印本页]

作者: 枫恣零    时间: 2013-2-1 10:08
标题: PWM 通道时钟周期是什么??
实际应用:
    目标:输出一个周期为400ms ,占空比为50%的方波。
    分析:首先利用PLL 将周期设置为40M ,

    然后选择时钟源
    PWMCLK = 0xFF;    /* 选择时钟源 SA,SB*/
    PWMPRCLK = 0x77;   /* clock A,B =总线时钟/128 */
    PWMSCLA = 0;     /* clock SA = Clock A/512 */
    PWMSCLB = 0;     /* clock SB = Clock B/512 */
    这个时候时钟SA 或SB 为40M/128/512 = 610HZ
    1/610HZ=1.64ms

    我们选择中间对齐模式:
    PWMCAE = 0xFF;   /* 输出时是中间对齐的 */
    PWMPOL = 0xFF;   /*输出以高电平开始 ---___*/

    接下来就要选择周期了:
    中间对齐时:PWM 周期=通道时钟周期*2*PWMPERX;因为要设置周期为400ms ,所
以 400ms = (1000/610)ms * 2 *PWMPERX, 由此可以算出PWMPER=122=0x7A.
    PWMPER0=0x7A;
    接下来设置占空比:
    当PPOLx=1 时,占空比= 占空比寄存器值除以周期寄存器值。50%= PWMDTY0/122,
所以PWMDTY0=61=0x3D
     PWMDTY0=0x3D;
接下来启用PWM 通道0 :
    PWME=0x01;

就这里面 (1000/610)ms 是怎么回事??



O(∩_∩)O谢谢啦

作者: 狂想症    时间: 2013-2-1 10:08
通道时钟频率为40M/128/512 = 610HZ
那么通道时钟周期 = 1000/610 ms
作者: 翱翔2012    时间: 2013-2-25 16:46
嗯,毫秒与秒的单位。。。。。。
作者: @飞    时间: 2013-4-19 09:34
PWMSCLA = 0;     /* clock SA = Clock A/512 */
当中的512怎么得来的啊!
作者: junfan0623    时间: 2013-5-8 22:24
PWMSCLA = 0;     /* clock SA = Clock A/512 */
    PWMSCLB = 0;     /* clock SB = Clock B/512 */  全0意思是PWMSCLB值等于 2的9次方?
作者: JASN    时间: 2013-9-1 19:24
junfan0623 发表于 2013-5-8 22:24
PWMSCLA = 0;     /* clock SA = Clock A/512 */
    PWMSCLB = 0;     /* clock SB = Clock B/512 */  全 ...

PWMSCLA=0时,默认比例因子为256,此时Clock SA 的频率等于Clock A 的频率除以512
PWMSCLB同理。

作者: 小布的梦    时间: 2014-2-21 17:38
这个帖子很棒  
顶起!
作者: 小布的梦    时间: 2014-2-21 18:44
:):):)
作者: 空有一人    时间: 2014-9-29 19:48
我理解的没错
作者: 李威风12138    时间: 2014-10-1 10:07

作者: 清风幕竹    时间: 2015-1-21 21:11
好贴,挺具体的!!!!
作者: 笑话不冷    时间: 2015-3-14 11:08
最近也在研究PWM,很有用




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2