MC9S12 PWM模块学习笔记

合集下载

第六讲MC9S12单片机IO接口和功能模块

第六讲MC9S12单片机IO接口和功能模块
逐次逼近型A/D 由一个比较器和D/A 转换器通过逐次 比较逻辑构成,从MSB 开始,顺序地对每一位将输入 电压与内置D/A 转换器输出进行比较,经n 次比较而输 出数字值。其电路规模属于中等。
9S12的A/D模块主要特性
8位/10位可选择的转换精度; 速度快,每进行一次10位的转换,仅
仅需要7nS; 采样时间可编程; 左对齐/右对齐的数据格式,有符号/
控制寄存器2—ATDCTL2
ADPU:A/D模块的电源管理。1=正常模式,0=低功耗 模式。
AFFC:标志位快速清零。1=对转换结果寄存器访问会 自动清除标志位,0=正常模式,访问结果寄存器前读状 态寄存器1可以清楚转换完成标志CCF。
AWAI:等待时进入低功耗模式。1=进入,0=正常工作。 ETRIGLE、ETRIGP:外部触发的边沿/极性控制。 ETRIGE:上两位的使能位。允许在PAD7输入外部触发
AN7/ETRIG/PAD7(58):模拟量输入通道7, 通用数字输入端口。它也可以被配置为A/D 转换 的外部触发引脚。
AN6/PAD6 - AN0/PAD0(51-57):模拟量输入 通道6-0,通用数字输入端口。不可以被用作外部 触发引脚。PAD0通过50K滑动变阻器接到VCC, 调可变电阻可以调试A/D转换。
没有PS4-PS7
PORTAD
只能输入
1、通用I/O接口
I/O口作为输入使用
设置方向寄存器(DDRx)为输入(0X00) 随时读取I/O口的数据寄存器(PORTx)
I/O口作为输出使用
设置方向寄存器(DDRx)为输出(0XFF) 设置驱动能力寄存器(非必须) 拉电阻选择(非必须) 随时写入I/O口数据寄存器(PORTx)
A/D时钟的计算公式如右图。

MC9S12XS128之脉冲宽度调制PWM

MC9S12XS128之脉冲宽度调制PWM

M C9S12X S128之脉冲宽度调制P W M-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN半年前就开始写PWM的程序了,那时候只是用来控制电机和舵机。

最近在烦着摄像头的显示问题,再次探究PWM,看能不能找到出路。

我数了一下,整个PWM模块中,总共有37个寄存器。

不过把这些寄存器的功能都理了一下,发现:也不过这么一回事。

PWM就是脉冲宽度调制,是英文“Pulse Width Modulation”的缩写,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。

在XS128中,PWM主要就是通过设置相关的寄存器,让PWM0~PWM7引脚输出一定周期一定占空比的矩形波。

输出的矩形波的周期和占空比在输出的过程中,可以通过改变相关寄存器的值来改变的。

电机和舵机就这利用这点来控制期速度和转向的。

不过观察了一下,似乎在112引脚封装的芯片中才有PWM0到PWM7八个通道的引脚输出,而在80引脚封装的芯片中只有七个通道的引脚输出,没有PWM6的引脚输出。

接下来写一下各个寄存器的功能和设置方法:一、PWME:各通道使能寄存器明显,当某位置1时,相应通道的PWM就打开了。

置0时,就是禁止该通道的PWM。

二、PWMPOL:极性设置寄存器这个寄存器可以设置相应通道的PWM波在每个周期内是先出现高电平后低电平,或是先低电平后高电平。

PPOLn=1:n 通道对外输出波形先是高电平然后再变为低电平。

PPOLn=0:n通道对外输出波形先是低电平然后再变为高电平。

这个设置与占空比的计算有关。

三、PWMCLK:时钟选择寄存器PWM模块中共有四个时钟,分别为A、B、SA、SB。

对于第0、1、4、5通道,PCLKn=0时,则其通选择的是时钟A;当PCLKn=1时,其通道选择的是时钟SA。

对于2、3、6、7通道,PCLKn=0时,其通道选择的是时钟B,当PCLKn=1时,其通道选择的是时钟SB。

第2章 MC9S12DG128的结构与工作原理

