XS128学习资料整理.docx
- 文档编号:3878290
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:29
- 大小:34.96KB
XS128学习资料整理.docx
《XS128学习资料整理.docx》由会员分享,可在线阅读,更多相关《XS128学习资料整理.docx(29页珍藏版)》请在冰豆网上搜索。
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
#include
#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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- XS128 学习 资料 整理
![提示](https://static.bdocx.com/images/bang_tan.gif)