1、模数转换模数转换ATDATD模块模块nA/DA/D转换的基本概念转换的基本概念模数转换定义:模数转换定义:将时间连续、幅值也连续的模拟信将时间连续、幅值也连续的模拟信号转换为时间离散、幅值也离散的号转换为时间离散、幅值也离散的数字信号数字信号模数转换精度模数转换精度模数转换精度是指二进制的位数。模数转换精度是指二进制的位数。9S129S12的的ADAD模块有模块有两种精度可选两种精度可选: :8 8位精度(位精度(02550255)1010位精度(位精度(0102301023)p(2 2)转换速率:完成一次由模拟转换成数字所需的)转换速率:完成一次由模拟转换成数字所需的时间的倒数。时间的倒数。
2、p(3 3)采样时间:两次转换之间的间隔。)采样时间:两次转换之间的间隔。采样速率必采样速率必须小于或等于转换速率。须小于或等于转换速率。 9S129S12的的A/DA/D模块主要特性模块主要特性n8 8位位/10/10位可选择的转换精度位可选择的转换精度5/256=5/256=n速度快速度快每进行一次每进行一次1010位的转换,仅仅需要位的转换,仅仅需要7uS7uSn采样时间可编程采样时间可编程n左对齐左对齐/ /右对齐的数据格式,有符号右对齐的数据格式,有符号/ /无无符号的转换结果;符号的转换结果;n转换完毕可产生中断;转换完毕可产生中断;n 使用使用PAD7PAD7外部触发控制。外部触
3、发控制。大部分的大部分的freescalefreescale的的MCUMCU都带有内置的都带有内置的ADAD转换模块转换模块。n转换完毕中断转换完毕中断n转换队列长度转换队列长度1-81-8(或(或1-161-16)n不间断转换模式不间断转换模式n多通道扫描多通道扫描nADAD口。口。ATDATD子系统输入或通用输入引脚。复位后默子系统输入或通用输入引脚。复位后默认为通用认为通用I/OI/O输入引脚输入引脚并且只能做输入并且只能做输入n对应于两个独立的对应于两个独立的ATDATD模块:模块:ATDATDm m (m=0 (m=0或或1) 1) 。 9S12的A/D模块外部引脚nVDDAVDDA
4、(5959)、)、VSSAVSSA(6262):):A/D A/D 模块提供电源。实验板上,模块提供电源。实验板上,VDDAVDDA接到接到VCCVCC,VSSAVSSA接到接到GNDGND。单独的供电引脚,可以不受其他模块的影响。单独的供电引脚,可以不受其他模块的影响。nVRHVRH(6060)、)、VRLVRL(6161):):A/D A/D 转换模块的参考高电压和参考低电压。转换模块的参考高电压和参考低电压。模拟输入信号的电压值在模拟输入信号的电压值在VRH-VRLVRH-VRL之间才能得到正确的转之间才能得到正确的转换结果换结果VRHVRH应大于应大于VRLVRL,且,且VRHVRH和
5、和VRLVRL应在应在VDDA-VSSAVDDA-VSSA之间。之间。nAN6/PAD6 - AN0/PAD0AN6/PAD6 - AN0/PAD0(51-5751-57):模拟量输入通道模拟量输入通道6-06-0,通用数字输入端口。不可以被用作外部,通用数字输入端口。不可以被用作外部触发引脚。触发引脚。nAN7/ETRIG/PAD7AN7/ETRIG/PAD7(5858):模拟量输入通道模拟量输入通道7 7,通用数字输入端口。它也可以被配置为,通用数字输入端口。它也可以被配置为A/D A/D 转换的外部触发引脚。转换的外部触发引脚。寄存器寄存器n4 4个控制寄存器个控制寄存器ATDCTL2A
6、TDCTL2、3 3、4 4、5 5n2 2个状态寄存器个状态寄存器ATDSTAT0ATDSTAT0、1 1n8 8个结果寄存器个结果寄存器ATDDRxATDDRx控制寄存器控制寄存器2ATDCTL22ATDCTL2电源、中断、外部触发电源、中断、外部触发nADPUADPU:A/DA/D模块的电源管理模块的电源管理1=1=正常模式正常模式0=0=低功耗模式低功耗模式nAFFCAFFC:标志位快速清零。:标志位快速清零。1=1=对转换结果寄存器访问会自动清除标志位对转换结果寄存器访问会自动清除标志位0=0=正常模式,访问结果寄存器前读状态寄存器正常模式,访问结果寄存器前读状态寄存器1 1可以清可
7、以清除转换完成标志除转换完成标志CCFCCF。控制寄存器控制寄存器2ATDCTL22ATDCTL2nAWAIAWAI1=1=等待时进入低功耗模式,等待时进入低功耗模式,0=0=等待时等待时ATDATD保持运行。保持运行。nETRIGLEETRIGLE、ETRIGPETRIGP:外部触发的边沿:外部触发的边沿/ /极性控制。极性控制。nETRIGEETRIGE:上两位的使能位。允许在:上两位的使能位。允许在PAD7PAD7输入外部输入外部触发信号,允许在触发信号,允许在外部触发到来的同时进行采样和外部触发到来的同时进行采样和ADAD转换。转换。1=1=允许,允许,0=0=禁止禁止。注意:当使用外
8、部触发式,注意:当使用外部触发式,ATDATD通道通道7 7将不能作为将不能作为ADAD转换转换通道来使用通道来使用控制寄存器控制寄存器2ATDCTL22ATDCTL2nASCIEASCIE:A/DA/D队列转换完成中断允许。队列转换完成中断允许。1=1=允许,并使标志位允许,并使标志位ASCIF=1ASCIF=10=0=禁止。禁止。nASCIFASCIF:A/D A/D 队列转换完成中断标志。队列转换完成中断标志。如果如果ASCIE=1ASCIE=1,此标志位和,此标志位和SCFSCF拥有相同的含义。拥有相同的含义。此位只能读取到此位只能读取到0 0,写入无效。,写入无效。控制寄存器控制寄存
9、器3ATDCTL33ATDCTL3nS8CS8C、S4CS4C、S2CS2C、S1CS1C:定义转换队列的长:定义转换队列的长度。默认长度为度。默认长度为4 4。控制寄存器控制寄存器3ATDCTL33ATDCTL3nFIFOFIFO:结果寄存器先进先出模式。:结果寄存器先进先出模式。1=FIFO1=FIFO模式,转换结果是连续存放的模式,转换结果是连续存放的0=0=非非FIFOFIFO模式,转换结果放在对应的寄存器中。模式,转换结果放在对应的寄存器中。nFRZ1FRZ1、FRZ0FRZ0:背景调试冻结模式允许。这两:背景调试冻结模式允许。这两个控制位就决定了,当遇到断点时,个控制位就决定了,当
10、遇到断点时,A/D A/D 模模块怎样反应。块怎样反应。控制寄存器控制寄存器3ATDCTL33ATDCTL3nFRZ1FRZ1、FRZ0FRZ0:背景调试冻结模式允许。这:背景调试冻结模式允许。这两个控制位就决定了,当遇到断点时,两个控制位就决定了,当遇到断点时,A/D A/D 模块怎样反应。模块怎样反应。控制寄存器控制寄存器4ATDCTL44ATDCTL4n转换频率的预分频因子、采样时间和转换频率的预分频因子、采样时间和ADAD转换的精度。转换的精度。nSRES8SRES8:转换精度选择。:转换精度选择。1=81=8位精度(位精度(02550255)0=100=10位精度(位精度(01023
11、01023)控制寄存器控制寄存器4ATDCTL44ATDCTL4nSMP1SMP1、SMP0SMP0:采样时间选择。:采样时间选择。n采样时间分为两个阶段采样时间分为两个阶段第一阶段长第一阶段长2 2个个ADAD时钟周期时钟周期第二阶段由第二阶段由SMP1SMP1、SMP0SMP0决定决定控制寄存器控制寄存器4ATDCTL44ATDCTL4nPRS4PRS4、PRS3PRS3、PRS2PRS2、PRS1PRS1、PRS0PRS0:A/D A/D 时钟分频因子的选择。时钟分频因子的选择。nA/DA/D时钟的计算公式如下图。时钟的计算公式如下图。n最高可达总线时钟的一半。最高可达总线时钟的一半。n
12、注意,注意,A/DA/D模块的时钟频率要在模块的时钟频率要在500KHz500KHz和和2MHz2MHz之间之间,所以,所以在选择分频因子时一定要注意。在选择分频因子时一定要注意。控制寄存器控制寄存器5ATDCTL55ATDCTL5nDJMDJM:1616位结果寄存器数据的对齐方式。位结果寄存器数据的对齐方式。1=1=右对齐;右对齐;0=0=左对齐。左对齐。nDSGNDSGN:结果寄存器中数据有无符号。:结果寄存器中数据有无符号。1=1=有符号,有符号,0=0=无符号。无符号。nSRES8SRES8、DJM DJM 和和DSGN DSGN 三位配合起来使用,决定了结果寄存器中三位配合起来使用,
13、决定了结果寄存器中数据的格式,一共有数据的格式,一共有8 8种情况。种情况。控制寄存器控制寄存器5ATDCTL55ATDCTL5nSCANSCAN:连续转换队列的模式。此位定义了:连续转换队列的模式。此位定义了A/D A/D 转换是连续进行还是只进行一次。转换是连续进行还是只进行一次。1=1=连续队列转换连续队列转换0=0=单次队列转换。单次队列转换。控制寄存器控制寄存器5ATDCTL55ATDCTL5nMULTMULT0 0 时:单个通道采样。时:单个通道采样。ATD ATD 的队列控制器只从指定的输入的队列控制器只从指定的输入通道进行采样,可以使用通道进行采样,可以使用ATDCTL5ATD
14、CTL5寄存器中的寄存器中的CCCC、CB CB 和和CA CA 三位来指定需要采样的模拟量输入通道。三位来指定需要采样的模拟量输入通道。nS8CS8C、S4CS4C、S2C S2C 和和S1C S1C 控制位来指定转换次数。控制位来指定转换次数。1 1 时:对多个的通道进行采样。每次采样的通道数量由时:对多个的通道进行采样。每次采样的通道数量由S8CS8C、S4CS4C、S2C S2C 和和S1C S1C 控制位来指定,第一个采样通道由控制位来指定,第一个采样通道由CCCC、CB CB 和和CA CA 控制位来指定,其它采样通道由通道选择码控制位来指定,其它采样通道由通道选择码CCCC、CB
15、 CB 和和CA CA 的增加来决定。的增加来决定。n对对ATDCTL5ATDCTL5进行写操作会终止当前队列的转换,开始一个新进行写操作会终止当前队列的转换,开始一个新的队列转换。的队列转换。状态寄存器状态寄存器0ATDSTAT00ATDSTAT0nSCFSCF:队列完成标志。:队列完成标志。置置1 1条件:条件:n当一个队列转换完毕后置位;当一个队列转换完毕后置位;n如果处在如果处在SCANSCAN模式,则每次转换完毕都置位。模式,则每次转换完毕都置位。清清0 0条件:条件:n对此位写对此位写1 1;n写写ATDCTL5ATDCTL5,开始一个新的对列;,开始一个新的对列;nATDCTL2
16、ATDCTL2的的AFFC=1AFFC=1(标志快速清除)且读结果寄存器。(标志快速清除)且读结果寄存器。状态寄存器状态寄存器0ATDSTAT00ATDSTAT0nETORFETORF:外部触发溢出标志。:外部触发溢出标志。置位条件:置位条件:n处于边沿触发模式时,如果第一个边沿触发的队列转换正处于边沿触发模式时,如果第一个边沿触发的队列转换正在进行,而这时却检测到了第二个有效的边沿。在进行,而这时却检测到了第二个有效的边沿。清零条件:清零条件:n对此位写对此位写1 1;n写控制寄存器写控制寄存器2 2、3 3或或4 4,终止当前队列;,终止当前队列;n写控制寄存器写控制寄存器5 5,开始一个
17、新队列。,开始一个新队列。状态寄存器状态寄存器0ATDSTAT00ATDSTAT0nFIFORFIFOR:FIFO FIFO 溢出标志。溢出标志。1=1=有有FIFOFIFO溢出,溢出,0=0=无无FIFOFIFO溢出。溢出。如果转换完成标志(如果转换完成标志(CCFCCF)在没有被清零时结果寄存器被写)在没有被清零时结果寄存器被写入新值(覆盖),则置位。入新值(覆盖),则置位。清零条件:对此位写清零条件:对此位写1 1;写控制寄存器;写控制寄存器5 5,开始一个新队列。,开始一个新队列。nCC2CC2、CC1CC1、CC0CC0:转换计数器:转换计数器。代表了哪个结果寄存器将要接收当前转换的
18、结果。代表了哪个结果寄存器将要接收当前转换的结果。非非FIFO FIFO 模式(模式(FIFO=0FIFO=0),这),这3 3 位的初始值为位的初始值为0 0,计数完成后,计数完成后又会回到初始值。又会回到初始值。FIFO FIFO 模式(模式(FIFO=1FIFO=1),转换计数器处于循环计数状态。),转换计数器处于循环计数状态。状态寄存器状态寄存器1ATDSTAT11ATDSTAT1nCCFxCCFx:1=1=完成队列中的第完成队列中的第x x 个转换;在完成队列转换中的个转换;在完成队列转换中的某个某个ADAD转换时,相对应的转换时,相对应的CCFxCCFx位就会被置位,结位就会被置位
19、,结果存储在果存储在ATDDRx ATDDRx 中。中。 0=0=转换未完成。转换未完成。清零条件:清零条件:n写控制寄存器写控制寄存器5 5,开始一个新队列;,开始一个新队列;nAFFC=1AFFC=1,对结果寄存器访问;,对结果寄存器访问;nAFFC=0AFFC=0,首先读状态寄存器,首先读状态寄存器1 1,然后访问结果寄存器。,然后访问结果寄存器。输入允许寄存器输入允许寄存器-ATDDIEN-ATDDIENnIENxIENx:通道:通道x x 输入输入数字数字允许。允许。这这8 8个控制位控制了从输入端口到数据寄存器个控制位控制了从输入端口到数据寄存器的数字输入缓冲区。的数字输入缓冲区。
20、1=1=缓冲区有效;缓冲区有效;0=0=无效。无效。当端口作为模拟量输入端口时,也可以打开数当端口作为模拟量输入端口时,也可以打开数字缓冲区,但是会增加功耗。字缓冲区,但是会增加功耗。数字输入寄存器数字输入寄存器PORTADPORTADnPTADxPTADx:A/D A/D 模块的第模块的第x x 个通道(个通道(ANxANx)的)的数字输入数字输入。当对应通道的数字输入允许时,此位返回了相应引脚当对应通道的数字输入允许时,此位返回了相应引脚上的电平逻辑值。上的电平逻辑值。n注意,引脚上的电平必须和注意,引脚上的电平必须和VRHVRH或或VRLVRL匹配,否则将匹配,否则将返回一个不确定的值。
21、返回一个不确定的值。n如果响应通道的输入缓冲区无效(如果响应通道的输入缓冲区无效(IENx=0IENx=0),读取操),读取操作只返回作只返回1 1。n注意,注意,PORTADPORTAD端口模拟量和数字量是可以复用的。端口模拟量和数字量是可以复用的。当输入模拟量时,会把模拟信号直接送到当输入模拟量时,会把模拟信号直接送到A/D A/D 转换器;转换器;当输入数字量时,会把外部数字信号送到当输入数字量时,会把外部数字信号送到PORTAD PORTAD 寄寄存器以供读取。存器以供读取。A/DA/D转换结果寄存器转换结果寄存器ATDDRxATDDRxnATDDR0ATDDR7ATDDR0ATDDR
22、7:0707通道的结果寄存器。通道的结果寄存器。A/DA/D转换转换的结果需要从这几个寄存器中读取。的结果需要从这几个寄存器中读取。每个每个1616位寄存器可以位寄存器可以分成分成2 2个个8 8位的寄存器来读取,分别为位的寄存器来读取,分别为ATDDRxHATDDRxH和和ATDDRxLATDDRxL。n注意转换结果在这注意转换结果在这8 8个个1616位寄存器中的存储格式。以位寄存器中的存储格式。以1010位左、位左、右对齐为例:右对齐为例:n左对齐左对齐1010位数据位数据n右对齐右对齐1010位数据位数据n另外还要注意有符号数据和无符号数据的区别。另外还要注意有符号数据和无符号数据的区
23、别。 A/DA/D模块的中断系统模块的中断系统nATDATD模块只有一个中断源模块只有一个中断源- -队列转换完毕中断队列转换完毕中断nATDCTL2ATDCTL2寄存器寄存器nASCIEASCIE:A/D A/D 队列转换完成中断允许。队列转换完成中断允许。nSCFSCF:A/D A/D 队列转换完成中断标志。队列转换完成中断标志。n利用利用MCUMCU的的ATDATD模块进行模块进行ADAD转转换实验。换实验。ATDATD通道通道0 0接电位器,接电位器,通过通道通过通道0 0采集模拟量。采集模拟量。实例实例unsigned int result;void main(void) Enabl
24、eInterrupts;ATD0CTL2=0 x80; /使能使能AD,正常清除标志,正常清除标志,不使用外部触发不使用外部触发ATD0CTL3=0 x08; /只转换一个通道只转换一个通道ATD0CTL4=0 x25; /10位精度,位精度,12分频分频ATD0CTL5=0 xb0; /右对齐,无符号,扫描模式,使用通道右对齐,无符号,扫描模式,使用通道 0for(;) while(!ATD0STAT0_SCF); /等待当前队列转换完成等待当前队列转换完成 result=ATD0DR0;/ 读结果寄存器中的值以便使用读结果寄存器中的值以便使用 ATD0STAT0_SCF=1;/清除队列完成
25、标志清除队列完成标志 /*以下是其他代码以下是其他代码*/练习n通道15,即ATD1的07通道。练习1:采用查询方式,只转换一个通道,队列长度为1,非FIFO模式,10位精度,12分频,右对齐、无符号、扫描模式不断转换。练习2:采用中断方式,只转换一个通道,队列长度为1,非FIFO模式,8位精度,8分频,右对齐、无符号、扫描模式不断转换。练习3:采用中断方式,只转换一个通道,队列长度为1 ,非FIFO模式, 8位精度,10分频,右对齐,无符号,单次转换队列模式,但是要不断进行AD转换。练习4:采用中断方式,只转换一个通道,队列长度为8,非FIFO模式,8位精度,12分频,右对齐、无符号、扫描模式。将8结果“掐头去尾”求平均。练习5:将练习4的值用数码管显示(十进制)。精品课件精品课件!精品课件精品课件!谢谢!谢谢!