单片机
返回首页

MC9S12XS128 PWM输出配置

2024-08-22 来源:cnblogs

一、PWM资源介绍

1.1 MC9S12 PWM特性

  • 8个具有可编程周期和占空比的独立PWM通道

  • 4个时钟源

  • 每个PWM通道具有专用计数器

  • 每个通道可以选择有效电平极性

  • 每个PWM通道可以使能 / 禁止

  • 每个通道可选择输出波形的对齐方式

  • 分辨率:8位(8通道);16位(4通道)

1.2 PWM 8通道8位引脚

芯片引脚分布如下:

image-20211003101230537

二、PWM寄存器介绍

介绍寄存器前先看一下,PWM 的模块框图

image-20211003101417437

从框图可以看到 PWM 的配置主要分为:时钟选择、使能、极性、对齐、PWM 通道等多个方面进行控制,下面一次介绍各个寄存器

2.1 时钟选择寄存器

2.1.1 时钟源

PWM 有四种时钟源,时钟源如下:

  • Clock A (Ch 0, Ch 1, Ch 4, Ch 5)

  • Clock SA (Scaled A; Ch 0, Ch 1, Ch 4, Ch 5)

  • Clock B (Ch 2, Ch 3, Ch 6, Ch 7)

  • Clock SB (Scaled B; Ch 2, Ch 3, Ch 6, Ch 7)

时钟源的选择通过 PWMCLK 寄存器来控制,寄存器位如下:

image.png

寄存器各个位功能

寄存器位功能
PCLK7、6、3、2 — PWM通道 7、6、3、2 时钟选择1 = 选择Clock SB 为PWM通道 7、6、3、2 的时钟源。
0 = 选择Clock B 为PWM通道 7、6、3、2 的时钟源。
PCLK5、4、1、0 — PWM通道 5、4、1、0 时钟选择1 = 选择Clock SA 为PWM通道 5、4、1、0 的时钟源。
0 = 选择Clock A 为PWM通道 5、4、1、0 的时钟源。

2.1.2 分频器

时钟频率不能直接作为 PWM 定时器的时钟频率的,一般要经过分频才能使用,总线时钟到定时器时钟经过的分频器如下:

image-20211003102351701

PWMPRCLK 寄存器用于独立选择时钟源A、B的预分频系数,寄存器结构如下:

image.png

分频值与寄存器位的关系表为:

PCKx2PCKx1PCKx0Value of Clock x
000Bus Clock
001Bus Clock / 2
010Bus Clock / 4
011Bus Clock / 8
100Bus Clock / 16
101Bus Clock / 32
110Bus Clock / 64
111Bus Clock / 128

PWMSCLA 和 PWMSCLB对应的 A、B的定时器分频

PWMSCLA寄存器

image.png

PWMSCLB寄存器

image.png

定时器频率计算公式:

image-20211003102954674

当 PWM 全为 0 时,分频值为 255 ;其他给多少值,分频多少

2.2 定时器通道寄存器

控制 PWM 输出波形占空比的寄存器主要有三个,

image-20211003104100831

PWM Channel Counter Registers (PWMCNTx):定时计数器,按照设定的时钟频率自加,写0复位

image.png

该寄存器任何时刻可以读写,但向计数器中写入任何值会引起计数器复位到$00,且计数器方向被设置为向上计数

PWM Channel Period Registers (PWMPERx):周期寄存器,设定 PWM 的占空比周期,写255复位

image.png

PWM Channel Duty Registers (PWMDTYx):占空比寄存器,设定 PWM 的占空比,写255复位

image.png

2.3 PWM 极性选择寄存器

PWM Polarity Register (PWMPOL)

image.png

PPOLx——Pulse Width Channel x Polarity

  • 1 = PWM 通道x 周期起始时输出为高电平,当到达占空比寄存器设定值时变为低电平。

  • 0 = PWM 通道x 周期起始时输出为低电平,当到达占空比寄存器设定值时变为高电平。

image-20211003104625163

补充 PWMDTYx 、PWMPERx、PPOLx 三个寄存器在临界条件下,PWM 的输出情况

PWMDTYxPWMPERxPPOLxPWMx 输出
$00> $001低电平
$00> $000高电平
xx$001高电平
xx$000低电平
>= PWMPERxxx1高电平
>= PWMPERxxx0低电平

2.4 PWM 使能/禁止寄存器

PWM Enable Register (PWME)

image.png

Channel x Enable

  • 1 = PWM 通道x 使能。

  • 0 = PWM 通道x 禁止。

2.5 PWM 输出对齐寄存器

MC9S12 的 PWM 输出有两者对齐方式,左对齐和中央对齐

左对齐

image-20211003112826601

在左对齐模式中,8位计数器配置为向上累加计数器,它和占空比寄存器和周期寄存器两个寄存器比较。当PWM 计数器和占空比计数器中的值相等,输出翻转,PWM 计数器和周期寄存器的值匹配时复位计数器并同时从双缓冲器中载入周期和占空比计数器值。计数器从0计数,到周期寄存器-1结束

中央对齐

image-20211003113020808

这种模式下8位计数器作为一个向上&向下计数器,当计数器值为0时,向上计数。计数器和占空比寄存器及周期寄存器比较,当PWM 计数器和占空比寄存器值相匹配时,输出翻转,PWM 计数器和周期寄存器匹配改变计数器方向,从向上计数变为向下计数,当PWM计数器递减,和占空比计数器再次匹配时,输出再次改变。当PWM计数器递减到0,计数方向从向下计数变为向上计数,并从双缓冲器中载入周期寄存器和占空比寄存器值。计数器从0加到周期寄存器中的值并减回0,因此有效周期为PWMPERx*2

PWM Center Align Enable Register (PWMCAE)

image.png

CAEx — Center Aligned Output Mode on channel x

  • 1 = 通道x 以中央对齐输出方式工作。

  • 0 = 通道x 以左对齐输出方式工作。

2.6 PWM 级联寄存器

2个8位PWM 通道可以被连接成一个16位 PWM通道,如下图

image-20211003173929837

级联后的 PWM 通道数以及对应寄存器如下

CONxxPWMExPPOLxPCLKxCAExPWMx OUTPUT
CON67PWME7PPOL7PCLK7CAE7PWM7
CON45PWME5PPOL5PCLK5CAE5PWM5
CON23PWME3PPOL3PCLK3CAE3PWM3
CON01PWME1PPOL1PCLK1CAE1PWM1

PWM Control Register (PWMCTL) 级联控制寄存器

image.png

CONxy——Concatenate channels x and y

  • 1 = 通道x和y被连接成一个16位PWM通道。

  • 0 = 通道x和y为两个独立的8位PWM。

三、PWM配置实例

配置 PWM 一般按照下面6步骤配置()内是相关的寄存器

  • 禁止PWM (PWME)

  • 选择PWM时钟,预分频和分频 (PWMPRCLK, PWMSCLA, PWMSCLB, PWMCLK)

  • 选择极性(PWMPOL)

  • 选择对齐方式 (PWMCAE)

  • 编程占空比和周期 (PWMDTYx, PWMPERx)

  • 使能PWM (PWME)

初始化子程序示例

  void PWM_Init(void)

  {

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

        PWMPRCLK = 0x06;        //CLOCKA的预分频设置为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

  } 


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 红外线探测报警器

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 用NE555制作定时器

  • RS-485基础知识:处理空闲总线条件的两种常见方法

  • 基于ICL296的大电流开关稳压器电源电路

    相关电子头条文章