MC9S12XS128中文资料.docx

上传人:b****7 文档编号:9430700 上传时间:2023-02-04 格式:DOCX 页数:27 大小:442.18KB
下载 相关 举报
MC9S12XS128中文资料.docx_第1页
第1页 / 共27页
MC9S12XS128中文资料.docx_第2页
第2页 / 共27页
MC9S12XS128中文资料.docx_第3页
第3页 / 共27页
MC9S12XS128中文资料.docx_第4页
第4页 / 共27页
MC9S12XS128中文资料.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

MC9S12XS128中文资料.docx

《MC9S12XS128中文资料.docx》由会员分享,可在线阅读,更多相关《MC9S12XS128中文资料.docx(27页珍藏版)》请在冰豆网上搜索。

MC9S12XS128中文资料.docx

MC9S12XS128中文资料

第一章端口整合模块

端口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,则初始输出为低电平,达到占空比后变为高电平。

PWMCLK:

PWM时钟源选择寄存器。

0、1、4、5通道,PCLKx=0使用ClockA,PCLKx=1使用ClockSA;2、3、6、7通道,PCLKx=0使用ClockB,PCLKx=1使用ClockSB。

ClockA、ClockB由下面的PWMPRCLK设置。

PWMPRCLK:

PWM预分频时钟源选择寄存器。

控制ClockA、ClockB的值。

PWMCAE:

PWM中心对齐使能寄存器。

CAEx=1,该通道为中心对齐;CAEx=0,该通道为左对齐。

PWMCTL:

PWM控制寄存器。

CONxx=1,则相应的两个通道级联使用,否则单独使用。

级联后,整个级联通道由低位通道(通道数大的)的各个寄存器控制,高位通道(通道数小的)不起作用。

级联模式下,向高位通道或低位通道计数器寄存器写值,等同于向16位级联计数器寄存器写值,也即重置为0。

PWMSCLA:

PWM标度A寄存器。

用于控制ClockSA的值,ClockSA=ClockA/(2*PWMSCLA),当PWMSCLA=0x00时,相当于PWMSCLA=256。

PWMSCLB:

PWM标度B寄存器。

用于控制ClockSB的值,ClockSB=ClockA/(2*PWMSCLB),当PWMSCLB=0x00时,相当于PWMSCLB=256。

PWMCNTx:

PWM通道计数寄存器。

每个通道都有一个独立的8位计数器,其计数速率由所选择的时钟源决定。

计数器的值可以随时读取而不影响计数器运行,也不影响PWM波形输出。

在左对齐模式时,计数器从0计数至周期寄存器的值减1;在中心对齐模式,计数器从0计数至周期寄存器的值,然后再倒计数至0。

向计数器写入任何值都将导致计数器复位至0、计数方向重置为向上。

在有效周期末,计数器同样会被清零。

只有当通道使能时计数器才进行计数。

改变计数器的值应该在该通道禁止时进行。

若某个通道正在执行PWM功能,使用PWMEx=0禁止该通道,则该通道的计数器将“冻结”,下次使能该通道时,计数器将接着上次停止的地方继续计数,而不是重新从0开始。

若要开始一个新的PWM脉冲波形,则应在使能前写一次计数器。

PWMPERx:

PWM通道周期寄存器。

每个通道都有一个独立的8位周期寄存器,它的值将间接决定该通道的PWM波形周期。

该寄存器采用双缓冲器设计,即写入的新值不立即生效,直到本次有效周期结束或者计数器寄存器清零或者该通道被禁止。

读该寄存器将返回最近一次写入的值(不一定是当前生效的值)。

复位将重置值为0xFF。

下面给出了如何由周期寄存器的值计算最终PWM输出波形的周期与频率:

左对齐输出:

(CAEx=0)

PWMxPeriod=Clock(A,B,SA,orSB)*PWMPERx

PWMxFrequency=Clock(A,B,SA,orSB)/PWMPERx

中心对齐输出:

(CAEx=1)

PWMxPeriod=Clock(A,B,SA,orSB)*(2*PWMPERx)

