电子设计吧奉献XS128各模块整理资料.docx

上传人:b****2 文档编号:23068393 上传时间:2023-04-30 格式:DOCX 页数:53 大小:193.35KB
下载 相关 举报
电子设计吧奉献XS128各模块整理资料.docx_第1页
第1页 / 共53页
电子设计吧奉献XS128各模块整理资料.docx_第2页
第2页 / 共53页
电子设计吧奉献XS128各模块整理资料.docx_第3页
第3页 / 共53页
电子设计吧奉献XS128各模块整理资料.docx_第4页
第4页 / 共53页
电子设计吧奉献XS128各模块整理资料.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

电子设计吧奉献XS128各模块整理资料.docx

《电子设计吧奉献XS128各模块整理资料.docx》由会员分享,可在线阅读,更多相关《电子设计吧奉献XS128各模块整理资料.docx(53页珍藏版)》请在冰豆网上搜索。

电子设计吧奉献XS128各模块整理资料.docx

电子设计吧奉献XS128各模块整理资料

来源:

电子设计吧

整理:

大学生电子设计联盟smile_keyang

http:

//www.nuedc.org/index.php欢迎访问!

手把手教你写S12XS128程序--PWM模块介绍

该教程以MC9S12XS128单片机为核心进行讲解,全面阐释该16位单片机资源。

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

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

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

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

PWM的主要特点有:

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

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

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

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

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

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

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

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

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

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

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

1、PWM启动寄存器PWME

PWME寄存器每一位如图1所示:

复位默认值:

00000000B

图1PWME寄存器 

每一个PWM的输出通道都有一个使能位PWMEx。

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

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

用法:

PWME7=1---通道7可对外输出波形

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

注意:

在通道使能后所输出的第一个波形可能是不规则的。

当输出通道工作在串联模式时(PWMCTL寄存器中的CONxx置1),那么)使能相应的16位PWM输出通道是由PWMEx的高位控制的,例如:

设置PWMCTL_CON01=+级联,形成一个16位PWM通道,由通道1的使能位控制PWM的输出。

2、PWM时钟选择寄存器PWMCLK

PWMCLK寄存器每一位如图3所示:

复位默认值:

00000000B

图2PWMCLK寄存器 

S12的PWM共有四个时钟源,每一个PWM输出通道都有两个时钟可供选择(ClockA、ClockSA或ClockB、ClockSB))。

其中0、1、4、5通道可选用ClockA和ClockSA,2、3、6、7通道可选用ClockB、ClockSB通道。

该寄存器用来实现几个通道时钟源的选择。

用法:

PCLK0=1---通道0(PTP0)的时钟源设为ClockSA

PCLK2=0---通道2(PTP2)的时钟源设为ClockB

1、PWM预分频寄存器PWMPRCLK

PWMPRCLK寄存器每一位如图3所示:

 

复位默认值:

00000000B

图3PWMPRCLK寄存器 

PWMPRCLK寄存器包括ClockA预分频和ClockB预分频的控制位。

ClockA、ClockB的值为总线时钟的1/2n(0≤n≤7),具体设置参照图4和图5

 

图4ClockA预分频设置

图5ClockB预分频设置

PCKB0~PCKB2是对ClockB进行预分频。

PCKA0~PCKA2是对ClockA进行预分频。

2、PWM分频寄存器PWMSCLA、PWMSCLB

PWMSCLA寄存器每一位如图6所示:

图6PWMSCLA寄存器

ClockSA是通过对PWMSCLA寄存器的设置来对ClockA进行分频而产生的。

其计算公式为:

ClockSA=ClockA/(2*PWMSCLA)

PWMSCLB寄存器与PWMSCLA寄存器相似,ClockSB就是通过对PWMSCLB寄存器的设置来对ClockB进行分频而产生的。

其计算公式为:

ClockSB=ClockB/(2*PWMSCLB)

1、PWM极性选择寄存器PWMPOL

PWMPOL寄存器每一位如图7所示:

该寄存器是0~7通道PWM输出起始极性控制位,用来设置PWM输出的起始电平。

