智能车制作

标题: 龙丘模块中的PWM分频是怎么做到的? [打印本页]

作者: 总是忘记账号    时间: 2012-12-15 23:39
标题: 龙丘模块中的PWM分频是怎么做到的?
最关键的语句是这样的:
/*********************************************************************************************
FTM1_MOD=1000;  //Modulo value,The EPWM period is determined by (MOD - CNTIN + 0x0001)
                        //采用龙丘时钟初始化函数,可以得到2分频的频率,系统60M频率时,PWM频率是30M,以此类推
                       //PMW频率=X系统频率/2/(2^FTM1_SC_PS)/FTM1_MOD=125000000/2/(2^4)/1000=3906HZ

*********************************************************************************************/

明明龙丘给的核心板是50M的晶振,那那个125M的X系统频率从何而来?后面的2呢?我想分出一个12MHz上下的PWM波应该怎么办啊?谢谢!

作者: 洋葱圈    时间: 2012-12-15 23:46
50M是外部时钟源、内部需要倍频到不同的频率。
我们的底层库中有PWM代码,可供你参考:http://www.znczz.com/thread-112632-1-1.html

作者: 总是忘记账号    时间: 2012-12-15 23:59
洋葱圈 发表于 2012-12-15 23:46
50M是外部时钟源、内部需要倍频到不同的频率。
我们的底层库中有PWM代码,可供你参考:http://www.znczz.c ...

大半夜的,来不及看了,先谢谢了哈

作者: 总是忘记账号    时间: 2012-12-16 00:44
洋葱圈 发表于 2012-12-15 23:46
50M是外部时钟源、内部需要倍频到不同的频率。
我们的底层库中有PWM代码,可供你参考:http://www.znczz.c ...

编写风格完全不一样,看起来好费劲啊……

作者: 1228463834    时间: 2012-12-16 10:22
洋葱圈 发表于 2012-12-15 23:46
50M是外部时钟源、内部需要倍频到不同的频率。
我们的底层库中有PWM代码,可供你参考:http://www.znczz.c ...

这个系统频率是啥频率啊,是总线频率还是内核频率啊,我很疑惑
作者: 洋葱圈    时间: 2012-12-16 10:59
1228463834 发表于 2012-12-16 10:22
这个系统频率是啥频率啊,是总线频率还是内核频率啊,我很疑惑

系统频率指内核频率,总线频率也叫外设频率

作者: 1228463834    时间: 2012-12-16 13:05
本帖最后由 1228463834 于 2012-12-16 13:17 编辑
洋葱圈 发表于 2012-12-16 10:59
系统频率指内核频率,总线频率也叫外设频率


怎么我看K60的书FTM用的总线频率,我看了好多代码都是用总线频率么,好像不是系统时钟啊,这是咋回事
我现在更困惑,到底换算PWM频率的时候是 总线频率去换算还是系统频率去换算啊, 比如FTMx_SC寄存器设置成系统时钟 ,这里的系统时钟指的啥时钟

作者: 青龙00    时间: 2012-12-16 13:15
呵呵!我也是看了“拉普兰德”的程序感到费解,感觉,真是牛人辈出
作者: 洋葱圈    时间: 2012-12-16 13:42
1228463834 发表于 2012-12-16 13:05
怎么我看K60的书FTM用的总线频率,我看了好多代码都是用总线频率么,好像不是系统时钟啊,这是咋回事
...

FTM时钟有总线时钟分频获得,在底层库中的注释解释了:
// 假设SysClk = 50MHz, SC_PS=3, FTM Clk = 50MHz/2^3 = 6.25MHz
底层库中的FTM初始化函数根据用户期望频率自动算出分频系数PS。

作者: 洋葱圈    时间: 2012-12-16 13:43
青龙00 发表于 2012-12-16 13:15
呵呵!我也是看了“拉普兰德”的程序感到费解,感觉,真是牛人辈出