PWMxFrequency=Clock(A,B,SA,orSB)/(2*PWMPERx)

PWMDTYx:

PWM占空寄存器。

每个通道都有一个独立的8位占空寄存器,它的值将间接决定该通道的PWM波形占空比。

该寄存器采用双缓冲器设计,即写入的新值不立即生效,直到本次有效周期结束或者计数器寄存器清零或者该通道被禁止。

读该寄存器将返回最近一次写入的值(不一定是当前生效的值)。

复位将重置值为0xFF。

下面给出了如何由占空寄存器的值计算最终PWM输出波形的占空比:

Polarity=0(PPOLx=0)

DutyCycle=[(PWMPERx-PWMDTYx)/PWMPERx]*100%

Polarity=1(PPOLx=1)

DutyCycle=[PWMDTYx/PWMPERx]*100%

PWMSDN:

PWM紧急关断寄存器。

参考程序:

#include/*commondefinesandmacros*/

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

voidPWMinitial()

{

PWMPOL=0X01;//通道0输出波形开始极性为1outputwaveformwhichhighfirstthenlowwhenthedutycounterisreached

PWMCAE=0x00;//左对齐输出模式outputleftalignwaveform

PWMCLK=0X01;//PWM时钟源为SAClockSAistheclocksourceforPWMchannel0

PWMPRCLK=0X03;//时钟A8分频ClockAis8MHz/8=1MHz

PWMSCLA=0X80;//时钟SA为1MHz/128/2ClockSAis1MHz/128/2=4KHz

PWMPER0=255;//设定输出周期=通道时钟周期*256

PWMDTY0=150;//占空比初始为0Dutyis50%,andPWMwaveform'sfrequentis16

PWME=0X01;//通道0使能enablepwmchannel0

}

voidmain(void)

{

PWMinitial();

EnableInterrupts;

for(;;)

{

_FEED_COP();/*feedsthedog*/

}

}

 

第三章定时器模块

基本的定时器模块由1个增强的可编程预分频器驱动的可编程计数器、8个输入捕捉/输出比较通道和1个脉冲累加器组成。

定时器模块一共有8个引脚,其中脉冲累加器与第7号通道的引脚是共用的。

TIOS:

定时器输入捕捉/输出比较选择寄存器。

复位值为0x00。

IOSx=0,相应通道行使输入捕捉,输入捕捉用来获取当外部事件发生时定时器计数器(TCNT)的值,当预期的触发事件输入到该通道上,定时器将把定时器计数器中的当前值传送到该通道的TCx寄存器中,然后置位TFLG1中的CxF标志位,若TIE中的CxI=1,则将触发该通道输入捕捉中断请求;而当IOSx=1,相应通道行使输出比较,输出比较用来在相应引脚上产生可定制周期、频率和极性的脉冲,当定时器计数器中的值步进至与该通道TCx中的预设值相等时,若OCPDx=0,定时器将置位、清零或者触发该通道的引脚,然后置位TFLG1中的CxF标志位,若TIE中的CxI=1,则将触发钙通道输出比较中断请求。

CFORC:

定时器比较强制寄存器。

复位值为0x00。

FOCx=1将强制该位对应通道产生输出比较成功动作,但CxF中断标志位不置位。

任何通道的强制比较成功动作若与普通比较成功动作同时发生,则强制比较成功动作优先发生,且CxF标志位不会置位。

被置位后瞬间将自动清除该位,所以任何时候对该寄存器的读动作都将返回0x00。

OC7M:

输出比较通道7屏蔽寄存器。

复位值为0x00。

SettingtheOC7Mx(xrangesfrom0to6)willsetthecorrespondingporttobeanoutputportwhenthecorrespondingTIOSx(xrangesfrom0to6)bitissettobeanoutputcompareandthecorrespondingOCPDx(xrangesfrom0to6)bitissettozerotoenablethetimerport.Asuccessfulchannel7outputcompareoverridesanychannel6:

0compares.ForeachOC7Mbitthatisset,theoutputcompareactionreflectsthecorrespondingOC7Dbit.