用法:

PWMPOL_PPOL0=1---通道0在周期开始时输出为高电平,当计数器等于占空比寄存器的值时,输出为低电平。

对外输出波形先是高电平然后再变为低电平。

2、PWM波形对齐寄存器PWMCAE

PWMCAE寄存器每一位如图8所示:

 

图8PWMCAE寄存器

 

PWMCAE寄存器包含8个控制位来对每个PWM通道设置左对齐输出或中心对齐输出。

用法:

PWMCAE_CAE0=1---通道0中心对齐输出

PWMCAE_CAE7=0---通道7左对齐输出

注意:

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

1、PWM控制寄存器PWMCTL

PWMCTL寄存器每一位如图9所示:

图9PWMCTL寄存器

 

该控制寄存器设定通道的级联和两种工作模式:

等待模式和冻结模式。

这两种模式如图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一旦处于冻结状态,就会停止计数器工作。

S12微控制器PWM模块是由独立运行的8位脉冲计数器PWMCNT、两个比较寄存器PWMPER和PWMDTY组成。

1、左对齐方式

在该方式下,脉冲计数器为循环递增计数,计数初值为0。

当PWM使能后,计数器PWMCNT从0开始对时钟信号递增计数,开始一个输出周期。

当计数值与占空比常数寄存器PWMDTY相等时,比较器1输出有效,将触发器置位,而PWMCNT继续计数;当计数值与周期常数寄存器PWMPER相等时,比较器2输出有效,将触发器复位,同时PWMCNT也复位,结束一个输出周期。

原理参照图14:

图14PWM左对齐方式

2、中心对齐方式

在该方式下,脉冲计数器为双向计数,计数初值为0。

当PWM使能后,计数器PWMCNT从0开始对时钟信号递增计数,开始输出一个周期。

当计数器与占空比常数寄存器PWMDTY相等时,比较器1输出有效,触发器翻转,而PWMCNT继续计数,当计数值与周期常数PWMPER相等时,比较器2输出有效,此时改变PWMCNT的计数方向,使其递解计数;当PWMCNT再次与PWMDTY相等时,比较器1再一次输出有效,使触发器再次翻转,而PWMCNT继续递减计数,等待PWMCNT减回至0,完成一个输出周期。

原理参照图15:

图15   中心对齐方式

3、周期计算方法

左对齐方式:

输出周期=通道周期×PWMPERx

中心对齐方式:

输出周期=通道周期×PWMPERx×2

4、脉宽计算方法

左对齐方式:

占空比=[(PWMPERx-PWMDTYx)/PWMPERx]×100%

中心对齐方式:

占空比=[PWMDTYx/PWMPERx]×100%

1、PWM通道计数寄存器PWMCNTx

PWMCNTx寄存器共有8个,每一个通道都有一个8位PWM加/减双向计数器,通道级联后可变成16位PWM加/减双向计数器。

下面以PWMCNT0为例对PWMCNTx寄存器进行介绍。

PWMCNT0寄存器如图12所示:

 

图12PWMCNT0寄存器

 

计数器以所选时钟源的频率运行。

计数器在任何时候都可以被读,而不影响计数,也不影响对PWM通道的操作。

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

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

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

 2、PWM通道周期寄存器PWMPERx

PWMPERx寄存器共有8个,每一个通道都有一个这样的周期寄存器。

这个寄存器的值就决定了相关PWM通道的周期。

每一个通道的周期寄存器都是双缓冲的,因此如果当通道使能后,改变他们的值,将不会发生任何作用,除非当下列情况之一发生:

*有效的周期结束。

*对计数器进行写操作(计数器复位)

*通道不可用(PWMEx=0)

这样就会使PWM输出波形要么是新波形要么是旧波形,并不会在两者之间进行交替变换。

如果通道不可用,那么对周期寄存器进行写操作,将会直接

导致周期寄存器同缓冲器一起闭锁。

图13所示的是PWMPER0寄存器:

 

图13PWMPER0寄存器

3、PWM通道占空比寄存器PWMDTYx