第2章 MC9S12DG128的结构与工作原理
PC是特殊的寄存器,它决定CPU的取指地址,因此不能挪作他用,但可 以像SP一样,在大多数变址寻址方式下作为变址寄存器,只是不能用在 自动增减地址的变址寻址操作中。 PC主要是直接为CPU服务,对于用户程序来讲,PC不能参与任何运算, 唯一的作用是辅助进行变址寻址操作。
《基于HCS12的嵌入式系统设计》
口、字节数据链路通信接口和管脚中断逻辑。
《基于HCS12的嵌入式系统设计》
2.1 MC9S12DG128的内部结构
2.1.1 CPU12内核(Star Core)
中央处理单元CPU (Central Processing Unit)
CPU执行68HC12 CPU指令集结构,用3级指令队列来提升代码执行 效率。
《基于HCS12的嵌入式系统设计》
2.1 MC9S12DG128的内部结构
2.1.1 CPU12内核(Star Core)
CPU12内部寄存器
CPU12的寄存器集——基于累加 器,包括5个16位的寄存器和一个 8位的状态寄存器。其中,累加器 D又可分成两个8位的寄存器A和B, 16位寄存器D、X、Y通常用于暂 存数据或存储器地址;SP为堆栈 指针,用于指示堆栈的位置;PC 为程序指针,用于寻址程序代码; 条件码寄存器CCR用来反映运算 结果的特征,也控制CPU的行为。
LQFP112封装引脚图
QFP80封装引脚图
图2.1 MC9S12DG128内部结构框图
《基于HCS12的嵌入式系统设计》
2.1 MC9S12DG128的内部结构
图2.1为MC9S12DG128的内部结构框图,其中功能模块按
照112引脚封装给出。MC9S12DG128单片机的112个引脚
中,除了地址、数据、控制三总线外,主要是I/O引脚, 多数引脚具有两种或两种以上的功能。 图中左、右两部分分别是单片机的核心和接口部分,包括 CPU12、存储器、通用I/O、电压调整模块、后台调试模 块、系统运行监视模块、时钟产生模块、系统集成模块、 外部总线接口、A/D转换器、增强型捕捉定时器模块、脉 宽调制模块、串行通信接口、CAN总线接口、Byteflight接

MC9S12XS128中文资料

MC9S12XS128中文资料
PWM标度B寄存器。用于控制Clock SB的值,Clock SB = Clock A / (2 * PWMSCLB),当PWMSCLB=0x00时,相当于PWMSCLB=256。
PWMCNTx:
PWM通道计数寄存器。
每个通道都有一个独立的8位计数器,其计数速率由所选择的时钟源决定。计数器的值可以随时读取而不影响计数器运行,也不影响PWM波形输出。在左对齐模式时,计数器从0计数至周期寄存器的值减1;在中心对齐模式,计数器从0计数至周期寄存器的值,然后再倒计数至0。
CFORC:
定时器比较强制寄存器。复位值为0x00。
FOCx=1将强制该位对应通道产生输出比较成功动作,但CxF中断标志位不置位。任何通道的强制比较成功动作若与普通比较成功动作同时发生,则强制比较成功动作优先发生,且CxF标志位不会置位。
被置位后瞬间将自动清除该位,所以任何时候对该寄存器的读动作都将返回0x00。
OC7M:
输出比较通道7屏蔽寄存器。复位值为0x00。
Setting the OC7Mx (x ranges from 0 to 6) will set the corresponding port to be an output port when the corresponding TIOSx (x ranges from 0 to 6) bit is set to be an output compare and the corresponding OCPDx (x ranges from 0 to 6) bit is set to zero to enable the timer port.A successful channel 7 output compare overrides any channel 6:0 compares. For each OC7M bit that is set, the output compare action reflects the corresponding OC7D bit.

PWM笔记

PWM笔记

1:PWME 寄存器(开关某通道)PWMEx=1开;2:PWMPOL 寄存器(控制某通道翻转)PWMPOLx=1 高电平有效; 3:PWMCLK 寄存器(选择时钟源)0、1、4、5选A 、SA ;2、3、6、7选B 、SB 。

PCLKx=1 SAorSB ;PCLKx=0 AorB 。

4:PWMPRCLK 寄存器(对时钟源A 、B 预分频)高位分B ,低位分A ;分频结果=n E 25:PWMCAE 寄存器(控制对齐) CAEx=1 居中对齐;CAx=0 左对齐。

6:PWMCTL 寄存器(控制串联) CON67=1 6、7串为同一输出,7主导。

PSWAI=1 等待+时钟停止输入;PSWAI=0 等待+时钟输入。

7:PWMSCLA 寄存器(对A 时钟分频产生SA 时钟)Clock SA=Clock A /(2*PWMSCLA) PWMSCLB 同理8: PWMCNTx 寄存器(控制计数) 8个9:PWMPERx (8个控制周期)1) 当CAEx=0时,即进行左线性输出时: PWMx 周期=通道时钟周期*PWMPERx2) 当CAEx=1时,即进行居中对齐输出时:PWMx 周期=通道时钟周期*(2*PWMPERx )10:PWMDTYx 寄存器(控制占空比)当PPOL=0时:占空比=[(PWMPERx —PWMDTYx)/ PWMPERx]*100%当PPOL=1时:占空比=(PWMDTYx/ PWMPERx)*100%3.2 PWM初始化步骤总结1、禁止PWM Disable PWMPWME=0;2、选择时钟Select clock (prescaler and scale) for the PWMPWMPRCLK,PWMSCLA,PWMSCLB,PWMCLK3、选择极性Select polarityPWMPOL4、选择对齐模式Select center or left aligned modePWMCAE5、对占空比和周期编程Program duty cycle and periodPWMDTYx,PWMPERx6、使能PWM通道Enable used PWM channelsPWME3.3 PWM应用实例例1:输出占空比为25%的波形(1)实验设备:HCS12编程器、开发板、示波器(2)软件程序设计:本例子是输出占空比为25%,周期为500Hz的波形。

MC9S12XS128中文资料

MC9S12XS128中文资料