OC7D:

输出比较7数据寄存器。

复位值为0x00。

Achannel7outputcomparecancausebitsintheoutputcompare7dataregistertotransfertothetimerportdataregisterdependingontheoutputcompare7maskregister.

TCNT:

定时器计数寄存器。

复位值为0x0000。

这是一个16位的寄存器,注意要使用字访问,不要单独访问高位或低位。

该计数器向上计数至0xFFFF时将溢出至0x0000并触发定时器计数器溢出中断。

向该寄存器写入值是无意义或无效的。

TSCR1:

定时器系统控制寄存器1。

复位值为0x00。

TEN为定时器使能位,置位将启动主定时器模块,清零将关闭。

清零后不影响脉冲累加计数器模块在事件计数器模式单独工作。

TFFCA为定时器所有标志位快速清零位,置位时将在访问某些寄存器时才清零TFLG1、TFLG2、PAFLG中的相应标志位;清零时将正常执行清零动作。

该位默认是清零的。

PRNT确定定时器预分频器分频比从何选择。

PRNT=0,则预分频比由TSCR2中的PR0、PR1、PR2决定;若PRNT=1,则由PTPSR寄存器决定。

该寄存器在每次复位后只能写入一次。

TTOV:

定时器溢出时触发寄存器。

该寄存器功能仅在相应通道行使输出比较功能时有效。

当相应位置位并且定时器计数器溢出时,将优先于CFORC寄存器(除通道7以外)触发相应引脚。

TCTL1/TCTL2:

定时器控制寄存器1/2。

这两个寄存器中,每两位确定一个输出比较通道在成功发生一次比较后采取何种输出动作,这两位分别是OMx、OLx。

他们的组合有四种,对应四种动作方式。

TCTL1控制4~7通道,TCTL2控制0~3通道。

Tooperatethe16-bitpulseaccumulatorindependentlyofinputcaptureoroutputcompare7and0respectivelytheusermustsetthecorrespondingbitsIOSx=1,OMx=0andOLx=0.OC7M7intheOC7Mregistermustalsobecleared.

TCTL3/TCTL4:

定时器控制寄存器3/4。

这两个寄存器中,每两位确定一个输入捕捉通道的触发边缘类型,这两位分别是EDGxB、EDGxA。

他们的组合有四种,对应四种触发方式。

TCTL3控制4~7通道,TCTL4控制0~3通道。

TIE:

定时器输入捕捉/输出比较中断使能寄存器。

CxI=1将在TFLG1中的CxF=1时允许该通道的中断请求,否则将禁止相应通道的中断请求。

TSCR2:

定时器系统控制寄存器2。

TOI=0,忽略定时器计数器TCNT溢出中断请求;TOI=1,允许定时器计数器TCNT溢出中断请求,当TOF被置位时将触发定时器溢出中断。

TCRE位用来控制当通道7输出比较事件发生时是否重置TCNT,置位时使能。

若TC7=0x0000且TCRE=1,TCNT将一直处在0x0000,若TC7=0xFFFF且TCRE=1,当TCNT从0xFFFF重置为0x0000时TOF将永远不会被置位。

PR2、PR1、PR0三位决定了定时器预分频比。

TFLG1:

定时器中断标志寄存器1。

若通道x发生输入捕捉/输出比较事件中断,则相应的CxF位被置位。

注意:

清除该位的方法是向该位写1置位。

当TSCR中的TFFCA位置位时,读(写)该输入捕捉(输出比较)通道寄存器TCx,将会清除该通道的CxF标志位。

TFLG2:

定时器中断标志寄存器2。

该寄存器只有一个第8位TOF,当定时器计数器(TCNT寄存器)从0xFFFF溢出至0x0000时置位。

注意:

清除该位的方法是向该位写1置位。

当TSCR中的TFFCA位置位时,任何对TCNT寄存器的访问将清除TFLG2寄存器,也即清除TOF标志位。

TCx:

定时器输入捕捉/输出比较寄存器。

这是由两个8位寄存器组成的16位寄存器,分别保存高字节和低字节,使用字访问。