PWMDTYx寄存器也有8个,每一个通道都有一个这样的占空比常数寄存器。

这个寄存器的值就决定了相关PWM通道输出波形的占空比。

每一个通道的占空比寄存器都是双缓冲的,因此如果当通道被激活后,改变他们的值将不会发生任何作用,除非当下列情况之一发生:

*有效的周期结束。

*对计数器进行写操作(计数器复位)

*通道不可用(PWMEx=0)

这样就会使PWM输出波形要么是新波形要么是旧波形,并不会在两者之间进行交替变换。

如果通道没有被激活,那么对占空比常数寄存器进行写操作,将会直接导致周期寄存器同缓冲器一起闭锁。

当计数值与占空比常数PWMDTY相等时,则比较输出器有效,这时就会将触发器置位,然后PWMCNT继续计数,当计数值与周期常数PWMPER相等时,比较器输出有效,将触发器复位,同时也使PWMCNT复位,结束一个输出周期。

S12微控制器PWM模块是由独立运行的8位脉冲计数器PWMCNT、两个比较寄存器PWMPER和PWMDTY组成。

1、左对齐方式

在该方式下,脉冲计数器为循环递增计数,计数初值为0。

当PWM使能后,计数器PWMCNT从0开始对时钟信号递增计数,开始一个输出周期。

当计数值与占空比常数寄存器PWMDTY相等时,比较器1输出有效,将触发器置位,而PWMCNT继续计数;当计数值与周期常数寄存器PWMPER相等时,比较器2输出有效,将触发器复位,同时PWMCNT也复位,结束一个输出周期。

原理参照图14:

图14PWM左对齐方式

2、中心对齐方式

在该方式下,脉冲计数器为双向计数,计数初值为0。

当PWM使能后,计数器PWMCNT从0开始对时钟信号递增计数,开始输出一个周期。

当计数器与占空比常数寄存器PWMDTY相等时,比较器1输出有效,触发器翻转,而PWMCNT继续计数,当计数值与周期常数PWMPER相等时,比较器2输出有效,此时改变PWMCNT的计数方向,使其递解计数;当PWMCNT再次与PWMDTY相等时,比较器1再一次输出有效,使触发器再次翻转,而PWMCNT继续递减计数,等待PWMCNT减回至0,完成一个输出周期。

原理参照图15:

图15   中心对齐方式

3、周期计算方法

左对齐方式:

输出周期=通道周期×PWMPERx

中心对齐方式:

输出周期=通道周期×PWMPERx×2

4、脉宽计算方法

左对齐方式:

占空比=[(PWMPERx-PWMDTYx)/PWMPERx]×100%

中心对齐方式:

占空比=[PWMDTYx/PWMPERx]×100%

PWM初始化步骤总结

1、禁止PWMPWME=0

2、选择时钟PWMPRCLK,PWMSCLA,PWMSCLB,PWMCLK

3、选择极性PWMPOL

4、选择对齐方式PWMCAE

5、选择占空比和周期PWMDTYx,PWMPERx

6、使能PWMPWME=1

 【例程1】

//------------------------------------------------------------------------------------------------------------------//

//功能说明:

MC9S12XS128--PWM例程

//使用说明:

实现通道3(PTP3)输出频率为1KHz,占空比为50%的方波,用示波器观察

//程序设计:

电子设计吧【】

//设计时间:

2010.01.21

//----------------------------------------------------------------------------------------------------------------//

#include/*commondefinesandmacros*/

#include"derivative.h"/*derivative-specificdefinitions*/

//--------------初始化函数----------------//

//-----时钟初始化程序--------//

voidPLL_Init(void)//PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)

{//锁相环时钟=2*16*(2+1)/(1+1)=48MHz

REFDV=1;//总线时钟=48/2=24MHz

SYNR=2;

while(!

(CRGFLG&0x08));

CLKSEL=0x80;//选定锁相环时钟

}

//-----PWM初始化程序------//

voidPWM_Init(void)

