XS128学习资料整理.docx

上传人:b****6 文档编号:3878290 上传时间:2022-11-26 格式:DOCX 页数:29 大小:34.96KB
下载 相关 举报
XS128学习资料整理.docx_第1页
第1页 / 共29页
XS128学习资料整理.docx_第2页
第2页 / 共29页
XS128学习资料整理.docx_第3页
第3页 / 共29页
XS128学习资料整理.docx_第4页
第4页 / 共29页
XS128学习资料整理.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

XS128学习资料整理.docx

《XS128学习资料整理.docx》由会员分享,可在线阅读,更多相关《XS128学习资料整理.docx(29页珍藏版)》请在冰豆网上搜索。

XS128学习资料整理.docx

XS128学习资料整理

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:

ETRIGLEETRIGPETRIGE描述

xx0忽略外部触发

001下降沿触发

011上升沿触发

101低电平触发

111高电平触发

【注意】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:

背景调试冻结控制位

FRZResponse

00IgnoreIFREEZE(冻结模式下继续转换)

01Reserved(冻结模式下保留)

10Finishconversionthenfreeze(完成转换后冻结)

11FreezeImmediately(冻结模式下立刻冻结)

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

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

寄存器ATD0CTL4如图20所示:

图20ATD0CTL4寄存器

SRES8:

A/D精度选择控制位

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

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

SMP0、SMP1:

采样时间选择控制位

SMP[1:

0]采样时间

002A/D时钟周期

014A/D时钟周期

108A/D时钟周期

1116A/D时钟周期

PPS[0:

4]:

5位模数计数器预分频器

-分频系数从2到64

-A/D时钟计算公式:

ATDClock=BusClock/(PRS+1)×0.5

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

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

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

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

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

ATD0CTL5用于选择转换方式,选择转换通道,设置单/多通道转换和单次/连续转换模式以及对齐方式。

寄存器ATD0CTL5如图20所示:

5、ATD0状态寄存器5---ATD0START0、ATD0START0

ATD0START0反映当前的转换通道、A/D转换是否结束、是否有外部触发等;

ATD0START1反映转换序列中相应的转换是否完成。

寄存器ATD0START0、ATD0START1如图21所示:

SCF---转换序列完成标志

在单次转换模式时,当转换完成后置位(SCAN=0)

在连续转换模式时,当第一次转换完成后置位(SCAN=1),当AFFC=0,写1清零。

ETORF---外部触发覆盖标志

如果在转换过程中高/低电平出现,置位FIFOR

当结果寄存器在读出之前已经被写入时,置位(CCF没有清零)

CC[2:

0]转换计数器---3位计数器指向下一个将要转换的通道

CCF7-CCF0---独立通道转换完成标志位每个相应的通道转换结束后置位,当相应的A/D结果寄存器被读出时,清零,注意当AFFC位不同时的情况

第十六讲:

A/D转换应用实例

要让ATD开始转换工作,必须经过以下三个步骤:

1.将ADPU置1,使ATD启动;

2.按照要求对转换为数、扫描方式、采样时间、时钟频率及标志检查等方式进行设置;

3.发出启动命令;

如果上电默认状态即能满足工作要求,那么只要将ADPU置1,然后通过控制寄存器发出转换命令,即可实现转换。

【例程2】

程序描述:

由通道ATD0进行单通道A/D转换,转换值在B口显示

程序如下:

#include/*commondefinesandmacros*/

#include/*derivativeinformation*/

#pragmaLINK_INFODERIVATIVE"mc9s12dg128b"

/******定义变量********/

wordAD_wValue;//AD转换结果

/*时钟初始化*/

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;

}

/*AD初始化*/

voidAD_Init(void)

{

ATD0CTL2=0xC0;//启动A/D,快速清零,无等待模式,禁止外部触发,中断禁止

ATD0CTL3=0x20;//转换序列长度为4,NoFIFO,Freeze模式下继续转换

ATD0CTL4=0x85;//8位精度,2个时钟,ATDClock=[BusClock*0.5]/[PRS+1]=2MHz;PRS=5,divider=12

ATD0CTL5=0xA0;//右对齐无符号,单通道采样,通道0

ATD0DIEN=0x00;//禁止数字输入

}