飞思卡尔智能汽车竞赛XS128主要模块实验指导书第一章端口整合模块端口A,B和K为通用I/O接口端口E 整合了IRQ,XIRQ中断输入端口T 整合了1个定时模块端口S 整合了2个SCI模块和1个SPI模块端口M 整合了1个MSCAN端口P 整合了PWM 模块,同时可用作外部中断源输入端口H 和J 为通用I/O接口,同时可用作外部中断源输入端口AD 整合了1个16位通道ATD模块大部分I/O引脚可由相应的寄存器位来配置选择数据方向、驱动能力,使能上拉或下拉式装置。

当用作通用IO口时,所有的端口都有数据寄存器和数据方向寄存器。

对于端口T, S, M, P, H, 和J 有基于每个针脚的上拉和下拉控制寄存器。

对于端口AD 有基于每个针脚的上拉寄存器。

对于端口A、B、E 和K,有一个基于端口的上拉控制寄存器。

对于端口T, S, M, P, H, J, 和AD,有基于每个针脚的降额输出驱动控制寄存器。

对于端口A, B, E, 和K,有一个基于端口的降额输出驱动控制寄存器。

对于端口S、M,有漏极开路(线或)控制寄存器。

对于端口P、H 和J,有基于每个针脚的中断标志寄存器。

纯通用IO端口共计有41个,分别是:PA[7:0]PB[7:0]PE[6:5]PE[3:2]PK[7,5:0]PM[7:6]PH[7:0] (带中断输入)PJ[7:6] (带中断输入)PJ[1:0] (带中断输入)第二章脉冲宽度调制模块XS128具有8位8通道的PWM,相邻的两个通道可以级联组成16位的通道。

PWME:PWM通道使能寄存器。

PWMEx=1将立即使能该通道PWM波形输出。

若两个通道级联组成一个16位通道,则低位通道(通道数大的)的使能寄存器成为该级联通道的使能寄存器,高位通道(通道数小的)的使能寄存器和高位的波形输出是无效的。

PWMPOL:PWM极性寄存器。

PPOLx=1,则该通道的周期初始输出为高电平,达到占空比后变为低电平;相反,若PPOLx=0,则初始输出为低电平,达到占空比后变为高电平。

利用PWM给单片机应用增加语音功能

利用PWM给单片机应用增加语音功能

利用PWM给单片机应用增加语音功能2008-01-14 15:06: 推荐:0收藏:0评论:0 来源:单片机及嵌入式系统应用随着嵌入式领域的拓展,目前许多微控制器芯片一般都不具备数据一模拟的双向通道,但几乎都集成有PWM产生模块。

本文利用飞思卡尔公司HCSl2单片机的PWM模块,还原存储在存储器中的声音采样数据,在几乎不增加成本的情况下,实现嵌入式应用中的扩展语音功能。

HCSl2系列单片机未包含数/模转换的模块。

要给其扩展语音功能,通常的做法是增加一块数/模转换芯片。

虽然这样做可以得到非常好的音质(取决于数/模转换芯片的性能),但由于耍多使用一块数/模转换芯片,在对音质要求不太高的应用中,会给设计增加额外的成本,同时也使电路设计相对复杂。

本文介绍利用PWM还原声音的解决方案,可以很好地解决这个矛盾。

例如安全报警应用中,系统通常已经包含了一块微控制器(用来处理人机交互以及系统的控制等),当发出警报时,可以是“BB”或“当当”的蜂鸣声;当然,更好的做法是发出清晰的语音。

用PWM产生声音的基本原理,是使用存储在Flash中的音频采样数据或通过某种算法产生的声音数据,来控制PWM每个波形的占空比;接下来通过一低通滤波器滤波,就可将声音从PWM的脉冲波里分离出来,驱动扬声器发出声音。

1 从WAV文件中提取声音采样数据一般来说,可以从WAV文件中提取声音数据,标准的WAV格式的声音文件含有声音的采样数据和文件头。

文件头描述了后面声音数据的一些信息,如通道数、采样频率、采样位数以及数据的长度等。

通道数,是指声音的采样路数,如单声道、立体声等。

采样频率,是指每秒钟对声音的采样次数,采样频率越高,还原出来的声音越接近原始声音,如表l所列。

要精确还原出某种频率的波形,其最小采样率应为该波形的2倍。

采样位数,指的是每次采样的采样精度。

采样位数越高,还原出来的声音的量化噪声越小,波形也越接近原波形。

WAV文件的文件头定义:提取声音数据时,请注意采样频率、采样位数、存储容量与存储时间的关系,如表2所列。

MCS9S12G系列MCU的低功耗性能1

MCS9S12G系列MCU的低功耗性能1

MCS9S12G系列MCU的低功耗性能首先,MCU运行时的功耗与总线频率成正比。

MC9S12GN48 在CPU频率为50MHz,总线频率为25MHz时的电流消耗值如下:(来源:数据手册P1207)PLL可以使用低频的晶体或陶瓷谐振器来倍频到高频,在需要低功耗时可将PLL关闭,来减少电流消耗。

MCU有3种低功耗模式,分别为Wait,Pseuda-STOP和STOP:在Wait模式下,CPU停止运行,可选择性的关闭一些不需使用的模块,只给须用的模块提供工作时钟。

但功耗不会很低。

在伪STOP(Pseuda-STOP)模式下,总线时钟只给RTI和COP定时器提供时钟,而不供给其他模块。

可获得更低的功耗。

可通过RTI中断来周期性地唤醒MCU。

