1、基于基于HCS12的嵌入式系统设计的嵌入式系统设计合肥工业大学合肥工业大学吴吴 晔,张晔,张 阳,滕阳,滕 勤勤 Email:, TEL:13505612773,13966717615第第8章章 S12模模/数转换模块及其应用实例数转换模块及其应用实例 ATD模块概述模块概述 ATD模块结构组成和特点模块结构组成和特点 ATD模块寄存器及设置模块寄存器及设置 ATD模块基础应用实例模块基础应用实例 智能车系统中智能车系统中ATD模块的应用模块的应用8.1 ATD模块概述模块概述 在计算机过程控制和数据采集等系统中,经常要对一些过程参数进行测量和控制,这些参数往往是连续变化的物理量,如温度、压力
2、、流量和速度等。这里所指的连续变化即数值是随时间连续可变的,通常称这些物理量为模拟量,然而计算机本身所能识别和处理的都是数字量。这些模拟量在进入计算机之前必须转换成二进制数码表示的数字信号。能够把模拟量变成数字量的器件称为模数(A/D)转换器。MC9S12DG128单片机内置的ATD(也记做A/D)模块是8通道、10位精度、多路输入复用、逐次逼近型的模数转换器。本章着重介绍ATD模块的特性、寄存器功能及设置,并通过一些基础应用实例和ATD模块在自主寻迹智能车上的应用,让读者掌握ATD模块的应用及编程方法。8.2 ATD模块结构组成和特点模块结构组成和特点 MC9S12DG128单片机内置的AT
3、D模块如图8.1所示。8.2 ATD模块结构组成和特点模块结构组成和特点由图8.1可知,ATD模块由一个总线时钟预分频器、逐次逼近寄存器、D/A转换器、采样保持器、比较器和8通道多路开关等部分组成。ATD模块共有12个外部引脚,其中有4个电源相关引脚和8路模拟量输入引脚。VRH、VRL两个引脚为A/D转换提供参考电源的参考高电压和参考低电压。VDDA和VSSA两个引脚为ATD模块提供电源正和电源地。AN7/PAD7AN0/PAD0是模拟量输入通道70,并且也可以被配置为数字输入口。另外,AN7/PAD7还可以被配置为A/D转换的外部触发引脚。8.2 ATD模块结构组成和特点模块结构组成和特点A
4、TD模块具有以下基本特征:8位/10位可选转换精度;10位精度的单通道转换时间为7 ms;可编程的采样时间;左对齐/右对齐,有符号/无符号转换结果;外部触发控制;转换完成中断请求;模拟/数字输入引脚复用;转换序列长度为18;连续转换模式;多通道扫描。8.3 ATD模块寄存器及设置模块寄存器及设置 MC9S12DG128的ATD模块共有20个寄存器,详见表8.1,其中ATD控制寄存器0(ATDCTL0)、ATD控制寄存器1(ATDCTL1)和ATD测试寄存器0(ATDTEST0)在普通模式下未定义,所以后文不对其进行说明。对于112引脚的MC9S12DG128,内部有两个ATD模块,分别是ATD
5、0和ATD1,表8.1中分别列出了ATD0和ATD1两个模块中各寄存器地址。8.3 ATD模块寄存器及设置模块寄存器及设置 8.3 ATD模块寄存器及设置模块寄存器及设置8.3.1 ATD控制寄存器控制寄存器2 ATD控制寄存器2(ATD Control Register 2,ATDCTL2)用来控制ATD模块电源、中断和外部触发。对这个寄存器写入数据会中止当前的A/D转换序列,但不会启动新的A/D转换序列,如图8.2所示。8.3 ATD模块寄存器及设置模块寄存器及设置8.3.1 ATD控制寄存器控制寄存器2ADPU:此位控制ATD电源开关。提供ATD的开关控制允许降低单片机功耗。当重新打开模
6、块电源,ATD模块需要一定的恢复时间才能正常工作。1表示打开模块电源;0表示关闭模块电源。AFFC:ATD模块标志快速清除位。1表示对结果寄存器的访问将自动清除相应CCF标志位;0表示在访问结果寄存器之前读取状态寄存器1(ATDSTAT1),可以正常清除相应CCF标志位。AWAI:等待模式下ATD电源开关控制位。当单片机处于等待模式时,此位可以控制ATD电源的开关,以降低单片机功耗。1表示单片机处于等待模式,A/D转换停止并关闭ATD电源,以降低单片机功耗;0表示单片机处于等待模式,A/D转换继续进行。8.3 ATD模块寄存器及设置模块寄存器及设置8.3.1 ATD控制寄存器控制寄存器2ETR
7、IGLE:外部触发电平/边沿控制位,此位和ETRIGP配合使用,两位对外部触发的设置详见表8-2。ETRIGP:外部触发极性控制位,此位和ETRIGLE配合使用,两位对外部触发的设置详见表8.2。8.3 ATD模块寄存器及设置模块寄存器及设置8.3.1 ATD控制寄存器控制寄存器2ETRIGE:外部触发模式使能位。1表示允许ATD通道7引脚的外部触发,允许在外部触发信号到来同时进行采样和A/D转换;0表示禁止外部触发。ASCIE:ATD转换序列完成中断使能位。1表示当标志位ASCIF=1时,允许ATD序列转换完成后引发中断;0表示禁止中断。ASCIF:ATD转换序列完成中断标志。如果ASCIE
8、=1,ASCIF标志等同于SCF标志(详见ATDSTAT0寄存器介绍)。此位写入无效。1表示ATD转换序列完成中断挂起;0表示没有ATD中断发生。8.3 ATD模块寄存器及设置模块寄存器及设置8.3.2 ATD控制寄存器控制寄存器3 ATD控制寄存器3(ATD Control Register 3,ATDCTL3)用来设置A/D转换序列长度、结果寄存器的先进先出模式和冻结模式下的状态。对这个寄存器写入数据会中止当前的A/D转换序列,但不会启动新的A/D转换序列,如图8.3所示。8.3 ATD模块寄存器及设置模块寄存器及设置8.3.2 ATD控制寄存器控制寄存器3 S8C、S4C、S2C、S1C
9、:A/D转换序列长度定义位,这4位定义了一个A/D转换序列的长度。A/D转换序列长度定义详见表8.3。单片机复位后,S4C默认为1,所以默认的A/D转换序列的长度为4。8.3 ATD模块寄存器及设置模块寄存器及设置8.3.2 ATD控制寄存器控制寄存器3FIFO:结果寄存器先进先出模式选择位。1表示先进先出模式。转换结果依次放在连续的结果寄存器中,当使用完最后一个结果寄存器后,会重新回到第一个结果寄存器存放转换结果。可以根据转换完成标志位的值判断哪个寄存器中的结果数据有效。0表示非先进先出模式。A/D转换结果在寄存器中的存放位置和转换序列中的顺序相关联。第一次转换的结果放在第一个结果寄存器中;
10、第二次转换的结果放在第二个结果寄存器中,依次类推。FRZ1、FRZ0:冻结模式的背景调试使能控制位。当调试程序时,如果遇到断点,有时希望此时ATD模块停止。这两位共同决定了在冻结模式下遇到断点时ATD模块的状态,如表8.4所示。8.3 ATD模块寄存器及设置模块寄存器及设置8.3.3 ATD控制寄存器控制寄存器4 ATD控制寄存器4(ATD Control Register 4,ATDCTL4)用来选择转换的时钟频率、第二个阶段的采样时间长度和A/D转换的精度(8位或者10位)。对这个寄存器写入数据会中止当前的A/D转换序列,但不会启动新的A/D转换序列,如图8.4所示。8.3 ATD模块寄存
11、器及设置模块寄存器及设置8.3.3 ATD控制寄存器控制寄存器4SRES8:A/D转换精度选择位。此选择A/D 转换结果是8位或者10位。ATD模块可以具有10位的精度;但是,如果低精度能够满足需要,可以选择8位精度提高转换速度。1表示8位精度;0表示10位精度。SMP1、SMP0:采样时间选择位。这两位用来选择第二个阶段的采样时间,以A/D 转换时钟周期为单位。A/D 转换时钟周期通过时钟预分频位(PRS40)设置。A/D采样时间包括两个阶段:第一阶段是2个A/D 转换时钟周期,采样后通过放大器存储到存储节点;第二阶段为了直接把外部模拟信号连接到存储节点上,实现最终高精度的转换。表8.5列出
12、了第二阶段的采样时间。8.3 ATD模块寄存器及设置模块寄存器及设置8.3.3 ATD控制寄存器控制寄存器4PRS4、PRS3、PRS2、PRS1、PRS0:ATD时钟预分频因子选择位。这5位定义了ATD时钟的预分频因子,ATD转换时钟频率计算公式为注意:最大ATD转换时钟频率为总线周期的1/2。默认(复位后)预分频因子的值为5,也就是说,默认ATD 转换时钟频率为总线时钟的1/12。表8.6中列出了部分ATD时钟预分频因子设置值,详细内容可参阅ATD模块数据手册(ATD_10B8C Block User Guide V02.12.pdf)。8.3 ATD模块寄存器及设置模块寄存器及设置8.3
13、.4 ATD控制寄存器控制寄存器5 ATD控制寄存器5(ATD Control Register 5,ATDCTL5)用来A/D选择转换序列类型和采样的模拟量输入通道。对这个寄存器写入数据会中止当前的A/D转换序列,并启动一个新的A/D转换序列,如图8.5所示。8.3 ATD模块寄存器及设置模块寄存器及设置8.3.4 ATD控制寄存器控制寄存器5DJM:结果寄存器数据对齐方式选择位。1表示右对齐;0表示左对齐。DSGN:结果寄存器数据有无符号选择位。注意,有符号数据只能为左对齐方式。1表示有符号数;0表示无符号数。SRES8、DJM和DSGN三位共同决定了结果寄存器中的数据格式,一共6种情况,
14、如表8.7所示。8.3 ATD模块寄存器及设置模块寄存器及设置8.3.4 ATD控制寄存器控制寄存器5SCAN:连续转换序列模式选择位。此位决定A/D转换序列是连续执行还是只执行一次。1表示连续转换序列模式(扫描模式);0表示单词转换序列模式。MULT:多通道采样模式选择位。当MULT为0时,ATD 的序列控制器只从指定的模拟输入通道采样作为一个完整的转换序列,模拟通道由通道选择代码(ATDCTL5 寄存器中的CC、CB和CA位)选择。当MULT为1,ATD序列控制器从多个通道采样数据,采样的通道数目由转换序列长度定义位数值决定(ATDCTL3 寄存器中的S8C、S4C、S2C和S1C),其中
15、第一个采样通道由通道选择代码(ATDCTL5 寄存器中的CC、CB和CA位)决定,之后队列中的采样通道由递增的通道选择代码CC、CB和CA决定。1表示多通道采样;0表示单通道采样。8.3 ATD模块寄存器及设置模块寄存器及设置8.3.4 ATD控制寄存器控制寄存器5CC、CB、CA:模拟量输入通道选择代码位。这3位用来预设A/D转换的模拟量输入通道,如果在单通道采样模式(MULT=0)下,这3位指定了转换的目标通道;在多通道采样模式(MULT=1)下,这3位指定了转换序列中的第一个通道,之后的通道由选择代码递增决定,当选择代码达到最大值时,会回到最小值重新进行递增操作。模拟量输入通道选择代码如
16、表8.8所示。8.3 ATD模块寄存器及设置模块寄存器及设置8.3.5 ATD状态寄存器状态寄存器0 ATD状态寄存器0(ATD Status Register 0,ATDSTAT0)包含转换序列完成标志位,外部触发中断溢出标志位、先入先出模式位和A/D转换计数器,如图8.6所示。8.3 ATD模块寄存器及设置模块寄存器及设置8.3.5 ATD状态寄存器状态寄存器0SCF:转换序列完成标志位。当一次转换序列完成后,该标志位置位。如果转换序列连续进行(SCAN=1),在每一次完成后都会置位此标志位。当发生以下情况时,此标志位被清零。对SCF标志位手动置1。写ATDCTL5寄存器(启动一个新的转换序列)。当AFFC=1时,读取结果寄存器。1表示转换序列完成;0表示转换序列未完成。ETORF:外部触发溢出标志位。当处于边沿触发模式时(ETRIGLE=0),如果当序列转换正在进行时又检测到一个有效边沿触发信号时,此标志位置位。当发生以下情况时,此标志位被清零。对ETORF标志位手动置1。写ATDCTL2、ATDCTL3 或者ATDCTL4(转换序列被中止)。写ATDCTL5寄存器(启动一个新
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1