历史上的今天
今天是:2025年03月22日(星期六)
2021年03月22日 | 飞思卡尔16位单片机(八)——PWM模块测试
2021-03-22 来源:eefocus
一、PWM模块介绍
PWM在工业领域应用很广,是实现D/A转换和精确脉冲序列输出的有效手段。许多单片机都设置了PWM输出功能。XEP100单片机的PWM模块具有如下特点:
(1)XEP100单片机具有8个可编程的PWM通道,与单片机的PP0—PP7管脚复用。每个通道的周期和占空比是可以独立控制的,8个通道都是8位精度的。通过设置寄存器PWMCTL可以将相邻的两个通道连接成一个16位精度的PWM通道,因此一个XEP100单片机可以提供4个16位精度的PWM通道;
(2)每个PWM通道都有独立的计数器;
(3)每个通道都可以设置为使能或禁能状态;
(4)每个通道占空比的极性是可以通过软件选择的,通过设置寄存器PWMPOL实现,相应的位置1为高电平有效,清0为低电平有效;
(5)周期和占空比循环是双缓冲的,在每个周期结束时,更新的设置就可以生效;
(6)每个通道可以独立的设置为左对齐和中央对齐模式,通过设置寄存器PWMCAE进行设置;
(7)PWM模块有4个时钟(A、B、SA和SB)能够提供宽范围的频率;
(8)可编程的时钟选择逻辑;
(9)紧急停止功能。
PWM在控制中应用广泛,可以用于电机调速,舵机控制,步进电机控制等,在本实验中,我们只介绍如何使用单片机的PWM模块来产生PWM信号。关于PWM的深层次的应用,读者可以自己研究练习。
二、例程测试
在这个实验中,我们通过单片机的PWM模块输出一路1Hz的方波信号,并用这个方波型号对LED灯进行控制。
在这个实验的程序中,主要的代码是PWM模块的初始化,如下所示
void init_pwm(void)
{
PWMCTL_CON01= 1; //联结通道0,1为16位的PWM
PWMPOL_PPOL1= 1; //通道01的极性为高电平有效
PWMPRCLK = 0x55; //A时钟和B时钟的分频系数为32,频率为1MHz
PWMSCLA = 100; //SA时钟频率为5KHz
PWMSCLB = 100; //SB时钟频率为5KHz
PWMCLK =0x02; //通道01用SA时钟作为时钟源
PWMCAE = 0x00; //脉冲模式为左对齐模式
PWMPER01 = 5000; //通道01的周期为1Hz
PWMDTY01 = 1000; //通道01的占空比为20%
PWME_PWME1 = 1; //使能通道01
}
为了能够看懂代码,我们对PWM模块的工作原理进行简单介绍。XEP100单片机的PWM模块可以独立生成8路8位的PWM信号,可以将这8路PWM信号,两两级联成4路16位的PWM信号,PWMCTL_CON01= 1;这一句就是将0通道和1通道级联成一个16位的PWM通道。PWMPOL_PPOL1= 1;设置级联后的01通道极性为高电平有效。
PWM模块的时钟来源是总线时钟,为了用来生成PWM信号,PWM模块可以生成自己内部的时钟,它内部有4个时钟,分别为A、B、SA、SB。其中A和B时钟通过总线分频得到,SA和SB时钟通过A和B时钟分频得到。在这个代码中,PWMPRCLK = 0x55;将A和B时钟的分频系数都设置为32,由于总线时钟的频率设置为32MHz,所以A和B时钟的频率为1MHz。PWMSCLA和PWMSCLB寄存器用来设置SA和SB时钟的分频系数,程序中设置为100,以A和SA为例,Clock SA=Clock A/(2*PWMSCLA),所以SA和SB时钟的频率为5KHz。PWMCLK =0x02;这一句将01通道的时钟源设置为SA时钟。
PWMCAE=0x00; 将脉冲模式为左对齐模式。
PWMPER01和PWMDTY01分别用来设置PWM的周期和占空比,PWMPER01设置PWM的周期,代码中PWMPER01的值为5000,由于SA时钟的频率为5KHz,时钟的周期为0.2ms,所以PWM的周期为0.2ms*5000=1s。PWMDTY01设置PWM的占空比,占空比的值为PWMDTY01/PWMPER01=1000/5000=20%。
最后将01通道使能,设置之后01通道就会源源不断的输出方波信号,频率为1Hz,占空比为20%。将PWM信号与LED灯连接起来就可以看到LED以1Hz的频率闪烁。
史海拾趣
|
求助:s3c44b0-uclinux下基于i2c总线eeprom驱动和测试程序 如果谁有请发一份给我,好像我的24c08不能读写,有关的资料也是可以的 email:yudh@leihua.com -----thanks!!!… 查看全部问答> |
|
目前,在连续型流程生产自动控制(PA)或习惯称之谓工业过程控制中,有三大控制系统,即PLC、DCS和FCS。它们各自的基本特点如下:1、 PLC (1)从开关量控制发展到顺序控制、运送处理,是从下往上的。 (2)连续PID控制等多功能,PI ...… 查看全部问答> |
|
“现在的家电只是插了一根电源线,独立工作;而将来处于信息状态后,将彻底改变人们生活。”说起“物联网”,华为创新孵化中心主任楚庆举例道,联网的冰箱在坏了之后,可主动与厂家联系,并说明故障原因,甚至在消费者还没有发现冰箱坏的时候,就可 ...… 查看全部问答> |
|
在boot的最后调用了 OEMLaunch 函数 从BOOT跳到了 oal的Startup 以下是OEMLaunch 的原型: void OEMLaunch(DWORD dwImageStart, DWORD dwImageLength, DWORD dwLaunchAddr, const ROMHDR *pRomHdr) 其中第三个参数dwLaunchAddr是通过VATOPA转换 ...… 查看全部问答> |
|
如果我这么写 struct register { unsigned char Byte_LL; unsigned char Byte_LH; unsigned char Byte_HL; unsigned char Byte_H ...… 查看全部问答> |
|
休息了好一阵子 现在逐步回归 感谢大家常来光顾创意板块 分享点书籍资料给大家 大家放心下载 全部免费! [ 本帖最后由 cardin6 于 2013-8-30 16:10 编辑 ]… 查看全部问答> |
|
具体情况请看图片: 一、设计时钟时,将中间一个输出设为0 二、点开始设计 三、WEBENCH想了好久好久 四、最后给个:我没办法了 … 查看全部问答> |