在STOP模式下,振荡器电路被关闭。

此时的电流消耗只来自漏电流,漏电流的大小与环境温度高度相关。

在STOP模式下,由于各外设均没有时钟驱动,不能产生中断,只有外部中断可唤醒MCU。

特别注意的是,MSCAN模块电路具有“Bus Activity”特性,可产生中断来唤醒MCU;API(自发性周期性中断) 模块电路亦可产生中断来唤醒MCU。

MC9S12GN48在STOP模式下,API使能的情况下的电流消耗如下:MC9S12GN48在伪STOP(Pseuda-STOP)模式下,RTI和COP使能的情况下的电流消耗如下:综上所述,MC9S12GN48在STOP模式下,通过API使能的情况下,功耗最低。

此外,MC9S12系列的唤醒时间如下,MC9S12GN48工作在Pierce oscillator模式下。

如何通过处理器专家配置(评估板为TWR-S12G128)1. 对CPU Component进行配置:使用外部晶体,生成CPU频率为50MHz,总线频率为25MHz。

不使用Pseudo Stop 模式。

2.对Bit Component进行配置:将PT4设置为输出,用来驱动一个LED来显示运行状态。

PWM以及设置

PWM以及设置

许多微控制器内部都包含有PWM控制器。

例如,Microchip公司的PIC16C67内含两个PWM控制器,每一个都可以选择接通时间和周期。

占空比是接通时间与周期之比;调制频率为周期的倒数。

执行PWM操作之前,这种微处理器要求在软件中完成以下工作:设置提供调制方波的片上定时器/计数器的周期2、在PWM控制寄存器中设置接通时间3、设置PWM输出的方向,这个输出是一个通用I/O管脚4、启动定时器5、使能PWM控制器目前几乎所有市售的单片机都有PWM模块功能,若没有(如早期的8051),也可以利用定时器及GPIO口来实现。

更为一般的PWM模块控制流程为(笔者使用过TI的2000系列,A VR的Mega系列,TI的LM系列):1、使能相关的模块(PWM模块以及对应管教的GPIO模块)。

2、配置PWM模块的功能,具体有:①:设置PWM定时器周期,该参数决定PWM波形的频率。

②:设置PWM定时器比较值,该参数决定PWM波形的占空比。

③:设置死区(deadband),为避免桥臂的直通需要设置死区,一般较高档的单片机都有该功能。

④:设置故障处理情况,一般为故障是封锁输出,防止过流损坏功率管,故障一般有比较器或ADC或GPIO检测。

⑤:设定同步功能,该功能在多桥臂,即多PWM模块协调工作时尤为重要。

3、设置相应的中断,编写ISR,一般用于电压电流采样,计算下一个周期的占空比,更改占空比,这部分也会有PI控制的功能。

4、使能PWM波形发生。

PWM是用于舵机和驱动电机的控制,在MC9S12单片机中,其初始化主要包括以下六大步骤:禁止PWM;选择时钟;选择极性;选择对齐模式;对占空比和周期编程;使能PWM 通道。

mc9s12xs128程序教程

mc9s12xs128程序教程

711 次
该寄存器是 0~7 通道 PWM 输出起始极性控制位,用来设置 PWM 输出的起始 电平。
用法:PWMPOL_PPOL0=1--- 通道 0 在周期开始时输出为高电平,当计数 器等于占空比寄存器的值时,输出为低电平。对外输出波形先是高电平然后再变 为低电平。
2、PWM 波形对齐寄存器 PWMCAE
该控制寄存器设定通道的级联和两种工作模式:等待模式和冻结模式。这 两种模式如图 10 和图 11 所示。
图 10 等待模式
图 11 冻结模式
只有当相应的通道关闭后,才能改变 这些控制字。 用法: PWMCTL_CON67=1 --- 通道6、7 级联成一个 16 位的 PWM 通道。此 时只有7 通道的控制字起作用,原通道 7 的使能位、PWM 输出极性选择位、时 钟选择控制位以及对齐方式选择位用来设置级联后的 PWM 输出特性 PWMCTL_CON67=0 --- 通道6,7 通道不级联 CON45、CON23、CON01 的用法同 CON67 相似。设置此控制字的意 义在于扩大了PWM 对外输出脉冲的频率范围。 PSWAI=1 --- MCU 一旦处于等待状态,就会停止时钟的输入。这样就不 会因时钟在空操作而费电;当它置为0,则MCU 就是处于等待状态,也允许 时钟的输入。 PFRZ=1 --- MCU 一旦处于冻结状态,就会停止计数器工作。 (责任编辑:dzsj8)
1、PWM 预分频寄存器 PWMPRCLK
PWMPRCLK 寄存器每一位如图 3 所示:
复位默认值:0000 0000B
813 次
图3 PWMPRCLK 寄存器
PWMPRCLK 寄存器包括 ClockA 预分频和 ClockB 预分频的控制位。ClockA、 ClockB 的值为总线时钟的 1/2n (0≤n≤7),具体设置参照图 4 和图 5

MC9S12指令系统

