第09章 PWM脉宽调制 PULSE WIDTH MODULATION---数字脉冲输出

Slides:



Advertisements
Similar presentations
单片机 C 语言应用程序设计 主讲教师:廉哲 QQ: 电话: 办公室:综合楼 C318.
Advertisements

九年级物理一轮复习 第一章 声现象 知识要点. 1. 声音的产生和传播  ( 1 )声音的产生:声音是由于物体的振动产生的。  凡是发声的物体都在振动。振动停止,发声也停止。  ( 2 )声源:正在发声的物体叫声源。固体、液体、气体 都可以作为声源,有声音一定有声源。  ( 3 )声音的传播:声音的传播必须有介质,声音可以在.
信息的传递 九年级物理 电磁波的海洋. 感 悟 固定电话之间有电话 线连接着,信息是由 电流通过电话线传递 的 移动电话之间没有电 话线连接,它是靠什 么传递信息的?
第 3 章 聽覺 每章扉頁 3.1 聽覺 3.2 人類耳朵的反應 3.3 聽覺缺陷.
上海交通大学附属中学 李由 晏敏宽 刘华典 指导老师:朱乔荣 徐忠惠 制作:李由
第一部分 中考基础复习 第一章 声现象.
眼科B超的原理及使用方法 一 基础知识.
第二十一章信息的传递 电磁波的海洋 九年级物理.
第19章 走进信息世界 第二节 让信息飞起来.
实验四 利用中规模芯片设计时序电路(二).
第十章 信息的传递 一、电话 1、电话的诞生 1876年贝尔发明了电话。最简单的电话由话筒和听筒组成,话筒能把声信号变成电信号,听筒能把电信号变成声信号。
Chapter 6 時序.
客户端入门十二小时 FOOLFLY DEMO DESIGN 讲师:林伟.
计算机基础知识 丁家营镇九年制学校 徐中先.
Netduino 程式設計教學 國立豐原高中 郭再興.
项目成果展示 ——深圳凯吉尔科技—— 凯吉尔全线代理无锡研奥产品 说明:
微處理機原理與應用 Chapter 1 簡介 Chung-Min Wu, Ph.D
Timer & KEYPAD 11/24.
CH5 數位訊號 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇.
第26节 STM32之AD转换.
Roy Wan PCI MS/s 14-bit 高速数字化仪 Roy Wan
Freescale HCS12 微控制器.
5.3全自动波轮式洗衣机 5.3.1结构与工作原理    全自动洗衣机按控制方式不同可分为机电式和微电脑式两类。机电式全自动洗衣机是由机电程控器控制触点的开关来完成洗涤、漂洗和脱水全过程。微电脑式全自动洗衣机是由微电脑式程控器输出控制信号,来实现对洗涤、漂洗和脱水全过程的自动控制。
第七章 定时/计数器.
绪论:LabVIEW控制简介 复旦大学物理教学实验中心 phylab.fudan.edu.cn.
Labview內部Linx功能簡介(Analog/Digital/PWM)
第六章 定时器 6.1 定时器模块概述 S12X定时器模块在标准定时器(TIM)基础上增加了一些新功能,称为增强型定时器模块(Enhanced Capture Timer Module, ECT) 有以下特点: 1个16位自由运行计数器; 8个具有16位缓冲寄存器的输入捕捉通道; 4个8位脉冲累加器可以通过级联形成2个16位的脉冲累加器(A/B)
CPU结构和功能.
Freescale HCS12 微控制器.
中国磁能热水专家 新一代磁能热水器.
S3C44B0X PWM定时器 功能及应用 第23组 SC 袁 悦 SC 常俊强
Freescale HCS12 微控制器.
移相正弦信号发生器设计 采用直接数字综合器DDS发生器的设计 原理:图1是此电路模型图
Pulse Width Modulation
4-15 WDT HT66F50.
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
得技通电子 问题 1.0 、选择题:本大题共15个小题,每小题1分,共15分,在每小题给出的四个选项中,只有一项符合题目要求,把所选项前的字母填在括号内。
8051單晶片 蘇恆生 老師.
模块6 S7-200 PLC基本逻辑指令 项目 6.2 电动机Y-减压起动控制设计 项目 6.2 电动机Y-减压起动控制设计
通訊實驗 實驗三 遙控車程式流程圖 姓名:顏得洋 學號:B
第四章 MCS-51定时器/计数器 一、定时器结构 1.定时器结构框图
K60入门课程 02 首都师范大学物理系 王甜.
微机原理与接口技术 西安邮电大学计算机学院 杨锐.
第十四章 若干深入问题和C独有的特性 作业: 函数指针 函数作参数 函数副作用 运算 语句 位段 存储类别 编译预处理
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月04日.
第8單元 實習3 DO-Buzzer.
4-12 外部中斷 HT66F70A.
FP0/VF0 for Filling Machines
第四章 可逆调速控制系统和 全数字调速控制器 2019/5/8.
第二章 类型、对象、运算符和表达式.
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
单片机原理及应用 实践部分 主讲人:刘 强 四川工商学院单片机教学团队 单片机原理及应用 实践部分 主讲人:刘 强
集成与非门在脉冲电路中的应用 实验目的 1. 了解集成与非门在脉冲电路中 的某些应用及其原理。 2. 学习用示波器观测波形参数与
HSC高速输出例程 HORNER APG.
红外遥控器 MCU起航 QQ:
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
定时中断与LED MCU起航 QQ:
第十二章 位运算.
动态扫描显示(实验四) 查询式键盘(实验五)
2.4 让声音为人类服务.
信号发生电路 -非正弦波发生电路.
FPPA 程式設計 這一章開始正式進入FPPA程式設計的世界,我會從一個簡單的程式開始解說,一邊介紹專案開發時最常應用的技巧還有程式控制的手段,一邊把系統規畫的概念導入給大家,讓大家對專案的規畫能有一個初步的概念。
上节复习(11.14) 1、方式2、方式0的特点? 2、定时/计数器的编程要点? 3、实验5方案优化问题.
24 or 1024? PWN Jawbone Up24 手环.
國立勤益科技大學 冷凍空調與能源系 實務專題成果展
上节复习(11.7) 1、定时/计数器的基本原理? 2、定时/计数器的结构组成? 3、定时/计数器的控制关系?
第十章 變頻控制LED燈光和馬達 調節電壓變化 類比輸出(PWM) 製作調光器 隨機數字與燭光效果 透過序列埠調整燈光亮度 認識直流馬達
DSP技术与应用 电子与信息技术系.
Presentation transcript:

第09章 PWM脉宽调制 PULSE WIDTH MODULATION---数字脉冲输出 Ton Toff 占空比=高电平时间/周期 =Ton/Tperiod Average Tperiod 0 % 10 % 50 % 90 % 99 % 应用: D/A转换 马达控制 音调生成 正弦波生成

9.1 PWM概述 S12X MCU可以不通过定时器,而使用专门的PWM模块以产生PWM波形,极少占用CPU资源  8个带周期占空比可程控的PWM独立通道(与PTP复用)  4个可程控选择的时钟源  脉冲输出极性可选  每个PWM通道有专用的计数器  每个PWM通道可使能/禁止  占空比可调范围0~100%  分辨率: 8位 (8通道), 16位 (4通道)  周期和占空比双缓冲  每个通道有中心对齐和左对齐方式  带中断功能的紧急切断

9.2 PWM结构原理和功能描述 PWM_8B8C 时钟选择 控制 使能(Enable) 极性(Polarity) PWM7 PWM通道 通道7 PWM6 通道6 PWM5 通道5 通道4 PWM4 通道3 PWM3 通道2 PWM2 通道1 PWM1 通道0 PWM0 周期和占空比 计数器 总线时钟 PWM时钟 对齐(Alignment)

PWM波形输出原理 开始 周期Tperoid 时钟源 8-bit Counter PWMCNTx Reset 8-bit Compare = Pin PWMDTYx 占空比 TDuty PWMDTYx PWMPERx PWMPERx 8-bit Compare = PWMPERx 0x00 0x00 fClock, TClock 当8位计数器的值等于PWMDTY(占空比常数寄存器)时,电平从有效跳到无效; 当8位计数器的值等于PWMPER(周期常数寄存器)时,电平从无效跳到有效,然后计数器清0,重新开始计数开始下一个周期

PWM 时钟源 4个时钟源: 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) 4个时钟源: Clock A PWMSCLA 比例分频: 2、4、8、16、32、64、…512 PWMPRCLK Clock SA 预分频: 1、2、4、8、16、32、64、128 Bus Clock PWMSCLB 比例分频: 2、4、8、16、32、64、…512 Clock SB Clock B

对齐方式选择-左对齐  时钟源 选择= 10 MHz (100 ns period) PPOLx = 1 Clock=100ns 占空比=25% 周期=400ns 时钟源 选择= 10 MHz (100 ns period) PPOLx = 1 PWMPERx = 4 PWMDTYx = 1 PWMx 频率 = 10 MHz/4 = 2.5 MHz 即:PWMx 周期 = 1/2.5MHz=400 ns PWMx 占空比 = 1/4*100% = 25% 

