搜索
bottom↓
回复: 9

[经验分享]原来飞思卡尔级联PWM还可以输出16位精度的PWM波形

[复制链接]

出0入0汤圆

发表于 2014-5-9 16:46:38 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_ZJJ 于 2014-5-12 09:41 编辑

M9S12XS128单片机 有8个独立的PWM输出通道,其中每相邻的两个可以级联成一个通道。
本文着重应用实践,理论性的东西少谈为妙,因为理论的东西资料上都有。想借此平台记录下调试心得以免日后遗忘,因本人也是初学该款单片机,难免有错误之处,还希望达人指点。
PWM应用步骤:
一、PLL初始化,这一步应该说不算PWM设置的内容,但是又必须设置,因为这关系着PWM周期值的计算。 从开发板上的晶振来看是16M,但是总线时钟却并不是16M,S12单片机里面有个锁相环设置,要设置好了才准确。具体这个PLL函数我还没去了解。现在是现成套用。
void PLL_Init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
{ //锁相环时钟=2*16*(2+1)/(1+1)=48MHz
CLKSEL=0X00;
PLLCTL=0XE1;
REFDV = 1; //总线时钟=48/2=24MHz
SYNR = 2;                                       
_asm(nop); // BUS CLOCK=24M
_asm(nop);
while (!(CRGFLG & 0x08)) ;
CLKSEL = 0x80; //选定锁相环时钟
}
用了这个PLL初始化函数以后,总线时钟就是24M了。
二、PWM相关设置
1、禁止PWM。PWME
2、选择时钟源。PWMPRCLK, PWMSCLA, PWMSCLB ,PWMCLK。 其中通道0 、1、4、5 可以选择 ClockA ClockSA。通道2、3、6、7 可以选择ClockB ClockSB
其中值得说明的是ClockA或ClockB是通过总线时钟预分频获得的。ClockSA或ClockB是分别对ClockA ClockB再次进行分频获得的。分频系数的设置都有相应的寄存器进行设置。后面会提到。
3、极性设置 PWMPOL 。极性是指初始时通道输出的是高电平还是低电平。这个是关系到占空比的计算。
4、选择对齐方式 PWMCAE。对齐方式有左对齐和中间对齐两种。两种方法在计算占空比时也有差别。
5、设置周期和占空比。PWMPERx PWMDTYx.
6、使能PWM。PWME。

相关寄存器列表如下图。


PWM使能寄存器。相应的每一位控制每一个通道。如果是级联方式,那么使能将由高通道的使能决定。比如
通道0和通道1级联成16位的PWM,那么这个级联的PWM的使能就由 PWME_PWME1 决定。


PWM时钟选择。0,1,4,5通道 PWMCLK_PCLK(0 or 1 or 4 or 5) =0 (则选择CLOCKA) =1 (则选择CLOCKSA)


PWM时钟源预分频寄存器


分频系数的对照表格。 E 代表总线时钟,也就是前面PLL出来的 Bus Clock。



PWMSCLA寄存器实际上是对 前面已经对总线实行分频后的 ClockA 再次进行分频,从而得到更小的时钟源。


极性设置寄存器。0 表示 初始输出 点平。1 表示初始输出 高电平


PWM对齐方式设置寄存器。0 左对齐。1 中间对齐


PWM 控制寄存器。主要用于设置是否级联模式。若PWMCTL_CON01=1;则表示 通道0和1进行级联



PWM周期设置。 周期为  PWMRERx 的数 × 时钟源周期 ;


占空比设置寄存器。PWM模块中每个通道有一个8位的计数器,当计数值实时跟占空比中的值进行比较,一但相等,则将电平翻转,并且实时跟周期寄存器中的值进行比较,一旦相等则清零重新计数。
示意图:


PWM心得:
1、关于程序中寄存器的书写。
一种是总线方式。比如PWME 寄存器。可以直接总线赋值。如PWME=0x01;也可以进行位赋值 如 PWME_PWME0=1;(注意不能直接写PWME0=1;)
2、级联方式时:级联方式就是为了扩展 周期、占空比的。因此两个通道的 8位周期、占空比寄存器就级联成了16位的周期、占空比寄存器。特别需要注意的是,此时的 这16位的寄存器的高8位 是低通道的8位寄存器。
比如01通道级联成的16位寄存器的高8位是通道0的8位。

本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2014-5-10 10:11:51 | 显示全部楼层
这个老了吧,早在DG、DP的时代就支持16位级联了……现在8位机都支持PWM级联了……

出0入0汤圆

发表于 2014-5-10 10:20:50 | 显示全部楼层
不错,看别人用过

出0入0汤圆

发表于 2014-5-10 10:29:40 | 显示全部楼层
不错不错

出0入0汤圆

发表于 2014-9-5 16:11:09 | 显示全部楼层
收藏先。                  

出0入0汤圆

发表于 2014-9-5 16:16:58 | 显示全部楼层
这种的八位的单片机也可以用PE生成例程么?

出0入0汤圆

发表于 2014-9-5 16:25:04 | 显示全部楼层
学习了。。

出0入0汤圆

发表于 2014-9-5 16:31:11 | 显示全部楼层
亲,这个你竟然不知道么?!

出0入0汤圆

发表于 2014-9-8 21:18:03 | 显示全部楼层
总线频率再超个一倍的频,分辨率老高了

出0入0汤圆

发表于 2014-9-8 21:25:35 | 显示全部楼层
嘿嘿,顶一下顶一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 23:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表