/*读取AD转换结果*/

voidAD_GetValue(word*AD_wValue)

{

*AD_wValue=ATD0DR0;//读取结果寄存器的值

}

/**********主函数**************/

voidmain(void)

{

PLL_Init();

AD_Init();

DDRB=0xFF;

PORTB=0x00;

EnableInterrupts;

for(;;)

{

while(!

ATD0STAT1_CCF0);//等待转换结束while(ATDOSTAT1_CCF0==1)

AD_GetValue(&AD_wValue);//读取转换结果

PORTB=(byte)AD_wValue;//在B口显示转换值

}

}

手把手教你写S12XS128程序(17)--Timer模块介绍1

1、简述

MC9S12XS128定时器模块与MC9S12DG128ECT部分功能完全类似,以下均以ECT模块介绍xs128定时器模块。

HC12增强型捕捉计时器模块在HCS12标准定时器的基础上增加了一些特点,用以扩展它的应用范围,特别是在汽车ABS方面。

基准计时器的核心仍然是一个16位的可编程计数器,其时钟源来自一个预分频器。

该计时器可以被应用于多个方面,包括在对输入波形进行测量的同时产生一个输出波形。

波形的脉宽可以在几微秒到数秒的范围内变化。

增强型定时器模块(ECT)的结构框图如下,ECT功能相当于高速的I/O口,由一个4位预分频器、一个16位自由运行计数器,8个16位IC/OC通道,2个16位脉冲累加器以及一个16位模数递减计数器组成。

ECT实际上是一个16位的可编程计数器,它的基本时钟频率可以通过预分频器设置,用于产生波形输出,测量输入波形,统计脉冲个数,可以作为定时中断功能和独立时钟基准。

2、运行模式

停止:

由于时钟停止,计时器和计数器均关闭。

冻结:

计时器和计数器均保持运行,直到TSCR($06)的TSFRZ位被置1。

把手教你写S12XS128程序(18)--Timer模块介绍2

IC通道组

IC通道组由四个标准的缓冲通道IC0-IC3和四个非缓冲通道IC4-IC7组成,两部分的基本功能都是捕捉外部事件发生的时刻,但是缓冲通道除了IC/OC寄存器TCn外,还设有保持寄存器TCnH,此外还在入口设置了延迟计数器,用来提高抗干扰能力。

非缓冲通道没有保持寄存器,入口也没有延迟计数器,但每个通道入口设置了一个2输入端的多路器,事件触发信号可以是来自本通道的输入引脚PORTn,也可以是来自其关联通道PORT(n-4)的延迟计数器输出,使用更加灵活。

当延迟功能有效时,输入引脚检测到一个有效的边沿后,延迟计数器开始对P时钟(模块时钟)进行计数,当到达设定的计数值后,延迟计数器在其输出端有条件地产生一个脉冲,这个条件就是延迟前后的引脚电平相反。

这样可以避免对窄输入脉冲做出反应。

延迟计数结束后,计数器自动清除。

输入信号两个有效边沿之间的持续时间必须大于设定的延迟时间。

在ECT中,所有IC通道均设置了覆盖保护功能,可以通过寄存器ICOVW设置是否允许某个通道用新的捕捉结果覆盖上一个结果。

对于缓冲的IC通道PT0-PT3,还具有锁存与队列两种工作方式。

在锁存方式下,每个有效的引脚事件只将自由定时器的值放入捕捉寄存器TCn,而TCn到保持寄存器TCnH的传送必须依赖递减模数计数器回0或者其他强制锁存命令才能实现,这时IC的工作情形与第6章的TIM模块相似。

在队列方式下(图7-2),TCn与TCnH形成了一个类似先进先出的队列,每个捕捉结果从TCn进入,然后随着下一个捕捉结果的到来移入TCnH,程序可以从TCnH取得结果,然而这个队列是开放的,即程序也可以直接从TCn取得捕捉结果。

队列方式为CPU提供了充分的响应时间。

