飞思卡尔单片机脉宽调制模块用法研究

2018-09-13 10:47左明伟冯江荣王邦靖曼茂立
科技创新与应用 2018年23期
关键词:寄存器单片机

左明伟 冯江荣 王邦靖 曼茂立

摘 要:通过对MC9S12XS128单片机脉冲宽度调制模块(PWM)的研究,主要了解了脉冲宽度调制模块相关寄存器的功能,并深入探讨脉宽调制模块的调制方法,此外,也设计了适用于直流电机驱动的程序,并在此基础上进行了详细讲解,以便更为直观的了解并熟练地使用飞思卡尔单片机的脉冲宽度调制模块。

关键词:脉冲宽度调制模块;寄存器;单片机

中图分类号:TM571.6 文献标志码:A 文章编号:2095-2945(2018)23-0035-02

Abstract: By studying the pulse width modulation module PWM of MC9S12XS128 single chip microcomputer, the function of the registers related to the pulse width modulation module is mainly understood, and the modulation method of the pulse width modulation module is discussed in depth. In addition, the modulation method of the pulse width modulation module is discussed. In order to understand and skillfully use the pulse width modulation module of Freescale single-chip microcomputer, a program suitable for direct current (DC) motor drive is also designed and explained in detail.

Keywords: pulse width modulation module; register; single chip microcomputer

引言

飞思卡尔是全球知名的半导体公司[1],该公司为许多行业设计和制作嵌入式半导体产品,现如今几乎所有市售的单片机都集成了PWM功能模块[2]。脉宽调制技术是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,可以通过调整方波的占空比来实现输出电压的变压变频效果,脉宽调制技术以其控制简单、灵活和动态响应好的优点成为电子技术最广泛应用的控制方式,在电机调速等领域的应用日益广泛,所以对脉宽调制模块的学习与应用是十分必要的。

1 PWM主要寄存器介绍

飞思卡尔单片机脉冲宽度调制是通过设置其内部寄存器来输出相应的波形。

1.1 时钟寄存器

时钟寄存器主要包括:PWMCLK、PWMPCLK、PWMSCLA/PWMSCLB,这三个寄存器分别是PWM时钟选择寄存器、模块时钟源A、B预分频寄存器、模块时钟源SA、SB预分频寄存器[3]。PWM时钟选择寄存器用来选择PWM通道使用A、B时钟或者SA、SB时钟的哪一个。它和周期寄存器共同决定了PWM输出脉冲的频率。

1.2 周期寄存器

PWMPER寄存器共有8个,每一个通道都有一个这样的周期寄存器。这个寄存器的值就决定了相关PWM通道的周期。周期寄存器的值越大,PWM调制精度越高[4]。

1.3 占空比寄存器

PWMDTY寄存器共有8个,每一个通道都有一个这样的占空比寄存器。这个寄存器的值就决定了相关PWM通道的输出脉冲的占空比。

2 PWM设置步骤及程序实例

在了解相关寄存器,并掌握脉冲宽度输出频率以及占空比的计算方法后,便可以进行设置并输出PWM波形了。

2.1 PWM设置步骤如下[5]

a.选择极性PWMPOL;

b.选择及设置时钟 PWMCLK、PWMPRCLK、PWMSCLA、PWMSCLB;

c.对齐方式 PWMCAE;

d.是否联级输出 PWMCTL;

e.周期设定 PWMPER;

f.占空比设定 PWMDTY;

g.打开PWM通道PWME;

2.2 程序實例

在直流电机控制电子节气门开度的控制系统中PWM脉冲波形的输出频率常为1KHz,因而我们设计了相关程序。首先是进行初始化函数设置[6](其中晶振频率16MHz、总线时钟32MHz)。

#include "main.h"

void PWM_Init(void)

{

PWMCTL_CON01=1; //联结0号和1号通道形成16位PWM通道号,由PWM1输出

PWMPOL_PPOL1=1; //通道01的极性为高电平有效

PWMPRCLK=0x22; //A时钟和B时钟的分频系数为4,频率=32/4=8MHz

PWMSCLA=2; //SA时钟设置寄存器CLOCK SA=CLOCK A/(2*PWMSCLA)=8M/2*2=2MHz

PWMCLK=0x02; //通道01用SA时钟作为时钟源

PWMPER01=2000; //通道01的频率=CLOCK SA/2000=1KHz

PWMDTY01=0; //通道01的占空比为0%

PWME_PWME1=1; //使能通道01

}

其次,主函数调用相关初始化函数,并输出相应占空比的脉冲。

void main(void)

{

INIT_PLL(PLL32) ; //初始化PLL为32M

PWM_Init();

EnableInterrupts; //使能中断

PWMDTY01=1000; //占空比=PWMPER01/PWMDTY01=1000/2000*100%=50%

}

在飞思卡尔MC9S12XS128单片机中用CodeWarrior5.0编译并烧录后,可从示波器读取到如图1的脉冲波形。如果我们想输出占空比=70%的PWM波形,只需要改变主函数居中寄存器PWMDTY01=PWMPER01*70%=2000*70%=1400即可,图2是占空比为70%的脉冲波形。

3 结束语

在完成了对飞思卡尔单片机脉冲宽度模块的分析,并设计相关程序后,总结了如下几个常见问题:

3.1 频率问题

针对直流电机脉宽调制的PWM频率问题[7],目前尚待商榷,建议进行多次试验选取让电机正常工作的频率。其他如S3010舵机的使用频率是50Hz-200Hz[8],对应周期是5ms-20ms,超出频率的话,舵机不会线性工作。

3.2 级联问题

80引脚封装的XS128系列单片机有8个8位精度的PWM通道[9],通过级联可以得到4个16位精度的PWM通道,当处于级联模式时,时钟、极性以及对齐方式等都是受级联后的低8位对应通道的寄存器控制的,即由通道1、3、5、7的寄存器控制,且只有这几个通道可以输出PWM波形。

參考文献:

[1]周鑫玲.飞思卡尔8位单片机脉宽调制模块用法探究[D].天津大学,2010.

[2]李刚.飞思卡尔8位单片机实用教程[M].北京:电子工业出版社,2009.

[3]邵贝贝.单片机认识与实践[M].北京:北京航空航天大学出版社,2006.

[4]刘和平.DSP原理及电机控制系统应用[M].北京:北京航空航天大学出版社,2007.

[5]李勇.汽车单片机与车载网络技术[M].北京:电子工业出版社,2015.

[6]薛涛.单片机与嵌入式系统开发方法-HCS12XS[M].北京:清华大学出版社,2009.

[7]庹朝永.基于单片机的直流电机PWM调速系统设计与开发[J].哈尔滨煤矿机械研究所,2011.

[8]赵开理.基于单片机设计直流电机控制系统[D].南京邮电大学,2017.

[9]李玮.基于单片机控制的直流电机PWM调速系统设计[J].河北省科学技术学协会,2018.

猜你喜欢
寄存器单片机
单片机在智能控制中的应用
基于慕课的“微型计算机原理与接口技术”教学模式
移位寄存器及算术运算应用
数字电路环境下汽车控制电路信号设计
基于ARM嵌入式系统底层漏洞挖掘技术研究
C8051F020与80C51单片机的异同点
问题牵引的汇编语言教学实践
单片机I/O口模拟串行通讯的C51实现方法
单片机调试方法的探讨
用PIC单片机制作的时间继电器