MC9S12指令系统
TBA 指令功能:(B)→A ;将累加器 B 的内容传送到累加器 A
TFR 指令功能:(A、B、CCR、D、X、Y、SP)→A、B、CCR、D、X、Y、SP
将一个寄存器的内容传送到另一个寄存器
TSX 指令功能:(SP)→X ;将累加器 SP 的内容传送到累加器 X
TSY 指令功能:(SP)→Y ;将累加器 SP 的内容传送到累加器 Y
STS 指令功能:(SPH:SPL)→M:M+1;将堆栈指针 SP 的内容存储到内存单元
STX 指令功能:(XH:XL)→M:M+1 将变址寄存器 X 的内容存储到内存单元
STY 指令功能:(YH:YL)→M:M+1 将变址寄存器 Y 的内容存储到内存单元 二、 传送交换指令 1、传送指令
TAB 指令功能:(A)→B ;将累加器 A 的内容传送到累加器 B
DECA 指令功能:(A)-$01→A;将 A 的内容减一
DECB 指令功能:(B)-$01→B;将 B 的内容减一
DES 指令功能:(SP)-$01→SP;将 SP 的内容减一
DEX 指令功能:(X)-$01→X;将 X 的内容减一
DEY 指令功能:(Y)-$01→Y;将 Y 的内容减一 六、 比较、测试指令 1、比较指令
IDIVS 指令功能:(D)/(X) →X;余数→D;该指令是有符号除法指令,有符号 16 位除 以有符号 16 位除法运算,被除数放在 D 中,除数放在 X 中,其中 D 和 X 的小 数点位置相同,运算结果商放在 X 中,D 中为余数。当发生除 0 运算时, C 位被置 1,X、D 的值不变。 十、 乘法指令
ABA 指令功能:(A)+(B) →A;将 A 的内容加上 B 的内容结果送累加器 A 中

飞思卡尔MC9S12XS128单片机各模块使用方法及寄存器配置

飞思卡尔MC9S12XS128单片机各模块使用方法及寄存器配置

飞思卡尔MC9S12XS128单片机各模块使用方法及寄存器配置手把手教你写S12XS128程序--PWM模块介绍该教程以MC9S12XS128单片机为核心进行讲解,全面阐释该16位单片机资源。

本文为第一讲,开始介绍该MCU的PWM模块。

PWM 调制波有8个输出通道,每一个输出通道都可以独立的进行输出。

每一个输出通道都有一个精确的计数器(计算脉冲的个数),一个周期控制寄存器和两个可供选择的时钟源。

每一个P WM 输出通道都能调制出占空比从0—100% 变化的波形。

PWM 的主要特点有:1、它有8个独立的输出通道,并且通过编程可控制其输出波形的周期。

2、每一个输出通道都有一个精确的计数器。

3、每一个通道的P WM 输出使能都可以由编程来控制。

4、PWM 输出波形的翻转控制可以通过编程来实现。

5、周期和脉宽可以被双缓冲。

当通道关闭或PWM 计数器为0时,改变周期和脉宽才起作用。

6、8 字节或16 字节的通道协议。

7、有4个时钟源可供选择(A、SA、B、SB),他们提供了一个宽范围的时钟频率。

8、通过编程可以实现希望的时钟周期。

9、具有遇到紧急情况关闭程序的功能。

10、每一个通道都可以通过编程实现左对齐输出还是居中对齐输出。

1、PWM启动寄存器PWMEPWME 寄存器每一位如图1所示:复位默认值:0000 0000B图1 PWME 寄存器每一个PWM 的输出通道都有一个使能位P WMEx 。

它相当于一个开关,用来启动和关闭相应通道的PWM 波形输出。

当任意的P WMEx 位置1,则相关的P WM 输出通道就立刻可用。

用法:PWME7=1 --- 通道7 可对外输出波形PWME7=0 --- 通道7 不能对外输出波形注意:在通道使能后所输出的第一个波形可能是不规则的。

当输出通道工作在串联模式时(PWMCTL 寄存器中的CONxx置1),那么)使能相应的16位PWM 输出通道是由PWMEx 的高位控制的,例如:设置PWMCTL_CON01 = 1,通道0、1级联,形成一个16位PWM 通道,由通道 1 的使能位控制PWM 的输出。

如何快速读懂并理解MC9S12XE系列的编程手册

如何快速读懂并理解MC9S12XE系列的编程手册

如何快速读懂并理解MC9S12XE系列的编程手册在现今的经济社会,比拼的“快”不仅仅是速度快,更是效率高。

身处社会分工细致的今天,让自己更快效率更高是有方法的。

每一家MCU产商都会提供他们生产的MCU型号的datasheet,Reference Manual等各种说明手册。

这对于从事电子软件开发的人员来说,这是他们的第一手资料,也是他们最重要的参考资料,他们所有的软件设计工作都是参考手册上的内容,比如,硬件工程师可能比较在乎芯片的电气特性;MCU应用工程师关注外设,编程器时序开发人员则比较注重去理解Flash Module,在工作中他们要仔细并反复阅读他们所关注的部分。

最近则频繁的收到飞思卡尔芯片烧录不良的反馈,而且最多的集中在MC9S12XE这个系列上。

MC9S12XEP100这款飞思卡尔芯片跟平时我们所遇到的芯片相比有些特殊。

首先,它的Flash包括以下三部分:一、1MB的P-flash(Program Flash),非易失性代码存储器;二、32KB的D-flash(Data Flash),我们可以把它当作EEPROM;三、4KB的Buffer RAM。