{

PWME_PWME3=0x00;//DisablePWM禁止

PWMPRCLK=0x33;//00110011A=B=24M/8=3M时钟预分频寄存器设置

PWMSCLA=150;//SA=A/2/150=10k时钟设置

PWMSCLB=15;//SB=B/2/15=100k时钟设置

PWMCLK_PCLK3=1;//PWM3-----SB时钟源的选择

PWMPOL_PPOL3=1;//Duty=HighTime极性设置

PWMCAE_CAE3=0;//Left-aligned对齐方式设置

PWMCTL=0x00;//noconcatenation控制寄存器设置

PWMPER3=100;//Frequency=SB/100=1K周期寄存器设置

PWMDTY3=50;//Dutycycle=50%占空比寄存器设置

PWME_PWME3=1;//EnablePWM使能

}

//-----------------主函数--------------------//

voidmain(void)

{

/*putyourowncodehere*/

PLL_Init();

PWM_Init();

EnableInterrupts;

for(;;){

_FEED_COP();/*feedsthedog*/

}/*loopforever*/

/*pleasemakesurethatyouneverleavemain*/

}

手把手教你写S12XS128程序--A/D转换模块介绍

1、A/D转换原理

A/D转换的过程是模拟信号依次通过取样、保持和量化、编码几个过程后转换为数字格式。

a)取样与保持

一般取样与保持过程是同时完成的,取样-保持电路的原理图如图16所示,由输入放大器A1、输出放大器A2、保持电容CH和电子开关S组成,要求AV1*AV2=1。

原理是:

当开关S闭合时,电路处于取样阶段,电容器充电,由于AV1*AV2=1,所以输出等于输入;当开关S断开时,由于A2输入阻抗较大而且开关理想,可认为CH没有放电回路,输出电压保持不变。

图16取样-保持电路

取样-保持以均匀间隔对模拟信号进行抽样,并且在每个抽样运算后在足够的时间内保持抽样值恒定,以保证输出值可以被A/D转换器精确转换。

b)量化与编码

量化的方法,一般有舍尾取整法和四舍五入法,过程是先取顶量化单位Δ,量化单位取值越小,量化误差的绝对值就越小,具体过程在这里就不做介绍了。

将量化后的结果用二进制码表示叫做编码。

2、A/D转换器的技术指标

a)分辨率

分辨率说明A/D转换器对输入信号的分辨能力,理论上,n位A/D转换器能区分的输入电压的最小值为满量程的

1/2n。

也就是说,在参考电压一定时,输出位数越多,量化单位就越小,分辨率就越高。

S12的ATD模块中,若输出设置为8位的话,那么转换器能区分的输入信号最小电压为19.53mV。

b)转换时间

A/D转换器按其工作原理可以分为并联比较型(转换速度快ns级)、逐次逼近型(转换速度适中us级)、双积分型(速度慢抗干扰能力强)。

不同类型的转化的A/D转换器转换时间不尽相同,S12的ATD模块中,8位数字量转换时间仅有6us,10位数字量转换时间仅有7us。

S12内置了2组10位/8位的A/D模块:

ATD0和ATD1,共有16个模拟量输入通道,属于逐次逼近型A/D转换器(这个转换过程与用天平称物的原理相似)。

1、功能结构图

图17A/D模块功能结构图

图17所示的是A/D模块的功能结构,这个功能模块被虚线划分成为图示所示的虚线所隔离的三个部分:

IP总线接口、转换模式控制/寄存器列表,自定义模拟量。

IP总线接口负责该模块与总线的连接,实现A/D模块和通用I/O的目的,还起到分频的作用;

转换模式控制寄存器列表中有控制该模块的所有的寄存器,执行左右对齐运行和连续扫描。

自定义模拟量负责实现模拟量到数字量的转换。

包括了执行一次简单转换所需的模拟量和数字量。

2、HCS12中A/D转化模块特点

8/10位精度;7us,10-位单次转换时间.;采样缓冲放大器;可编程采样时间;左/右对齐,有符号/无符号结果数据;外部触发控制;转换完成中断;模拟输入8通道复用;模拟/数字输入引脚复用;1到8转换序列长度;连续转换模式;多通道扫描方式。

