飞思卡尔16位单片机(八)——PWM模块测试

发布者:玄幻剑客最新更新时间:2021-03-22 来源: eefocus关键字:飞思卡尔  16位单片机 手机看文章 扫描二维码
随时随地手机看文章

一、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的频率闪烁。

关键字:飞思卡尔  16位单片机 引用地址:飞思卡尔16位单片机(八)——PWM模块测试

上一篇:飞思卡尔16位单片机(九)——ECT模块测试
下一篇:飞思卡尔16位单片机(七)——SCI串口测试

推荐阅读最新更新时间:2024-11-13 16:59

飞思卡尔16位单片机(十五)—— 如何批量烧写芯片
我们在进行飞思卡尔单片机开发时,一般使用CodeWarrior软件和usbdm调试器进行。但是在实际生产过程中,采用这种方式烧写芯片效率比较低,而且很多情况下,程序的源码不希望对生产人员开放,本文就是为了这个目的,给大家讲解一下,如何进行芯片的批量烧写。 在进行批量烧写之前,我们默认大家已经安装了飞思卡尔单片机的开发环境,包括软件、调试器驱动。下面我们就进行批量烧写的实现。 首先我们先要找到工程的二进制文件,CodeWarrior中,二进制文件的扩展名为.s19,在工程的bin文件夹下,如下图所示。 将这个文件复制到英文路径下,这一步很关键,因为烧写软件不认中文路径。 接下来将下载器、单片机与计算机连接好。 然
[单片机]
<font color='red'>飞思卡尔</font><font color='red'>16位单片机</font>(十五)—— 如何批量烧写芯片
飞思卡尔推出单芯片、BLE和802.15.4无线MCU
飞思卡尔Kinetis MCU组合实现单芯片、多协议Bluetooth Smart和IEEE 802.15.4无线电新的低功耗Kinetis KW40Z MCU的支持包括简化安全和互连IoT应用开发的功能强大的软件 飞思卡尔半导体向其广受欢迎的Kinetis系列微控制器添加了无线、多协议产品成员,使支持并促进物联网(IoT)的MCU平台兼容最新的连接标准。作为MCU创新领域的全球领导者,飞思卡尔推出了Kinetis KW40Z无线MCU系列,适用于Bluetooth Smart/Bluetooth Low Energy(BLE) 及IEEE 802.15.4应用。 KW40Z无线MCU集成了2.4 GHz多协议
[网络通信]
基于Freescale S08核MC9S08QG4的便携式自动呼吸控制系统
所有的组织都通过血管来供氧,以帮助组织生长和修补组织损伤。通常身体依靠红细胞中血红蛋白的化学特性,通过自身调节在细胞外液体中保持一定的氧气浓度。   然而,对多数外科手术而言,医生们必须使用一定量的麻醉剂,这会抑制肌力,使病人呼吸减弱。当手术过程中血液流失时,会使病人供氧不足,从而导致体内缺乏足够的氧气。这时就必须使用麻醉呼吸机和测量血液中氧气饱和度的仪器(脉动血氧定量计)来调节麻醉剂和氧气的混合比例。   传统的机械式呼吸设备将一个外部设备直接连接到病人,通过人工方式进呼吸气体的交换。机械呼吸设备被用来维持足够的气体交换,尤其是在呼吸频率减小并且心肌能力减弱的时候,它可被用来在呼吸机能减弱的时候获得足够的肺扩张,
[单片机]
基于<font color='red'>Freescale</font> S08核MC9S08QG4的便携式自动呼吸控制系统
PIC16位单片机CAN(2)彻底弄懂时钟
一直以来写程序都是看参考资料和书,这次的16位单片劫dsPIC33EP32GP502没有一点资料。因此趁机也好好深入学习一下!首先看振荡器的选择吧。 首先看一下时钟框图: 我们使用的是外部晶振,所以配置为HS,FCY是CPU时钟,FP是外设时钟,FCY=FP(除打盹模式外)。FCY=Fosc/2。也就是cpu时钟是晶振频率的1/2。下面还有分频。DOZE 2:0 :011 = FCY 被 8 分频 (默认)处理器时钟分频比选择位。 因此实际的FCY=0.5MHz(使用8M的外部晶振,并八分频8/2/8=0.5MHz)。 看一下振荡器选择配置位的说明: 这里我们需要看的是FOSCSEL配置位 第二列是寄存器地址
[单片机]
PIC<font color='red'>16位单片机</font>CAN(2)彻底弄懂时钟
未来全球智能传感器市场将实现更大扩展
    随着数据量的增大,集成了处理器的 智能传感器 将成为今后的重要发展方向。据市场研究公司Transparency Market Research测算,这类智能 传感器 的销售额可能会以每年10%的速度递增,到2018年有望达到69亿美元。   与传统单纯收集数据并将其发送到中央服务器进行分析的哑巴处理器不同,集成了处理器的智能传感器将更强大和更智能,这些设备不仅可以监控信息的质量,还可以展开高级的运算,为未来更多的应用提供基础。   我认为这将成为一个巨大的市场,所有传感器都将按照这种模式运行。Linear公司CTO克里斯。皮斯特(Kris Pister)说,手机和应用是很好的类比。10年前,没人知道应用是什么。   
[手机便携]
华北工控新推基于Freescale ARM架构All In One Mini主板
概述 华北工控顺应市场趋势,推出一款基于Freescale ARM架构All In One Mini主板EMB-2500。该板体积小巧、性能强劲、功耗低,主要针对小空间、小体积应用方案而设计。采用的是Freescale Cortex™-A9架构的高扩展性多核系列应用处理器。该处理器不仅具有超强的图形处理能力、1080P高清播放以及强劲的应用计算能力,同时拥有极低的系统功耗。该板扩展接口丰富: 支持1个双通道24bit LVDS接口、1个mini HDMI接口和1个VGA接口、1个千兆网卡、1个SATA2、2个RS-232、4个USB2.0、1个Mini_USB(OTG)接口等。 EMB-2500兼具了稳定可靠的工
[嵌入式]
华北工控新推基于<font color='red'>Freescale</font> ARM架构All In One Mini主板
飞思卡尔单片机DZ60---时钟初始化
/* Derivative peripheral declarations */ #include derivative.h /* Definitions and function prototypes */ #include DZ60_init.h //FEI切换到PEE模式,外部晶振=4MHZ,总线频率=8MHZ( 中文手册,P144页) /* External crystal oscillator = 4MHz */ /* FOR PEE mode: Bus_Clock = (1/2)* /(Bus_div) = 8MHz */ #define BUS_DIV 0 /* Bus di
[单片机]
飞思卡尔MC9S12X PWM驱动
今天带着大家学习飞思卡尔MC9S12X PWM驱动 首先什么是PWM及应用 脉冲宽度调制(PWM)是产生精确脉冲序列输出和实现D/A转换的有效方法,微控制器的脉宽调制模块被广泛应用于工业控制和新型消费机电产品中(如智能空调、节能冰箱、电动自行车等)。PWM信号通过软件编程调节波形的占空比、周期和相位,能够用于直流电动机调速、伺服电动机控制、D/A转换器等应用。 MC9S12X的PWM模块概述 MC9S12XS系列产生PWM信号的方法主要有两种:利用输出比较功能和MCU内置的PWM模块实现。利用输出比较功能可以通过软件编程设定输出任意脉冲信号,但会占用CPU资源,而且不易产生精确的脉冲序列;而MCU内部集成的PWM模块专
[单片机]
<font color='red'>飞思卡尔</font>MC9S12X <font color='red'>PWM</font>驱动
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved