打印
[51单片机]

C8051F850中PWM输出频率配置

[复制链接]
2771|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Mochi|  楼主 | 2015-9-9 13:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
C8051F850中PCA模块采用定时器0溢出作为时基信号,现在想要产生频率为15KHz的PWM波。定时器0采用8位自动重载的模式,并采用系统时钟24.5MHz。在Simplicity Configurator中配置只能配到频率为15.951KHz或11.963KHz左右,始终无法配置到接近15KHz。请问有什么办法?非常感谢。

相关帖子

沙发
457344370| | 2015-9-9 14:16 | 只看该作者
估计你用的是8位自动重装初值,当PCA时钟配置为系统时钟6分频时24.5M/6/256=15.9K,当配置为系统时钟8分频时,24.5M/8/256=11.几K,当PCA时钟配置为系统时钟8分频,24.5M/8/15K=204,所以你只要把PCA的自动重装值改为204就能产生大约15.012K的PWM波了

使用特权

评论回复
板凳
ayb_ice| | 2015-9-9 14:51 | 只看该作者
本帖最后由 ayb_ice 于 2015-9-9 14:55 编辑

假设用8位的PWM(16位肯定产生不了这么高频率的)
那么PWM的时钟应该是2^8 * 15K = 3840000Hz = 3.84MHz
这个应该是可以的
那么T0用自动重装载方式(系统时钟),
24.5MHz/3.84MHz = 6.38 = 6
重装载值为256-6=250

使用特权

评论回复
地板
ningling_21| | 2015-9-9 15:24 | 只看该作者
改为外部晶振(频率自己定)试试

使用特权

评论回复
5
Mochi|  楼主 | 2015-9-9 15:38 | 只看该作者
ayb_ice 发表于 2015-9-9 14:51
假设用8位的PWM(16位肯定产生不了这么高频率的)
那么PWM的时钟应该是2^8 * 15K = 3840000Hz = 3. ...

您好,这种方法我试过了。这样算出来时15.95KHz,可是我希望能更接近15KHz,请问有什么更好的办法?谢谢

使用特权

评论回复
6
Mochi|  楼主 | 2015-9-9 15:41 | 只看该作者
457344370 发表于 2015-9-9 14:16
估计你用的是8位自动重装初值,当PCA时钟配置为系统时钟6分频时24.5M/6/256=15.9K,当配置为系统时钟8分频 ...

您好,请问你说的自动重载值204怎么在Simplicity Configurator中配置?我好像没有找到PCA模块中有这个自动重载寄存器的。谢谢~~

使用特权

评论回复
7
ayb_ice| | 2015-9-9 16:38 | 只看该作者
Mochi 发表于 2015-9-9 15:41
您好,请问你说的自动重载值204怎么在Simplicity Configurator中配置?我好像没有找到PCA模块中有这个自 ...

RT:不过这个芯片时钟不是24.5M,自已重新计算就可以了

未命名.jpg (154.97 KB )

未命名.jpg

使用特权

评论回复
8
ayb_ice| | 2015-9-9 16:47 | 只看该作者
Mochi 发表于 2015-9-9 15:38
您好,这种方法我试过了。这样算出来时15.95KHz,可是我希望能更接近15KHz,请问有什么更好的办法?谢谢 ...

只能提高T0的时钟源频率,但这也不可能无限提高,误差总是有的,

或者改变晶振频率,但极有可能没有此种频率的晶振

使用特权

评论回复
9
457344370| | 2015-9-9 17:19 | 只看该作者
Mochi 发表于 2015-9-9 15:41
您好,请问你说的自动重载值204怎么在Simplicity Configurator中配置?我好像没有找到PCA模块中有这个自 ...

C8051的PCA是可以选择PCA定时器的,不需要使用定时器0,自动重载值就是定时器溢出值

使用特权

评论回复
10
ayb_ice| | 2015-9-9 19:51 | 只看该作者
457344370 发表于 2015-9-9 17:19
C8051的PCA是可以选择PCA定时器的,不需要使用定时器0,自动重载值就是定时器溢出值 ...

没有,那是当定时器时可以重载,做PWM时不可以的,

使用特权

评论回复
11
457344370| | 2015-9-9 22:00 | 只看该作者
Mochi 发表于 2015-9-9 15:41
您好,请问你说的自动重载值204怎么在Simplicity Configurator中配置?我好像没有找到PCA模块中有这个自 ...

刚看了下手册,上边那位说的是对的,C8051确实没有这个功能,用外部晶振也算不出来15K的频率,应该是没办法了

使用特权

评论回复
12
yhn1973| | 2015-9-10 08:40 | 只看该作者
外部晶振的话可以用7.68M或15.36M,内部晶振的话可以调整内部高频振荡器校准寄存器试试

使用特权

评论回复
13
shenyunfei| | 2015-9-10 10:22 | 只看该作者
你的意思是PCA是8位频率输出,用的T0中断作为时钟,T0用的系统24.5M时钟,8位不分频自动重载模式。那就是24500000÷8÷15000=204.1666666,也就是说你的T0重载值设为204就能得到15K的频率输出

使用特权

评论回复
14
Mochi|  楼主 | 2015-9-10 21:21 | 只看该作者
shenyunfei 发表于 2015-9-10 10:22
你的意思是PCA是8位频率输出,用的T0中断作为时钟,T0用的系统24.5M时钟,8位不分频自动重载模式。那就是24 ...

您好,这样的出来不是15KHz。因为除下来不是正好是204,算下来和15KHz还是有差距的。

使用特权

评论回复
15
Mochi|  楼主 | 2015-9-10 21:26 | 只看该作者
ayb_ice 发表于 2015-9-9 19:51
没有,那是当定时器时可以重载,做PWM时不可以的,

好像除了用外部晶振就没其他办法了,谢谢~~

使用特权

评论回复
16
Mochi|  楼主 | 2015-9-10 21:26 | 只看该作者
457344370 发表于 2015-9-9 22:00
刚看了下手册,上边那位说的是对的,C8051确实没有这个功能,用外部晶振也算不出来15K的频率,应该是没办 ...

还是谢谢了~~

使用特权

评论回复
17
ayb_ice| | 2015-9-11 08:03 | 只看该作者
本帖最后由 ayb_ice 于 2015-9-11 08:05 编辑
Mochi 发表于 2015-9-10 21:26
好像除了用外部晶振就没其他办法了,谢谢~~

这个芯片可以用48M的频率,可以减少点的误差
有位老兄说了,可以微调内部时钟,是可行的,但也只能做到内部晶振的本身精度2%

使用特权

评论回复
18
t446952352| | 2015-9-15 14:38 | 只看该作者
使用PCA功能,PCA的频率可以设置调节

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

13

帖子

0

粉丝