[51单片机] C8051F850中PWM输出频率配置

[复制链接]
 楼主| 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 | 显示全部楼层
改为外部晶振(频率自己定)试试
 楼主| 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,请问有什么更好的办法?谢谢
 楼主| 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模块中有这个自动重载寄存器的。谢谢~~
ayb_ice 发表于 2015-9-9 16:38 | 显示全部楼层
Mochi 发表于 2015-9-9 15:41
您好,请问你说的自动重载值204怎么在Simplicity Configurator中配置?我好像没有找到PCA模块中有这个自 ...

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ayb_ice 发表于 2015-9-9 16:47 | 显示全部楼层
Mochi 发表于 2015-9-9 15:38
您好,这种方法我试过了。这样算出来时15.95KHz,可是我希望能更接近15KHz,请问有什么更好的办法?谢谢 ...

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

或者改变晶振频率,但极有可能没有此种频率的晶振
457344370 发表于 2015-9-9 17:19 来自手机 | 显示全部楼层
Mochi 发表于 2015-9-9 15:41
您好,请问你说的自动重载值204怎么在Simplicity Configurator中配置?我好像没有找到PCA模块中有这个自 ...

C8051的PCA是可以选择PCA定时器的,不需要使用定时器0,自动重载值就是定时器溢出值
ayb_ice 发表于 2015-9-9 19:51 来自手机 | 显示全部楼层
457344370 发表于 2015-9-9 17:19
C8051的PCA是可以选择PCA定时器的,不需要使用定时器0,自动重载值就是定时器溢出值 ...

没有,那是当定时器时可以重载,做PWM时不可以的,
457344370 发表于 2015-9-9 22:00 来自手机 | 显示全部楼层
Mochi 发表于 2015-9-9 15:41
您好,请问你说的自动重载值204怎么在Simplicity Configurator中配置?我好像没有找到PCA模块中有这个自 ...

刚看了下手册,上边那位说的是对的,C8051确实没有这个功能,用外部晶振也算不出来15K的频率,应该是没办法了
yhn1973 发表于 2015-9-10 08:40 | 显示全部楼层
外部晶振的话可以用7.68M或15.36M,内部晶振的话可以调整内部高频振荡器校准寄存器试试
shenyunfei 发表于 2015-9-10 10:22 | 显示全部楼层
你的意思是PCA是8位频率输出,用的T0中断作为时钟,T0用的系统24.5M时钟,8位不分频自动重载模式。那就是24500000÷8÷15000=204.1666666,也就是说你的T0重载值设为204就能得到15K的频率输出
 楼主| Mochi 发表于 2015-9-10 21:21 | 显示全部楼层
shenyunfei 发表于 2015-9-10 10:22
你的意思是PCA是8位频率输出,用的T0中断作为时钟,T0用的系统24.5M时钟,8位不分频自动重载模式。那就是24 ...

您好,这样的出来不是15KHz。因为除下来不是正好是204,算下来和15KHz还是有差距的。
 楼主| Mochi 发表于 2015-9-10 21:26 | 显示全部楼层
ayb_ice 发表于 2015-9-9 19:51
没有,那是当定时器时可以重载,做PWM时不可以的,

好像除了用外部晶振就没其他办法了,谢谢~~
 楼主| Mochi 发表于 2015-9-10 21:26 | 显示全部楼层
457344370 发表于 2015-9-9 22:00
刚看了下手册,上边那位说的是对的,C8051确实没有这个功能,用外部晶振也算不出来15K的频率,应该是没办 ...

还是谢谢了~~
ayb_ice 发表于 2015-9-11 08:03 | 显示全部楼层
本帖最后由 ayb_ice 于 2015-9-11 08:05 编辑
Mochi 发表于 2015-9-10 21:26
好像除了用外部晶振就没其他办法了,谢谢~~

这个芯片可以用48M的频率,可以减少点的误差
有位老兄说了,可以微调内部时钟,是可行的,但也只能做到内部晶振的本身精度2%
t446952352 发表于 2015-9-15 14:38 | 显示全部楼层
使用PCA功能,PCA的频率可以设置调节
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

13

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部