对齐方式选择-中心对齐  时钟源 Clock = 10 MHz (100 ns period) PPOLx = 0 Clock=100ns 占空比=75% 周期=800ns 时钟源 Clock = 10 MHz (100 ns period) PPOLx = 0 PWMPERx = 4 PWMDTYx = 1 PWMx 频率 = 10 MHz/8 = 1.25 MHz PWMx 周期 = 1/1.25MHz=800 ns PWMx 占空比 = (4-1)/4*100% = 75% 

通道级联---16位分辨率 两个8位PWM通道可以组合成一个16位PWM通道,例如: PWM7 时钟源 周期/占空比 比较 PWM7输出 PWMCNT6 PWMCNT7 周期/占空比 比较 PWM7输出 CONxx PWMEx PPOLx PCLKx CAEx PWMx OUTPUT CON67 PWME7 PPOL7 PCLK7 CAE7 PWM7 CON45 PWME5 PPOL5 PCLK5 CAE5 PWM5 CON23 PWME3 PPOL3 PCLK3 CAE3 PWM3 CON01 PWME1 PPOL1 PCLK1 CAE1 PWM1 软件可选择通道组合 在级联模式下,可以左对齐或中心对齐输出 常数寄存器、计数器都合成为16位---增加了分辨率,周期可以更长

9.3 PWM模块的使用与设置 PWM 时钟预分频寄存器------PWMPRCLK R PCKB2 PCKB1 PCKB0 PCKA2 Bit 0 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 R PCKB2 PCKB1 PCKB0 PCKA2 PCKA1 PCKA0 W Reset: PCKx2 PCKx1 PCKx0 Value of Clock x Bus Clock 1 Bus Clock / 2 Bus Clock / 4 Bus Clock / 8 Bus Clock / 16 Bus Clock / 32 Bus Clock / 64 Bus Clock / 128 = Unimplemented or Reserved 可在任意时刻读写! x = A or B 例:设置 PRESCALE 寄存器------ PWMPRCLK = 0x22; // B= Bus/4, A = Bus/4 PWMPRCLK = 0x07; // B = Bus, A = Bus/128

PWM 时钟比例分频寄存器------PWMSCLA、PWMSCLB PWMSCLx = $00  PWMSCLx value is 256 可在任意时刻读写! x = A or B 例如: 要求: Clock Sx = 1 kHz 总线时钟 = 16 MHz Prescaler = 128  Prescaler = 64  Clock x = 125 kHz Clock x = 250 kHz PWMSCLx = 63  PWMSCLx = 125  Clock Sx = 992 Hz Clock Sx = 1000 Hz 准一些

PWM 时钟选择寄存器------ PWMCLK Bit 0 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 R PCLK7 PCLK6 PCLK5 PCLK4 PCLK3 PCLK2 PCLK1 PCLK0 W Reset: PCLK7 — 通道 7时钟选择 1 = 通道7的时钟源为SB 0 =通道7的时钟源为B. PCLK6 —通道 6时钟选择 1 =时钟源为SB. 0 =时钟源为B PCLK5 —通道 5时钟选择 1 =时钟源为SA 0 =时钟源为A PCLK4 —通道 4时钟选择 PCLK3 —通道 3时钟选择 1 =时钟源为SB. 0 =时钟源为B PCLK2 —通道 2时钟选择 1 =时钟源为SB PCLK1 —通道 1时钟选择 1 =时钟源为SA 0 =时钟源为A PCLK0 —通道 0时钟选择 PWM 极性选择寄存器------PWMPOL PPOLx=0---输出周期以低电平开始 =1---输出周期以高电平开始

PWM 中心对齐使能寄存器------PWMCAE @ $_04 Bit 0 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 R CAE7 CAE6 CAE5 CAE4 CAE3 CAE2 CAE1 CAE0 W Reset: ... CAEx – 中心对齐模式选择,通道 x 0 = 通道 x 左对齐输出 1 = 通道 x 中心对齐输出 PWM 关断寄存器------PWMSDN 主要用于处理通道7的紧急关闭中断 @ $_24 Bit 0 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 R PWMIF PWMIE PWMRSTRT PWMLVL PWM7IN PWM7INL PWM7ENA W Reset: = Unimplemented or Reserved

... 紧急关断 通道 7输入紧急关断触发 外部故障输入 信号 PWMLVL=1 PWMLVL=0 PWM7ENA=1 Channel 6 Period and Duty Counter PWM7INL=1 PWM7INL=0 Channel 5 Period and Duty Counter ... Channel 0 Period and Duty Counter PWMIE Interrupt PWMIF