其次,它三部分Flash特殊的地方:1)三部分Flash各部分分别映射在global Map的不同部分,并不是连续的。

所以对于所有的编写程序的工程师来说,要实现Flash Operations,首先要正确实现Flash Module 各部分的地址映射。

下图就是简单的一个映射说明:2)4KB的Buffer RAM。

虽然它就是一个RAM,但是它比较特殊,因为它的每次修改都会转储到D-Flash的一个分区中,每次上电会将该分区的内容自动加载到Buffer RAM中,所以它就是一个下电不丢失数据的RAM,我们就把它当作一个EEPROM。

MCU批量生产时的编程主要包括以下几部分,这里特别提醒做项目的工程师,烧录芯片是非常关键的,因为他包含了对整个MCU的Flash进行操作和加密:1)Flash 操作(编程、擦除、校验等)由于Buffer Ram的存在使得要实现Flash操作配置变得难度加大,因为对Buffer Ram的任何操作,最终都要更新到D-flash中的EEP中,所以在对Buffer Ram操作之前要对D-flash进行分区,分成D-flash和EEP两部分。

PWM详细讲解

PWM详细讲解

1、理论知识PWM这个功能在飞思卡尔、STM32等高档的单片机内部有专用的模块,用此类芯片实现PWM功能时只需要通过设置相应的寄存器就可实现周期和占空比的控制。

但是如果要用51单片机的话,也是可以的,但是比较的麻烦。

此时需要用到内部定时器来实现,可用两个定时器实现,也可以用一个定时器实现。

用两个定时器的方法是用定时器T0来控制频率,定时器T1来控制占空比。

大致的的编程思路是这样的:T0定时器中断让一个I0口输出高电平,在这个定时器T0的中断当中起动定时器T1,而这个T1是让IO口输出低电平,这样改变定时器T0的初值就可以改变频率,改变定时器T1的初值就可以改变占空比。

下面重点介绍用一个定时器的实现PWM的方法。

因为市面上的智能小车所采用的电机大多数为TT减速电机,通过反复的实验,此电机最佳的工作频率为1000HZ (太高容易发生哨叫,太低电机容易发生抖动),所以下面以周期为1ms(1000HZ)进行举例,要产生其它频率的PWM波,程序中只需作简单修改即可。

用一个定时器时(如定时器T0),首先你要确定PWM的周期T和占空比D,确定了这些以后,你可以用定时器产生一个时间基准t,比如定时器溢出n次的时间是PWM的高电平的时间,则D*T=n*t,类似的可以求出PWM低电平时间需要多少个时间基准n'。

因为这里我们是产生周期为1ms(1000HZ)的PWM,所以可设置中断的时间间隔为0.01ms,,然后中断100次即为1ms。

在中断子程序内,可设置一个变量如time,在中断子程序内,有三条重要的语句:1、当time>=100时,time清零(此语句保证频率为1000HZ),2、当time>n时(n应该在0-100之间变化开),让单片相应的I/O口输出高电平,当time<n时,让单片相应的I/O口输出低电平,此时占空比就为%n。

2、程序1,使单片机的I/O口输出固定频率的PWM波下面按上面的思路给出一个具体程序:/*******************************************************************/ /* 程序名:单片机输出固定频率的PWM波*//* 晶振:11.00592 MHz CPU型号:STC89C52 *//* 功能:P2^0口输出周期为1ms(1000HZ),占空比为%80的PWM波*//*****************************************************************/#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit PWM1=P2^0;//接IN1 控制正转sbit PWM2=P2^1;//接IN2 控制反转uchar time;void main(){TMOD=0x01;//定时器0工作方式1TH0=0xff;//(65536-10)/256;//赋初值定时TL0=0xf7;//(65536-10)%256;//0.01msEA=1;//开总中断ET0=1;//开定时器0中断TR0=1;//启动定时器0while(1){}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=500;y>0;y--);}void tim0() interrupt 1{TR0=0;//赋初值时,关闭定时器TH0=0xff;//(65536-10)/256;//赋初值定时TL0=0xf7;//(65536-10)%256;//0.01msTR0=1;//打开定时器time++;if(time>=100) time=0;//1khzif(time<=20) PWM1=0;//点空比%80else PWM1=1;PWM2=0;}程序说明:1、关于频率的确定:对于11.0592M晶振, PWM输出频率为1KHZ,此时设定时器0.01ms 中断一次,时中断次数100次即为1KHZ( 0.01ms*100=1ms,即为1000HZ)此时,定时器计数器赋初值为TH0=FF,TL0=F7。

MC9S12介绍及编程练习

MC9S12介绍及编程练习

地址分配请参照相应的数据手册
Slide 7
TM
Freescale Semiconductor Confidential Proprietary Information. Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.
S12 C-系列更新…
–市场表现出色,给人崭新印象的入门级C-系列… – 16 位的性能 8 位的价格 –弥补S12 在$2.00 以下的缺憾 – 3-5V 工作电压 – 封装从小型的 48 QFP (7x7mm) 到标准的 80 QFP (与 S12D & B兼容) – 9S12C64/96/128 已经通过质量测试 – *ROM系列 (所有 CAN 版本) 将使S12入门级更低 – ROM Production targeted for 3Q05 (all versions). Exact schedule TBD. – 不带CAN的9S12GC16/32/64/128量产,价格更低!与C32/64/96管脚兼容
.
PWM 模块
0 Q Family C Family
1
2
3
4
5
on the Q-Family features 4 channels versus 6 on the C-Family. The channels 0 through 3 should be used in case an application is moved over from the C-Family to the Q-Family