ATD模块有模拟量前端、模拟量转换、控制部分及结果存储等四部分组成。

其中模拟前端包括多路转换开关、采样缓冲器、放大器等,结果存储部分主要有8个16位的存储器和反映工作状态的若干标志位。

1、ATD0控制寄存器2---ATD0CTL2

ATD0CTL2主要控制ATD0的启动、状态标志以及上电模式,对寄存器进行写操作时,将中断当前的转化过程。

寄存器ATD0CTL2如图18所示:

图18ATD0CTL2寄存器

ADPU:

A/D使能控制位,相当于一个开关,用来启动/禁止A/D转换

1=A/D模块上电

0=禁止A/D,以减少功耗

AFFC:

A/D快速转换完成标志位清零

1=快速标志位清零顺序,每次读取结果寄存器自动清零

0=正常标志位清零顺序,需要软件方式对状态标志位清零

AWAI:

A/D等待模式

1=等待模式下,ATD继续运行

0=等待模式下,ATD停止运行,以降低功耗

ETRIGP、ETRIGLE、ETRIGE:

ETRIGLE

ETRIGP

ETRIGE

描述

x

x

0

忽略外部触发

0

0

1

 下降沿触发

0

1

1

上升沿触发

1

0

1

低电平触发

1

1

1

高电平触发

【注意】ETRIGE:

外部触发使能控制位,该功能借助引脚AN7,当AN7接收到外部触发时,启动A/D转换,否则不进行转换。

0--忽略外部触发;1--有外部触发时开始转换,此时AN7不能用于A/D转换。

ASCIE:

A/D转化序列转换结束中断使能控制位

1=允许ATD转换序列转换结束后发生中断

0=禁止ATD中断

ASCIF:

A/D转换序列转换结束中断标志,只用于读。

1=发生中断

0=为发生中断

2、ATD0控制寄存器3---ATD0CTL3

ATD0CTL3主要控制结果寄存器的映射,设置转换序列的长度,还可以暂时冻结ATD0模块,尤其确定ATD0在BDM状态下的行为。

寄存器ATD0CTL3如图19所示:

图19ATD0CTL3寄存器

S1C、S2C、S4C、S8C:

转换序列长度选择位控制位

【注意】ATD的每次启动要进行若干次扫描循环,每次扫描循环称为一个转换序列。

FIFO:

结果寄存器FIFO模式控制位,

1=结果寄存器映射到转换序列

0=结果寄存器没有映射到转换序列

FRZ0、FRZ1:

背景调试冻结控制位

FRZ

Response

00

Ignore IFREEZE(冻结模式下继续转换)

01

Reserved(冻结模式下保留)

10

Finish conversion then freeze(完成转换后冻结)

11

Freeze Immediately(冻结模式下立刻冻结)

3、ATD0控制寄存器4---ATD0CTL4

ATD0CTL4用于选择时钟,选择采样转换时间以及选择8位/10位转换方式。

寄存器ATD0CTL4如图20所示:

图20ATD0CTL4寄存器

SRES8:

A/D精度选择控制位

1=将采集到的模拟量以8位二进制数表示

0=将采集到的模拟量以10位二进制数表示

SMP0、SMP1:

采样时间选择控制位

SMP[1:

0]

采样时间

00

2 A/D时钟周期

01

4 A/D时钟周期

10

8 A/D时钟周期

11

16 A/D 时钟周期

PPS[0:

4]:

5位模数计数器预分频器

-分频系数从2到64

-A/D时钟计算公式:

ATDClock=BusClock/(PRS+1)×0.5

-A/D时钟频率应满足:

【注意】对于AD转换来说,它的转换周期包括采样时间和运算时间。

如果频率太高,则采样时间过短。

这对于输出阻抗比较大或信号频率比较高的信号来说,就会产生较大的采样误差,那么AD转换的精度就会受较大的影响。

 

4、ATD0控制寄存器4---ATD0CTL5

ATD0CTL5用于选择转换方式,选择转

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 书信模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1