根据TIOS寄存器对相应通道的设置,对于输入捕捉方式,当相应的输入捕捉边缘探测器探测到先前定义的转变时,寄存器将用来锁存此时自由运行计数器的值;对于输出比较方式,该寄存器的值将用来与TCNT的值比较,为输出比较触发一个输出动作。

复位值0x0000。

行使输出比较功能时,任何时间均可写入;行使输入捕捉功能时,任何时间的写入均是无意义且无效的。

PACTL:

脉冲累加器控制寄存器。

PAEN脉冲累加器使能位。

当脉冲累加器工作于事件计数器模式时,该位与TEN独立不受定时器模块是否使能的影响。

PAMOD脉冲累加器工作模式位。

PAMOD=0为事件计数器模式,PAMOD=1为电平时间累加模式。

PEDGE脉冲累加触发边缘控制位:

1.当PAMOD=0(即事件计数器模式),PEDGE=0为通道7下降沿触发PACNT寄存器增1,PEDGE=1为通道7上升沿触发PACNT寄存器增1.

2.当PAMOD=1(即电平时间累加模式),PEDGE=0为当通道7高电平时触发PACNT寄存器计数自增,自增频率为BusClock÷64,紧接着的下降沿将置位PAIF标志位。

PEDGE=1为当通道7低电平时触发PACNT寄存器计数自增,自增频率为BusClock÷64,紧接着的上升沿将置位PAIF标志位。

CLK0、CLK1时钟选择位。

该位将为定时器计数器选择计数时钟。

默认值为CLK0=0、CLK1=0。

PAOVI脉冲累加器溢出中断使能位。

置位时,若PAFLG中的PAVOF溢出标志位置位,将允许脉冲累

加器溢出中断请求;清除时,将禁止脉冲累加器溢出中断请求。

PAI脉冲累加器输入中断使能位。

置位时,若PAFLG中的PAIF输入边缘标志位置位,将允许脉冲累加器输入中断请求;清除时,将禁止脉冲累加器输入中断请求。

PAFLG:

脉冲累加器标志寄存器。

PAOVF脉冲累加器溢出标志位,当脉冲累加器计数器PACNT从0xFFFF溢出至0x0000时置位。

写1清除该标志位。

PAIF脉冲累加器输入边缘标志位,当通道7输入信号的边缘类型满足PAMOD位的预设边缘触发类型时置位。

当TSCR2中的TFFCA位置位时,任何对PACNT寄存器的访问将清除寄存器中所有标志位。

PACNT:

脉冲累加器计数器寄存器。

该寄存器为16位寄存器,需要使用字访问。

在一个触发之后立即读该寄存器的值有可能丢失最近一个计数,因为其首先需要同总线时钟同步。

OCPD:

输出比较引脚断路寄存器。

OCPDx=0,允许该通道上输出比较动作在该通道引脚上产生;OCPDx=1,禁止该通道上输出比较动作在该通道引脚上产生,但输出比较标志位仍然置位。

PTPSR:

精确定时器预分频器选择寄存器。

若TSCR1中的PRNT=1,PTPSR的值将决定主定时器预分频比。

参考实验程序:

闪烁小灯

使用开发板上的PortB口上的8个LED,利用定时器计数器定时中断点亮不同位置的LED。

#include/*commondefinesandmacros*/

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

intcounter;

#pragmaCODE_SEGNON_BANKED

/****定时器计数器溢出中断处理服务函数****/

voidinterrupt16TOI_ISR(void)

{

TFLG2=0x80;

counter++;

switch(counter)

{

case1:

PORTB=0x7e;

break;

case2:

PORTB=0xbd;

break;

case3:

PORTB=0xdb;

break;

case4:

PORTB=0xe7;

break;

case5:

PORTB=0xe7;

break;

case6:

PORTB=0xdb;

break;

case7:

PORTB=0xbd;

break;

case8:

PORTB=0x7e;

break;

}

}

#pragmaCODE_SEGDEFAULT

voidmain(void)