PWM控制寄存器------PWMCTL 等待模式 冻结模式 在FREEZE模式下,PWM计数器继续 PFRZ = 1 在FREEZE模式下,PWM计数器停止 PSWAI = 1 在WAIT模式下,允许输入时钟到预分频器 在WAIT模式下,停止输入时钟到预分频器 @ $_05 Bit 0 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 R CON67 CON45 CON23 CON01 PSWAI PFRZ W 通道级联控制: 0---不级联 1---级联成16位 PWM计数器停止 在Freeze模式时 使能/禁止时钟 在WAIT模式时

PWM 通道周期寄存器------PWMPERx @ $_14-_1B Bit 0 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 R Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 W Reset: 1 1 1 1 1 1 1 1 PWM 通道占空比寄存器------PWMDTYx @ $_1C-_23 Bit 0 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 R Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 W Reset: 1 1 1 1 1 1 1 1 注:周期与占空比计算按书上公式

PWM使能/禁止寄存器------PWME @ $_00 Bit 0 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 R PWME7 PWME6 PWME5 PWME4 PWME3 PWME2 PWME1 PWME0 W Reset: 通道7 通道6 ...... 通道 0 0 = 通道x禁止 1 = 通道x使能,下一个时钟开始输出PWM 软件示例 使能/禁止 PWM 通道: PWME5 = 1; // Enable PWM channel 5 PWME3 = 0; // Disable PWM channel 3 PWME = 0xFF // Enable all 8 PWM channels PWME = 0; // Disable all 8 PWM channels

9.4 PWM的应用实例 S12X MCU中的PWM模块一旦设置完成,不需软件干预即可生成PWM信号,除非要改变周期或占空比。初始化步骤: ①关闭PWM通道 PWME ②选择极性 PWMPOL ③选择时钟 PWMCLK、PWMPRCLK、PWMSCLA、PWMSCLB ④选择对齐方式 PWMCAE ⑤设置占空比和周期 PWMDTY、PWMPER ⑥使能PWM通道 PWME 【例9-1】PWM输出脉冲序列 【例9-2】PWM用作D/A转换

【例9-1】使用S12X的PWM模块输出一定周期和占空比的脉冲序列。PWM波形从PP0口(PWM0)输出,频率为125Hz,占空比为50%的方波信号,时钟源采用ClockSA。假设总线时钟频率fBus=2 MHz。 C语言程序代码如下: //函数:PWM初始化/////////////////////////////////////////////////////////////// void PWM_Init() { PWME=0x00; //禁止PWM输出 PWMCTL=0x00; //通道独立不级联,Wait、Freeze模式下继续 PWMPOL=0xFF; //脉冲极性,先高后低 PWMCAE=0x00; //左对齐输出方式 PWMCLK=0xFF; //使用ClockSA时钟 PWMPRCLK=0x33; //ClockA时钟为总线时钟8分频,=2MHz/8=250KHz PWMSCLA=50; //ClockSA= ClockA / (2*PWMSCLA) = 250KHz/ (2*50) = 2.5KHz PWMPER0=20; //设定通道0周期 = (1/2.5KHz) * 20 = 8ms (125Hz) PWMDTY0=10; //设定通道0占空比 = 10/20 =50% } //主函数/////////////////////////////////////////////////////////////////////////////////////// void main() DisableInterrupts; //关总中断, = asm SEI PWM_Init(); //调用PWM初始化函数 PWME=0x01; //使能通道0的PWM输出 while(1) 【例9-2】

#include <hidef.h> /* common defines and macros */ #include "derivative.h" /* derivative-specific definitions */ //#define PWM_BEEP //条件编译,选择为PWM输出控制蜂鸣器或是LED亮暗控制 ///////////////////////////////////////////////////////////////////////////// // 程序说明:PWM脉宽调制的D/A输出控制范例:控制蜂鸣器或是LED亮暗 // 硬件平台:CQU-S12X-CORE&EXP // 参考书籍:《单片机原理及应用---使用Freescale S12X构建嵌入式系统》 by RY // 主函数 void main() { unsigned char i=0; unsigned long j=50000; DisableInterrupts; //关总中断 ,= asm("SEI") PWM_Init(); //调用PWM初始化函数 EnableInterrupts; //开总中断 ,= asm("SEI") ,可能用于其它 for(;;) #ifdef PWM_BEEP PWMDTY0 = i; PWME = 0x01; //使能通道0的PWM输出 #else PWMDTY1 = i; PWME = 0x02; //使能通道1的PWM输出 #endif while(j--); //延时 j=50000; if(i++>=20) i=0;//改变占空比,使其在0%~100%变化 }