pwm实验心得体会

pwm实验心得体会

pwm实验心得体会《PWM 实验心得体会》最近做了个 PWM 实验,这可真是一段让人又爱又恨的经历啊!一开始,我对这个 PWM 实验其实是一知半解的。

只知道大概是跟控制信号的脉冲宽度有关,但具体怎么弄,那真是一头雾水。

老师把实验器材发下来的时候,看着那一堆电线、电路板、芯片啥的,我心里就有点打鼓。

不过,咱也不能退缩不是?硬着头皮就开始了。

我先仔细地研究了实验指导书,那上面的字密密麻麻,就像一群小蚂蚁在爬。

看了半天,总算是有点明白了个大概。

接下来就是动手接线啦。

我小心翼翼地拿着电线,就像拿着宝贝似的,生怕一不小心就给弄断了。

可这电线就像故意跟我作对似的,怎么都插不进那个小孔里。

我那个着急呀,额头上都开始冒汗了。

“哎呀,这咋这么难弄呢!”我嘴里嘟囔着。

好不容易把线都接好了,心里松了一口气,想着这下应该没问题了吧。

结果一通电,啥反应都没有!我这心一下子又提到了嗓子眼儿。

“这是咋回事啊?”我开始从头检查线路,看是不是哪里接错了。

这一检查,还真发现了问题。

有一根线居然接反了!我真是哭笑不得,赶紧把它给纠正过来。

再次通电,嘿,有反应了!可这反应又不对劲儿,输出的信号完全不是我想要的。

我这脑袋又开始大了,到底是哪里出了问题呢?我盯着电路板,眼睛都快要看花了。

突然,我发现有个电阻的阻值好像不对。

“哎呀,不会是这个电阻的问题吧?”我赶紧把电阻换了一个合适的阻值。

这一次,终于成功了!看着示波器上那漂亮的 PWM 波形,我心里那叫一个美啊!“哈哈,终于被我搞定了!”在整个实验过程中,我真的是体会到了细心和耐心的重要性。

就那么几根线,一个电阻,如果不仔细,不耐心,那真是怎么都弄不好。

而且啊,这个实验还让我明白了,遇到问题不能慌。

一开始我看到没反应,心里特别着急,越着急就越找不到问题所在。

后来我冷静下来,一点点地排查,终于找到了问题。

还有就是团队合作的力量。

我旁边的同学也在做这个实验,我们互相交流,互相帮忙,一起解决问题。

PWM控制技术学习资料

PWM控制技术学习资料

PWM控制技术主要内容:PWM控制的基本原理、控制方式与PWM波形的生成方法,PWM 逆变电路的谐波分析,PWM整流电路。

重点:PWM控制的基本原理、控制方式与PWM波形的生成方法。

难点:PWM波形的生成方法,PWM逆变电路的谐波分析。

基本要求:掌握PWM控制的基本原理、控制方式与PWM波形的生成方法,了解PWM逆变电路的谐波分析,了解跟踪型PWM逆变电路,了解PWM整流电路。

PWM(Pulse Width Modulation)控制——脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。

第3、4章已涉及这方面内容:第3章:直流斩波电路采用,第4章有两处: 4.1节斩控式交流调压电路,4.4节矩阵式变频电路。

本章内容PWM控制技术在逆变电路中应用最广,应用的逆变电路绝大部分是PWM 型,PWM控制技术正是有赖于在逆变电路中的应用,才确定了它在电力电子技术中的重要地位。

本章主要以逆变电路为控制对象来介绍PWM控制技术,也介绍PWM整流电路1 PWM控制的基本原理理论基础:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。

冲量指窄脉冲的面积。

效果基本相同,是指环节的输出响应波形基本相同。

低频段非常接近,仅在高频段略有差异。

图6-1 形状不同而冲量相同的各种窄脉冲面积等效原理:分别将如图6-1所示的电压窄脉冲加在一阶惯性环节(R-L电路)上,如图6-2a所示。

其输出电流i(t)对不同窄脉冲时的响应波形如图6-2b所示。

从波形可以看出,在i(t)的上升段,i(t)的形状也略有不同,但其下降段则几乎完全相同。

脉冲越窄,各i(t)响应波形的差异也越小。

如果周期性地施加上述脉冲,则响应i(t)也是周期性的。

用傅里叶级数分解后将可看出,各i(t)在低频段的特性将非常接近,仅在高频段有所不同。

图6-2 冲量相同的各种窄脉冲的响应波形用一系列等幅不等宽的脉冲来代替一个正弦半波,正弦半波N等分,看成N 个相连的脉冲序列,宽度相等,但幅值不等;用矩形脉冲代替,等幅,不等宽,中点重合,面积(冲量)相等,宽度按正弦规律变化。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PWM模块.
PWM 的主要特点有: 周期和脉宽可以被双缓冲。