看懂了你就进步了

作者: 1228463834    时间: 2012-12-16 13:56
本帖最后由 1228463834 于 2012-12-16 14:02 编辑
洋葱圈 发表于 2012-12-16 13:42
FTM时钟有总线时钟分频获得,在底层库中的注释解释了:
// 假设SysClk = 50MHz, SC_PS=3, FTM Clk = 50M ...



我刚才一直在看,怎么是越看越迷糊,FTM时钟明明初始化的时候是 系统时钟  么你刚才说系统时钟就是内核时钟 ,我看下面你们注解的是 System clock(Bus Clk),  么么,到底这个系统时钟指的是 内核频率啊 还是 BUS 频率啊
假如我设置的频率是 内核是200MHZ ,BUS 是 100MHZ  
么按照8分频计算 这个FTM是25MHZ 还是 12.5MHZ

  // 配置FTM控制寄存器
  // 禁用中断, 加计数模式, 时钟源:System clock(Bus Clk), 分频系数:8
  // 假设SysClk = 50MHz, SC_PS=3, FTM Clk = 50MHz/2^3 = 6.25MHz
  FTM0_SC = FTM_SC_CLKS(1)|FTM_SC_PS(ps);


作者: 洋葱圈    时间: 2012-12-16 14:13
1228463834 发表于 2012-12-16 13:56
我刚才一直在看,怎么是越看越迷糊,FTM时钟明明初始化的时候是 系统时钟  么你刚才说系统时钟就是内 ...

飞思卡尔官方文档说的也很模糊,但实际上这里指的系统时钟是总线时钟,不是内核时钟。

作者: 1228463834    时间: 2012-12-16 14:58
洋葱圈 发表于 2012-12-16 14:13
飞思卡尔官方文档说的也很模糊,但实际上这里指的系统时钟是总线时钟,不是内核时钟。

原来如此,柳暗花明么,谢谢拉普兰德热心指点么,

作者: 洋葱圈    时间: 2012-12-16 15:01
1228463834 发表于 2012-12-16 14:58
原来如此,柳暗花明么,谢谢拉普兰德热心指点么,

{:soso_e182:}

作者: 总是忘记账号    时间: 2012-12-16 15:52
1228463834 发表于 2012-12-16 13:56
我刚才一直在看,怎么是越看越迷糊,FTM时钟明明初始化的时候是 系统时钟  么你刚才说系统时钟就是内 ...

最好的办法就是直接上板子用示波器来测,验证。
我今天在实验室捣鼓了一上午,然后把昨天晚上怎么都不能求证的问题直接就验证了。想不懂查不到的地方,直接用事实说话哈

作者: 1228463834    时间: 2012-12-16 20:09
总是忘记账号 发表于 2012-12-16 15:52
最好的办法就是直接上板子用示波器来测,验证。
我今天在实验室捣鼓了一上午,然后把昨天晚上怎么都不能 ...

有道理

作者: :句·话っ    时间: 2012-12-16 20:47

作者: 总是忘记账号    时间: 2012-12-17 12:19
1228463834 发表于 2012-12-16 20:09
有道理

加油!

作者: 柯南一梦    时间: 2012-12-17 12:39
它是默认为分频的2分之一 就是50M ....
作者: 总是忘记账号    时间: 2012-12-17 14:28
柯南一梦 发表于 2012-12-17 12:39
它是默认为分频的2分之一 就是50M ....

从哪出语句可以知道是默认的?而且龙丘的模块里面又说是4分频,不过我还没有验证。前天晚上就是被这个给弄糊涂了。

作者: 1228463834    时间: 2012-12-17 17:31
总是忘记账号 发表于 2012-12-17 12:19
加油!

我们连示波器没有
作者: 总是忘记账号    时间: 2012-12-17 20:31
1228463834 发表于 2012-12-17 17:31
我们连示波器没有

蹭别人的示波器啊,去人家的实验室




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