MC9S12XS128 菜鸟学习如何对AD功能模块编程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

MC9S12单片机AD模块模数转换ATD模块A/D转换的基本概念模数转换定义:将时间连续、幅值也连续的模拟信号转换为时间离散、幅值也离散的数字信号模数转换精度模数转换精度是指二进制的位数。9S12的AD模块有两种精度可选:8位精度(0—255)10位精度(0—1023)(2)转换速率:完成一次由模拟转换成数字所需的时间的倒数。(3)采样时间:两次转换之间的间隔。采样速率必须小于或等于转换速率。9S12的A/D模块主要特性8位/10位可选择的转换精度5/256=速度快每进行一次10位的转换,仅仅需要7uS采样时间可编程左对齐/右对齐的数据格式,有符号/无符号的转换结果;转换完毕可产生中断;使用PAD7外部触发控制。大部分的freescale的MCU都带有内置的AD转换模块。转换完毕中断转换队列长度1-8(或1-16)不间断转换模式多通道扫描AD口。ATD子系统输入或通用输入引脚。复位后默认为通用I/O输入引脚并且只能做输入对应于两个独立的ATD模块:ATDm(m=0或1)。9S12的A/D模块外部引脚VDDA(59)、VSSA(62):A/D模块提供电源。实验板上,VDDA接到VCC,VSSA接到GND。单独的供电引脚,可以不受其他模块的影响。VRH(60)、VRL(61):A/D转换模块的参考高电压和参考低电压。模拟输入信号的电压值在VRH---VRL之间才能得到正确的转换结果VRH应大于VRL,且VRH和VRL应在VDDA-VSSA之间。AN6/PAD6-AN0/PAD0(51-57):模拟量输入通道6-0,通用数字输入端口。不可以被用作外部触发引脚。AN7/ETRIG/PAD7(58):模拟量输入通道7,通用数字输入端口。它也可以被配置为A/D转换的外部触发引脚。寄存器4个控制寄存器ATDCTL2、3、4、52个状态寄存器ATDSTAT0、18个结果寄存器ATDDRx控制寄存器2—ATDCTL2电源、中断、外部触发ADPU:A/D模块的电源管理1=正常模式0=低功耗模式AFFC:标志位快速清零。1=对转换结果寄存器访问会自动清除标志位0=正常模式,访问结果寄存器前读状态寄存器1可以清除转换完成标志CCF。控制寄存器2—ATDCTL2AWAI1=等待时进入低功耗模式,0=等待时ATD保持运行。ETRIGLE、ETRIGP:外部触发的边沿/极性控制。ETRIGE:上两位的使能位。允许在PAD7输入外部触发信号,允许在外部触发到来的同时进行采样和AD转换。1=允许,0=禁止。注意:当使用外部触发式,ATD通道7将不能作为AD转换通道来使用控制寄存器2—ATDCTL2ASCIE:A/D队列转换完成中断允许。1=允许,并使标志位ASCIF=10=禁止。ASCIF:A/D队列转换完成中断标志。如果ASCIE=1,此标志位和SCF拥有相同的含义。此位只能读取到0,写入无效。控制寄存器3—ATDCTL3S8C、S4C、S2C、S1C:定义转换队列的长度。默认长度为4。控制寄存器3—ATDCTL3FIFO:结果寄存器先进先出模式。1=FIFO模式,转换结果是连续存放的0=非FIFO模式,转换结果放在对应的寄存器中。FRZ1、FRZ0:背景调试冻结模式允许。这两个控制位就决定了,当遇到断点时,A/D模块怎样反应。控制寄存器3—ATDCTL3FRZ1、FRZ0:背景调试冻结模式允许。这两个控制位就决定了,当遇到断点时,A/D模块怎样反应。控制寄存器4—ATDCTL4转换频率的预分频因子、采样时间和AD转换的精度。SRES8:转换精度选择。1=8位精度(0~255)0=10位精度(0~1023)控制寄存器4—ATDCTL4SMP1、SMP0:采样时间选择。采样时间分为两个阶段第一阶段长2个AD时钟周期第二阶段由SMP1、SMP0决定控制寄存器4—ATDCTL4PRS4、PRS3、PRS2、PRS1、PRS0:A/D时钟分频因子的选择。A/D时钟的计算公式如下图。最高可达总线时钟的一半。注意,A/D模块的时钟频率要在500KHz和2MHz之间,所以在选择分频因子时一定要注意。控制寄存器5—ATDCTL5DJM:16位结果寄存器数据的对齐方式。1=右对齐;0=左对齐。DSGN:结果寄存器中数据有无符号。1=有符号,0=无符号。SRES8、DJM和DSGN三位配合起来使用,决定了结果寄存器中数据的格式,一共有8种情况。控制寄存器5—ATDCTL5SCAN:连续转换队列的模式。此位定义了A/D转换是连续进行还是只进行一次。1=连续队列转换0=单次队列转换。控制寄存器5—ATDCTL5MULT0时:单个通道采样。ATD的队列控制器只从指定的输入通道进行采样,可以使用ATDCTL5寄存器中的CC、CB和CA三位来指定需要采样的模拟量输入通道。S8C、S4C、S2C和S1C控制位来指定转换次数。1时:对多个的通道进行采样。每次采样的通道数量由S8C、S4C、S2C和S1C控制位来指定,第一个采样通道由CC、CB和CA控制位来指定,其它采样通道由通道选择码CC、CB和CA的增加来决定。对ATDCTL5进行写操作会终止当前队列的转换,开始一个新的队列转换。状态寄存器0—ATDSTAT0SCF:队列完成标志。置1条件:当一个队列转换完毕后置位;如果处在SCAN模式,则每次转换完毕都置位。清0条件:对此位写1;写ATDCTL5,开始一个新的对列;ATDCTL2的AFFC=1(标志快速清除)且读结果寄存器。状态寄存器0—ATDSTAT0ETORF:外部触发溢出标志。置位条件:处于边沿触发模式时,如果第一个边沿触发的队列转换正在进行,而这时却检测到了第二个有效的边沿。清零条件:对此位写1;写控制寄存器2、3或4,终止当前队列;写控制寄存器5,开始一个新队列。状态寄存器0—ATDSTAT0FIFOR:FIFO溢出标志。1=有FIFO溢出,0=无FIFO溢出。如果转换完成标志(CCF)在没有被清零时结果寄存器被写入新值(覆盖),则置位。清零条件:对此位写1;写控制寄存器5,开始一个新队列。CC2、CC1、CC0:转换计数器。代表了哪个结果寄存器将要接收当前转换的结果。非FIFO模式(FIFO=0),这3位的初始值为0,计数完成后又会回到初始值。FIFO模式(FIFO=1),转换计数器处于循环计数状态。状态寄存器1—ATDSTAT1CCFx:1=完成队列中的第x个转换;在完成队列转换中的某个AD转换时,相对应的CCFx位就会被置位,结果存储在ATDDRx中。0=转换未完成。清零条件:写控制寄存器5,开始一个新队列;AFFC=1,对结果寄存器访问;AFFC=0,首先读状态寄存器1,然后访问结果寄存器。输入允许寄存器--ATDDIENIENx:通道x输入数字允许。这8个控制位控制了从输入端口到数据寄存器的数字输入缓冲区。1=缓冲区有效;0=无效。当端口作为模拟量输入端口时,也可以打开数字缓冲区,但是会增加功耗。数字输入寄存器PORTADPTADx:A/D模块的第x个通道(ANx)的数字输入。当对应通道的数字输入允许时,此位返回了相应引脚上的电平逻辑值。注意,引脚上的电平必须和VRH或VRL匹配,否则将返回一个不确定的值。如果响应通道的输入缓冲区无效(IENx=0),读取操作只返回1。注意,PORTAD端口模拟量和数字量是可以复用的。当输入模拟量时,会把模拟信号直接送到A/D转换器;当输入数字量时,会把外部数字信号送到PORTAD寄存器以供读取。A/D转换结果寄存器—ATDDRxATDDR0—ATDDR7:0—7通道的结果寄存器。A/D转换的结果需要从这几个寄存器中读取。每个16位寄存器可以分成2个8位的寄存器来读取,分别为ATDDRxH和ATDDRxL。注意转换结果在这8个16位寄存器中的存储格式。以10位左、右对齐为例:左对齐10位数据右对齐10位数据另外还要注意有符号数据和无符号数据的区别。√√√√√√√√√√××××××××××××√√√√√√√√√√A/D模块的中断系统ATD模块只有一个中断源--队列转换完毕中断ATDCTL2寄存器ASCIE:A/D队列转换完成中断允许。SCF:A/D队列转换完成中断标志。利用MCU的ATD模块进行AD转换实验。ATD通道0接电位器,通过通道0采集模拟量。实例unsignedintresult;voidmain(void){EnableInterrupts;ATD0CTL2=0x80;//使能AD,正常清除标志,不使用外部触发ATD0CTL3=0x08;//只转换一个通道ATD0CTL4=0x25;//10位精度,12分频ATD0CTL5=0xb0;//右对齐,无符号,扫描模式,使用通道0for(;;){while(!ATD0STAT0_SCF);//等待当前队列转换完成result=ATD0DR0;//读结果寄存器中的值以便使用ATD0STAT0_SCF=1;//清除队列完成标志/*以下是其他代码*/}}练习通道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的值用数码管显示(十进制)。谢谢!

1 / 34
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功