当通道关闭或 PWM 计数器为 0 时,改变周期和脉宽才起作用。

1.PWME使能寄存器.
用法: PWME7=1; 7 通道可对外输出波形。

PWME7=0; 7 通道不能对外输出波形。

2.PWMPOL寄存器(选择初始电平)
用法: PWMPOL0=1; 0通道对外输出波形先是高电平然后再变为低电平。

PWMPOL0=0; 0 通道对外输出波形先是低电平然后再变为高电
平。

3.PWMCLK寄存器(时钟源选择)
每一个 PWM 输出通道都有两个时钟可供选择(A、SA或 B、SB)。

0、1、4、5 通道可选用 A、SA 时钟,2、3、6、7 通道可选用 B、SB 通道。

如果
当一个 PWM输出波形正在产生时,时钟改变,这时就会产生一个平头的或线形脉冲。

用法: PCLK1=1; 1 通道的时钟源设为 SA。

PCLK1=0; 1 通道的时钟源设为 A。

4.PWMPRCLK寄存器(A,B时钟源分频)
PWMPRCLK寄存器是单独用来给时钟源 A、B进行预分频的。

5.PWMCAE寄存器(决定周期是否加倍寄存器)
PWMCAE 寄存器包含 8 个控制位来对每个 PWM 通道设置左对齐输出或居中对齐输出。

如果 CAEx 置为 1,则为居中对齐输出。

如果置为 0,则为左对齐输出。

应当注意的是,只有输出通道被关闭后才能对其进行设置,即通道被激活后不能对其进行设置。

(见PWMPERx寄存器)
6.PWMCTL寄存器(通道串联)
只有当相应的通道关闭后,才能改变这些控制字。

CON67=1;这时通道 6、7就串联为同一个输出通道。

此时只有 7通道的控
制字有用。

例如:7 通道的 PWME 寄存器决定了他们的输出情况,7 通道的
PWMPOL 寄存器决定了他们是高电平翻转还是低电平翻转, 7通道的
PWMCLK寄存器决定了他们两个的时钟源,7 通道的 PWMCAE寄存器决定了
他们是左对齐输出还是居中对齐输出等。

CON67=0 ;这时 6,7 通道分别作为独立输出通道对外输出。

7.PWMSCLA寄存器(时钟源SA频率选择)
时钟SA是通过对PWMSCLA寄存器的设置来对A时钟进行分频而产生的。

其计算公式为:
Clock SA=Clock A /(2*PWMSCLA)
PWMSCLB 寄存器同 PWMSCLA 寄存器相同.
Clock SB=Clock B /(2*PWMSCLB)
8.PWMCNTx寄存器
计数器在任何时候都可以被读,而不影响计数,也不影响对PWM 通道的操
作。

任何值写入 PWMCNT0 寄存器都会导致计数器复位置 0,且其计数方向会被设置为向上计数,并且会立刻从缓冲器载入任务和周期值,并会根据翻转极性的设置来改变输出。

当计数器达到计数值后,会自动清零。

只有当通道使能后,计数器才开始计数。

此寄存器随时都可以对其进行读、写操作。

9.PWMPERx寄存器(周期常数寄存器)
周期的计算方法:
1)当 CAEx=0时,即进行左线性输出时:
PWMx 周期=通道时钟周期*PWMPERx
2)当 CAEx=1时,即进行居中对齐输出时:
PWMx 周期=通道时钟周期*(2*PWMPERx)
10.PWMDTYx寄存器(占空比常数寄存器)
当计数值与占空比常数 PWMDTY相等时,则比较输出器有效,这时就会将
触发器置位,然后PWMCNT继续计数,当计数值与周期常数PWMPER相等
时,比较器输出有效,将触发器复位,同时也使 PWMCNT复位,结束一个输出周期。

占空比的计算方法:
当 PPOL=0 时:
占空比=[(PWMPERx—PWMDTYx)/ PWMPERx]*100%
当 PPOL=1 时:
占空比=(PWMDTYx/ PWMPERx)*100%
总结:
当为左线性输出时:
PWMx输出频率=时钟频率/ PWMPERx
当 PPOLx=0时
占空比=[(PWMPERx—PWMDTYx)/ PWMPERx]*100%
当 PPOLx=1时
占空比=[PWMDTYx/ PWMPERx]*100%
当为居中线性输出时:
PWMx 输出频率=时钟频率/(2* PWMPERx)
当 PPOLx=0时
占空比=[(PWMPERx—PWMDTYx)/ PWMPERx]*100% 当 PPOLx=1 时
占空比=[PWMDTYx/ PWMPERx]*100%
应当注意的是,在对PWMDTYx 和 PWMPERx进行设置时,PWMPERx寄
存器的值应当大于PWMDTYx 寄存器的值。

PWM初始化步骤总结
1、禁止 PWM Disable PWM
PWME=0;
2、选择时钟 Select clock (prescaler and scale) for the PWM PWMPRCLK,PWMSCLA,PWMSCLB,PWMCLK
3、选择极性 Select polarity
PWMPOL
4、选择对齐模式 Select center or left aligned mode
PWMCAE
5、对占空比和周期编程 Program duty cycle and period
PWMDTYx, PWMPERx
6、使能 PWM 通道 Enable used PWM channels
PWME。

相关文档
最新文档