由于PAC0-3与IC0-3共享相同的引脚,而且共享入口的逻辑,因此在两种方式下,PAI与IC都可以同时工作,对同一引脚进行记录,前者记录脉冲或者边沿的数量,后者记录具体的时刻。

模数递减计数器

16位递减模数计数器(MDC)可以用作时钟基准,产生周期性的中断请求,也可用于将IC寄存器和脉冲累加器的值锁存到各自的保持寄存器中。

锁存动作可以通过程序设定为周期性的或一次性的。

MDC的时钟频率可通过独立的定标器设定,内部设有定时常数寄存器,可以实现自动重装载,但MDC的常数寄存器与MDC计数器使用相同的地址,加载时通过特殊的时序实现。

每当MDC回0时,将在给定的时间段内控制贮和PAI寄存器的内容向各自的缓冲寄存器传输。

反映了MDC在IC、PAI系统中的作用。

脉冲累加器

脉冲累加器由4个8位的通道PAC0-PAC3组成,可以通过级联形成两个16位通道PACA、PACB,它可以统计输入引脚上出现的有效边沿的数量,也可以统计有效电平出现的累计时间。

各个通道的8位保持寄存器是与4个缓冲IC通道相关联的,它们共享边沿检测与延迟电路。

当IC工作在两种不同的队

列方式时,PAC保持寄存器也处于不同的工作状态,在锁存方式下,PCnH的加载依靠MDC计数器或者强制命令实现,而在队列方式下,则依靠IC通道的TCnH读命令。

可见在ECT模块下,IC与PAI的工作联系更加紧密。

此外,脉冲累加器还有饱和记忆功能,当8位的脉冲累加器计数超过$FF后记忆保持,而不回滚到0,这时,计数值$FF意味着计数已经达到或超过255,如不需要,该功能可以关闭。

这可以用来监视某个通道的计数值是否已经达到预定的目标值。

值得注意的是,PACl、PAC0级联后,输入引脚为PT0,而PAC3、PAC2级联后,输入引脚并不是PT2,而是PT7,这样可以与那些无ECT的MCU保持一致性。

手把手教你写S12XS128程序(19)--Timer寄存器说明1

1、定时器/计数器系统控制寄存器1(TSCR1)

寄存器偏移量:

$0006

Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0

TENTSWAITSFRZTFFCA0000

可在任何时候读或写。

TSCR1寄存器是定时器模块的总开关,它决定模块是否启动以及在中断等待、BDM方式下的行为,还包括标志的管理方式。

其各位的意义如下:

TEN:

定时器使能位,此外它还控制定时器的时钟信号源。

要使用定时器模块的IC/OC功能,必须将TEN置位。

如果因为某种原因定时器没有使能,脉冲累加器也将得不到ECLK/64时钟,因为ECLK/64是由定时器的分频器产生的,这种情况下,脉冲累加器将不能进行引脚电平持续时间的累加。

0:

定时器/计数器被禁止,有利于降低功耗。

1:

定时器/计数器使能,正常工作。

TSWAI:

等待模式下计时器关闭控制位。

【注意】定时器中断不能用于使MCU退出等待模式。

0:

在中断等待模式下允许MCU继续运行。

1:

当MCU进入中断等待模式时,禁止计时器。

TSFRZ:

在冻结模式下计时器和计数器停止位。

0:

在冻结模式下允许计时器和计数器继续运行。

1:

在冻结模式下禁止计时器和计数器,用于仿真调试。

【注意】TSFRZ不能停止脉冲累加。

TFFCA:

定时器标志快速清除选择位。

0:

定时器标志普通清除方式。

1:

对于TFLGl($0E)中的各位,读输入捕捉寄存器或者写输出比较寄存器会自动清除相应的标志位CnF。

对于TFLG2($0F)中的各位,任何对TCNT寄存器($04、$05)的访问均会清除TOF标志;任何对PACN3和PACN2寄存器($22,$23)的访问都会清除PAFLG寄存器($21)中的PAOVF和PAIF位。

任何对PACN1和PACN0寄存器($24,$25)的访问都会清除PBFLG寄存器($21)中的PBOVF位。

