历史上的今天
返回首页

历史上的今天

今天是:2025年03月30日(星期日)

正在发生

2021年03月30日 | 飞思卡尔单片机PWM模块分析(1)

2021-03-30 来源:eefocus

例程:


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


//功能:完成PWM模块初始化


//入口参数:无


//出口参数:无


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


void PWM_Init(void)


{


  PWME=0x00;  //禁止PWM模块


  PWMPRCLK=0x06;  //CLOCK A的预分频设置为6


  PWMSCLA=125;  //SA的分频因子设置为125


  PWMCLK=0x01;  //通道0选择SA作为PWM时钟


  PWMPER0=200;  //通道0周期寄存器设置为200


  PWMDTY0=0;  //通道0占空比寄存器设置


  PWMPOL=0x01;  //PWM输出先为高电平,之后变为低电平


  PWMCAE=0x00;  //左对齐输出


  PWMCTL=0x00;  //不级联


  PWME=0x01;  //使能PWM通道0


}


以上是一个基本的PWM初始化程序,利用了很多PWM的寄存器,下面就根据不同的寄存器讲解一下。


(1)PWM允许寄存器(PWM Enable Register)


PWME可以通过设置相应的控制位启动或者停止PWM信号的输出。但是,由于PMWMEx需要与时钟源同步,直到PWM模块时钟下一个周期到来,才能输出正确的PWM波形。


注:当处于级联模式时,8个8位PWM通道通过两两级联构成4个16位PWM通道,此时PWME1,PWME3,PWME5和PWME7对应控制4个16位PWM通道,而其他控制位无效。


Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

读/写      PWME7 PWME6 PWME5 PWME4 PWME3 PWME2 PWME1 PWME0

复位值              0 0 0 0 0 0 0 0

 

读:任何时刻   写:任何时刻


1表示允许PWMx通道输出,0表示禁止PWMx通道输出


(2)PWM极性寄存器(PWM Polarity Register)


PWMPOL是极性寄存器,如果极性选择为是1,周期开始时PWM通道输出高电平,当通道计数器数值等于占空比计数值时翻转为低电平;相反,如果极性选择位是0,周期开始时PWM通道输出低电平,当通道计数器数值等于占空比计数器值时翻转为高电平。


注:PPOLx寄存器的位可以在任何时刻写入。如果正在产生PWM信号时改变极性,在转换过程中可能截短或延长输出脉冲。


Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

读/写 PROL7 PROL6 PROL5 PROL4 PROL3 PROL2 PROL1 PROL0

复位值          0 0 0 0 0 0 0 0

 1代表在周期开始时输出高电平(中心对齐),0代表在周期开始时输出为低电平(左对齐)


(3)PWM时钟选择寄存器(PWM Clock Select Register)


PWMCLKx可以选择两个时钟源作为该通道的时钟源。分别为CLOCK A和CLOCK SA,CLOCK B和CLOCK SB,其中CLOCK A和CLOCK B是直接由总线时钟得到,CLOCK SA和CLOCK SB是通过对CLOCK A或CLOCK B进行再次的分频得到,就是进行两次的分频。


注:PCLKx寄存器的位可以在任何时刻写入。如果正在产生PWM信号时改变极性,在转换过程中可能截短或延长输出脉冲。


其中CLOCK A或CLOCK SA控制0,1,4,5通道的PWM,CLOCK B或CLOCK SB控制2,3,6,7通道的PWM。


Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

读/写 PCLK7 PCLK6 PCLK5 PCLK4 PCLK3 PCLK2 PCLK1 PCLK0

复位值            0 0 0 0 0 0 0 0


1表示选择CLOCK SB或CLOCK SA作为相应通道时钟源,0代表选择CLOCK A或者CLOCK B直接作为通道的时钟源。


推荐阅读

史海拾趣

问答坊 | AI 解惑

ATMEL 串口下载线

请问 有什么可以转换并口的 东东吗(是不是用PCI的并口卡 可以当并口下载程序)?? 或者是 ATMEL 系列单片机的串口下载线 (宇宙的串口 下载线 不明确) 我的电脑没有并口 只有串口 现在用STC系列单片机烧程序   发现极不稳定 以至于现在 ...…

查看全部问答>

FPGA22实例(VHDL)

FPGA27实例(VHDL)内容: 1,8.2 LED控制VHDL程序与仿真 2004.8修改 2,8.2 LED控制VHDL程序与仿真.doc 3,8.3 LCD控制VHDL程序与仿真 2004.8修改 4,8.3 LCD控制VHDL程序与仿真 5,8.4 ADC0809 VHDL控制程序 6,8.5 TLC5510 VHDL控制程序 7 ...…

查看全部问答>

求助 FPGA管脚设定问题

我只知道有关jtag的那个bank的vccio是要接电源的 内核也要加电,但是不是那个bank的呢 要加电么,内核也哟加电么,这个一直没弄懂,还要不用的userio 怎么办呢 弱弱的问下。。。…

查看全部问答>

求嵌入式ARM学习群,特别是s3c2410学习板的QQ群或个人前辈

本人正在做关于三星arm9 s3c2410学习板的实验,但发现很困难,在搭建linux平台时不知道如何入手,出错也无从查起,求前辈指点,感激万分,或者如果有学习小组的Q群的更好,谢谢…

查看全部问答>

【上海招聘】【应届毕业生,一年经验者】代发招聘信息

www.z2comm.com 招聘软件工程师,目标人群为应届毕业生或有一年到两年编码经验的程序员 基本要求: 软件基础扎实 熟悉C语言 有一定的开发能力,能开发千行代码数量级的软件模块 有志于做嵌入式软件开发 具备以下能力更好: 具备硬件 ...…

查看全部问答>

一个PDIUSBD12的问题

我的连接方式如下: DATA0-DATA7    P0(AT89C51RC) ALE            GND CS_N           接74LS138输出的片选 SUSPEND      &n ...…

查看全部问答>

datagrid使用如何改进,新手问题

我现在我每次插入了数据之后,都要去数据库读一遍数据刷新DATAGRID 这样好托速度,有没有更好的办法呀 PPC的程序…

查看全部问答>

CF卡在CE下为什么不能当硬盘显示?

我用loadcepc做引导PC104长的CF里的CE系统,这样CF在CE下都可以当硬盘找到,今天拿了个新PC104和CF卡就结果可以启动CE系统,但找不到硬盘了?为什么那?怎么办那?我用的是研祥的PC104…

查看全部问答>

S5pc110,外加NandFlash驱动问题

老师给布置的作业在原来的一块S5pc110的板子上加挂一个NandFlash,并编写驱动程序。s5pc110对NandFlash的控制是通过读控制寄存器(Control Register)来实现的,在阅读数据手册的时候我试着对他的寄存器进行读取操作,发现所有的值都是0x0,而其他 ...…

查看全部问答>

单片机显示程序是用数码管显示想换成1602程序不知道怎么改啊。。。。

程序是自动停车收费系统的#include#define uint unsigned int#define uchar unsigned charint n,z,shou_fei;char shi,fen,miao;sbit P1_0=P1^0;  //进车门红灯sbit P1_1=P1^1;  //进车门绿灯sbit P1_2=P1^2;  //出 ...…

查看全部问答>