年轻就要放肆。
级别: 新手上路
UID: 42265
精华: 0
发帖: 31
金钱: 155 两
威望: 31 点
综合积分: 62 分
注册时间: 2011-04-06
最后登录: 2012-12-15
楼主  发表于: 2011-07-26 14:32

 PWM


我在看mini2440 linux移植开发指南中的PWM驱动和测试程序。

其中在PWM驱动程序中有以下内容:

clk_p = clk_get(NULL, "pclk"); //得到 pclk
pclk  = clk_get_rate(clk_p);
tcnt  = (pclk/50/16)/freq; //得到定时器的输入时钟,进而设置 PWM 的调制频率  
__raw_writel(tcnt, S3C2410_TCNTB(0)); //PWM 脉宽调制的频率等于定时器的输入时钟  
__raw_writel(tcnt/2, S3C2410_TCMPB(0)); //占空比是 50%
  而在测试程序中的freq预设为1000.

那PWM的调制频率应该是50Mhz/50/16/1000=62.5HZ,那为什么说是1000HZ呢?我用示波器看也是1000HZ,求指教!  
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
1楼  发表于: 2011-07-26 14:54
50Mhz/50/16/1000 得到的是频率为1000时的计数值
频率应该是 50MHz / 50 / 16 / tcnt
年轻就要放肆。
级别: 新手上路
UID: 42265
精华: 0
发帖: 31
金钱: 155 两
威望: 31 点
综合积分: 62 分
注册时间: 2011-04-06
最后登录: 2012-12-15
2楼  发表于: 2011-07-26 14:57

 回 1楼(911gt3) 的帖子

不太明白,能不能详细讲一下?