{

TSCR1=0x80;/*enabletimerTCNT*/

TSCR2=0x85;/*TCNTprescalersetup*/

counter=0;

DDRB=0xff;/*PTBasoutput*/

PORTB=0xff;/*LEDsoff*/

EnableInterrupts;

for(;;)

{

if(counter>=8)counter=0;

}

}

 

第四章模数转换器模块

ATDCTL0:

ATD控制寄存器0。

写该寄存器将导致当前转换序列终止。

当做多通道转换时,WRAPx[3:

0]位选择转换哪一个通道后回绕(WRAPAROUND)到AN0通道。

ATDCTL1:

ATD控制寄存器1。

写该寄存器将导致当前转换序列终止。

ETRIGSEL外部触发源选择位。

下表给出4种外部触发源与相应外部触发输入的关系。

功能参见ETRIGCH[3:

0]位。

默认清零。

SRESx[1:

0]AD分辨率选择位,见下表。

默认10-bit分辨率

SMP_DIS内部采样电容放电选择位。

置位时使能,在每次采样之前将先对采样电容放电(会增加2个ATD时钟周期的采样时间)。

默认清零。

ETRIGCH[3:

0]外部触发通道选择位。

当ETRIGSEL=1时,由这四位指定ETRIG3-0中的一个作为触发源;当ETRIGSEL=0时,由这四位指定一个AD通道作为触发源。

默认值为1111,即由通道15作为默认触发源。

ETRIGSEL和ETRIGCH[3:

0]的组合见下表。

ATDCTL2:

ATD控制寄存器2。

写该寄存器将导致当前转换序列终止。

AFFCATD快速标志位清除选择位。

AFFC=0,向CCFx写1将清除相应标志位;AFFC=1,若CMPEx=0,则对某个通道的结果寄存器的一次读取操作将导致相应的CCFx标志位清零,若CMPEx=1,则对某个通道的结果寄存器的一次写入操作将导致相应的CCFx标志位清零。

ETRIGLE外部触发源触发方式选择位。

ETRIGLE=0,边缘触发;ETRIGLE=1电平触发。

ETRIGP外部触发源触发极性选择位。

ETRIGP=0,下降沿或低电平触发;ETRIGP=1上升沿或高电平触发。

ETRIGE外部触发源模式使能选择位。

ETRIGE=0,禁止外部触发模式;ETRIGE=1,使能外部触发模式,若所选择的外部触发源是某个AD通道,该通道的数字输入缓冲器将被使能。

ASCIEATD转换序列完成中断使能标志位。

ASCIE=0,禁止转换完成中断请求;ASCIE=1,当SCF被置位时将发出转换完成中断请求。

ACMPIEATD比较中断使能标志位。

ACMPIE=0,禁止比较中断请求;ACMPIE=1,当某通道在转换序列中按顺序所对应的CMPE=1(对应的自动比较功能打开),如果此CMPE对应的CCF位被置位(即该通道发生一次成功的比较),该通道将发出比较中断请求。

复位值0x00。

ATDCTL3:

ATD控制寄存器3。

 

写该寄存器将导致当前转换序列终止。

DJM结果寄存器数据对齐位。

DJM=0,左对齐结果寄存器数据;DJM=1,右对齐结果寄存器数据。

默认值为0,即左对齐。

S8C,S4C,S2C,S1C转换序列长度位。

这四位一同控制每一次转换序列长度。

复位后默认值0100,即默认转换长度为4。

组合表见下。

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

FIFO=0,每个转换序列开始时,转换结果总是从ATDDR0结果寄存器开始存放(也即被使用的结果寄存器个数总是等于转换序列长度);FIFO=1,在结果寄存器中连续的存放转换结果(首尾相接队列,在尾端将发生回绕)。

默认为0。

ATDCTL4:

ATD控制寄存器4。

写该寄存器将导致当前转换序列终止。

SMP[2:

0]采样时间选择位这3位选择采样时间长度,单位是ATD转换时钟周期。

注意该ATD转换时钟周期是由此寄存器中的PRS[4

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

当前位置:首页 > 高等教育 > 文学

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

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