【说明】这种方式的好处是削减了另外清除标志位的软件开销。

此外,必须特别注意避免对标志位的意外清除。

2、计时器系统控制寄存器2(TSCR2)

寄存器偏移量:

$000D

Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0

TOI000TCREPR2PR1PR0

可在任何时候读或写。

TOI:

定时器/计时器溢出中断使能。

0:

中断被禁止。

1:

当TOF标志被置位时发出硬件中断请求。

【注意】TOF标志位在TFLG中

TCRE:

定时器/计数器复位使能。

该位在通道7成功输出比较之后允许时钟计数器复位。

该操作模式类似于递增型计数器。

0:

计数器复位禁止,计数器自由计数。

1:

通道7成功输出比较后计数器将被复位。

【说明】如果TC7=$0000并且TCRE=1,TCNT将继续保持$0000。

如果TC7=$FFFF并且TCRE=1,当TCNT从$FFFF到$0000之间被复位后TOF将永远不被置位。

PR2,PR1,PR0:

计数器预分频选择。

这三位所决定的分频因子如下表所示。

分频因子选择

PR2PR1PR0PrescaleFactor

0001

0012

0104

0118

10016

10132

11064

111128

【说明】新设定的分频因子不会立即起作用,直到下一个触发沿到来那里所有预分频计数器值均为零。

手把手教你写S12XS128程序(20)--Timer寄存器说明2

3、控制寄存器(TCTLl-TCTL4)

TCTLl-TCTL4分为两组,分别对IC和OC电路进行设定,每组16个二进制位,每两个二进制位管理一个通道。

其中TCTLl、TCTL2设定各个OC通道匹配时的动作,包括切断OC与输出引脚的联系,而TCTL3、TCTL4设定IC响应引脚的何种动作,包括禁止IC的响应。

TCTL1寄存器偏移量:

$0008

Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0

OM7OL7OM6OL6OM5OL5OM4OL4

TCTL2寄存器偏移量:

$0009

Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0

OM3OL3OM2OL2OM1OL1OM0OL0

可在任何时候读或写。

OMn、OLn分别设定输出方式和输出电平,这8对控制位(OM7、OL7---OMO、OL0)编码后用于指定通道比较成功后的输出动作。

如果每对当中至少有一个为1,对应引脚就固定为相应通道的输出,而与DDRT中的对应位无关。

当二者同时为0时,OC与输出引脚断开。

输出比较动作设置

OMnOLn动作

00定时器与引脚断开

01OCn输出翻转

10OCn输出清零

11OCn输出置1

TCTL3寄存器偏移量:

$000A

Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0

EDG7BEDG7AEDG6BEDG6AEDG5BEDG5AEDG4BEDG4A

TCTL4寄存器偏移量:

$000B

Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0

EDG3BEDG3AEDG2BEDG2AEDG1BEDG1AEDG0BEDG0A

可在任何时候读或写。

各个控制位的作用如下:

EDGnB、EDGnA输入捕捉边沿控制位,这8对控制位(EDG7B、EDG7A—EDG0B、EDG0A)对输入捕捉的边沿检测电路进行设置。

当二者同时为0时,IC与输入引脚断开。

输入捕捉边沿检测电路设置

EDGnBEDGnA边沿检测电路设置

00禁止捕捉

01捕捉上升沿

10捕捉下降沿

11上升沿下降沿均捕捉

【注意】为了使OMn、OLn指定的引脚动作有效,OC7M中的对应位必须清0。

若要使用16位脉冲累加器A和B,并使它们分别独立于IC/OC7和IC/OC0,必须设置对应的IOSn:

1、OMn=0、OLn=0,同时寄存器OC7M中的OC7M7、OC7M0位必须清0。

手把手教你写S12XS128程序(21)--Timer寄存器说明3

4、主定时器中断标志寄存器(TFLG1、TFLG2)

TFLG1寄存器偏移量:

$000E

Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0

C7FC6FC5FC4FC3FC2FC1FC0F

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

当前位置:首页 > 高中教育 > 语文

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

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