freescalemc9s12xs128adc.docx

上传人:b****5 文档编号:30757425 上传时间:2023-08-20 格式:DOCX 页数:13 大小:670.96KB
下载 相关 举报
freescalemc9s12xs128adc.docx_第1页
第1页 / 共13页
freescalemc9s12xs128adc.docx_第2页
第2页 / 共13页
freescalemc9s12xs128adc.docx_第3页
第3页 / 共13页
freescalemc9s12xs128adc.docx_第4页
第4页 / 共13页
freescalemc9s12xs128adc.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

freescalemc9s12xs128adc.docx

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

freescalemc9s12xs128adc.docx

freescalemc9s12xs128adc

FREESCALEMC9S12XS128ADC

单位:

安徽师范大学物理与电子信息学院通信工程系

作者:

刘永学

和PWM模块一样,下面来总结一下128的另一个模块,AD模块,这个模块用的较多,自己着这个模块还有一些理解的也不是那么的透彻,也希望通过这次的整理能够把自己的思路重新来整理一下。

言归正传!

从这个模块的寄存器开始来!

12中A/D转换共有两个方块,每个方块各有8个输入通道,使用时应以标头ATD0或ATD1标识。

8/10/12位精度;7us,10-位单次转换时间.;采样缓冲放大器;可编程采样时间;左/右对齐,有符号/无符号结果数据;外部触发控制;转换完成中断;模拟输入8通道复用;模拟/数字输入引脚复用;1到8转换序列长度;连续转换模式;多通道扫描方式。

ATD模块有模拟量前端、模拟量转换、控制部分及结果存储等四部分组成。

其中模拟前端包括多路转换开关、采样缓冲器、放大器等,结果存储部分主要有8个16位的存储器和反映工作状态的若干标志位。

要完成ATD转换的特定功能,必须对相关寄存器有所了解。

在12AD模块中,ATDCTL2,3,4,5为常用的控制寄存器,ATDSTAT0,1为常用的两个状态控制器,ATDDR0-7为八个结果寄存器。

ATD工作时,由CPU发出启动命令,然后经采样、模数转换,最后将结果保存到相应的寄存器。

ATD每次启动要进行若干个扫描循环,每个扫描循环称为一个转换序列,每个转换序列能包含1-8最多8次转换,由控制寄存器ATDCTL3中的S8C/S4C/S2C/S1C等位来决定。

这些转换序列可以针对某个单一通道,也可以针对几个相邻通道,每个通道可以使外部模拟输入,也可以是参考电压或其他保留信号,ATD可支持多种不同的通道信号组合。

每次转换包括哪些通道由ATDCTL5中的CC、CB、CA决定的。

对单一通道连续进行多次转换有利于实现滤波,一次转换多个通道则可以通过一次启动命令快速浏览多个信号,中间无需CPU干涉,节约了CPU时间。

ATD的运行方式分为单次和连续运行两种。

在单次方式下,每个转换序列完成后,寄存器ATDSTAT中的SCF置位,然后ATD模块暂停。

在连续方式下,转换以转换序列为单位连续进行,当第一个转换序列完成后,SCF置位,同时ATD模块开始下一个转换序列。

在上述两种方式下,每个通道的转换结果进入到对应结果寄存器后,寄存器ATDSTAT1种对应的CCF位置1,对存放转换结果的寄存器进行读操作后,CCF位将自动清0。

转换过程的启动是通过写入寄存器5ATDCTL5实现的。

ATD转换所需要的时钟周期数是固定不变的,但是采样时间和时钟频率可以通过ATDCTL4在一定范围内选择,因此转换时间也可以选

首先认识一下该模块的构造

接下来就看一下该模块的寄存器:

ADC模块的寄存器值较多,学习起来较为麻烦。

1、AD控制寄存器0(ATDCTL0)

WRAP3—WRAP0:

回绕通道选择位。

在任何时候都可以进行读写操作不过这些位只有在ATDCTL5的MULT为1的情况下,就是多通道转换模式下才有效。

2、AD控制寄存器1(ATDCTL1)

其中D7位ETRIGESL位外部触发源选择,这个寄存器主要用的是ETRIGCH0、ETRIGCH1、ETRIGCH2、ETRIGCH3、外部触发通道选择SMP_DIS采样放电控制位、SRES1、SRES0这两位为采样精度选择位当这两位分别00是为8位采样精度、01时为10为采样精度、10时为12位的采样精度!

在使用时基本上设置好采样精度就行了。

3、AD控制寄存器2(ATDCTL2)

AFFC:

AD快速清所有标志位

1=快速标志位清零顺序每次读取结果寄存器自动清零

0=正常标志位清零顺序需要手动对状态标志位清零

ICLKSTP:

停止模式中内部时钟位,该位在停止模式中使能AD转换

ETRIGLE、ETRIGP:

外部触发信号触发条件选择位

ETRIGE:

外部触发信号使能位,1时使能外部触发信号,0时禁止外部触发信号

ASCIE:

AD完成中断使能位。

为1时AD转换结果时使能中断、为0时AD转换结果不会引发中断

ACMPIE:

AD比较中断使能位,为1时使能AD比较中断请求,为0时禁用AD中断请求。

3、AD控制寄存器3(ATDCTL3)

这个寄存器相对用得较多,理解起来也不太容易,

DJM:

结果寄存器数据对齐位0左对齐,1右对齐

S8C—S1C:

AD转换序列的长度选择位,这些位控制每一个AD的转换序列长度下面是控制长度列表。

FIFO:

结果寄存器先进先出模式选择位,为0时非先进先出模式,根据装换序列的先后顺序将装转换结果放入结果寄存器。

在这里需要做一个说明,就是这个部分采样值存放的问题,也就是按顺序放到结果寄存器里面,为1时先进先出模式,转换结果依次顺延放到结果寄存器中,当使用完最后一个结果寄存器后重新回到第一个结果寄存器。

FRZ0-FRZ1:

背景调试冻结使能位这两位为00AD转换继续工作,01完成当前的转换后进入冻结模式,10时保留值。

4、AD控制寄存器4(ATDCTL4)

这三个位采样时间选择位

PRS[4:

0]:

AD转换时钟预分频因子计算公式为:

fATDCLK=Fbus/(2×(PRS+1))

注意使用时应使fATDCLK的范围在0.25M到8.3M

5、AD控制寄存器5(ATDCTL5)

MULT为0时:

单个通道采样。

ATD的队列控制器只从指定的输入通道进行采样,可以使用ATDCTL5寄存器中的CC、CB和CA三位来指定需要采样的模拟量输入通道。

S8C、S4C、S2C和S1C控制位来指定转换次数。

1时:

对多个的通道进行采样。

每次采样的通道数量由S8C、S4C、S2C和S1C控制位来指定,第一个采样通道由CC、CB和CA控制位来指定,其它采样通道由通道选择码CC、CB和CA的增加来决定。

6、状态寄存器0(ATDSTAT0)

FIFOR:

FIFO溢出标志。

1=有FIFO溢出,0=无FIFO溢出。

如果转换完成标志(CCF)在没有被清零时结果寄存器被写入新值(覆盖),则置位。

清零条件:

对此位写1;写控制寄存器5,开始一个新队列

CC3、CC2、CC1、CC0:

转换计数器。

代表了哪个结果寄存器将要接收当前转换的结果。

非FIFO模式(FIFO=0),这4位的初始值为0,计数完成后又会回到初始值。

FIFO模式(FIFO=1),转换计数器处于循环计数状态

7、状态寄存器2(ATDSTAT2)

CCFx:

1=完成队列中的第x个转换;在完成队列转换中的某个AD转换时,相对应的CCFx位就会被置位,结果存储在ATDDRx中。

0=转换未完成。

清零条件:

写控制寄存器5,开始一个新队列;

AFFC=1,对结果寄存器访问;

AFFC=0,首先读状态寄存器1,然后访问结果寄存器

8、AD转换结果寄存器(ATDDRn)

单片机120引脚:

ATDDR0—ATDDR15:

0—15通道的结果寄存器。

A/D转换的结果需要从这几个寄存器中读取。

每个16位寄存器可以分成2个8位的寄存器来读取,分别为ATDDRxH和ATDDRxL。

注意转换结果在这16个16位寄存器中的存储格式。

以10位左、右对齐为例:

左对齐10位数据

右对齐10位数据

另外还要注意有符号数据和无符号数据的区别

单片机80引脚:

ATDDR0—ATDDR7:

0—7通道的结果寄存器。

A/D转换的结果需要从这几个寄存器中读取。

每个16位寄存器可以分成2个8位的寄存器来读取,分别为ATDDRxH和ATDDRxL。

注意转换结果在这8个16位寄存器中的存储格式。

以10位左、右对齐为例:

左对齐10位数据

右对齐10位数据

另外还要注意有符号数据和无符号数据的区别。

AD模块用的差不多就是这些寄存器,我列举一下自己在AD模块编写的一点初始化程序,和总结一下AD初始化编程的一些简单的步骤。

voidADC_Init(void)

{

ATD0CTL1=0x40;

ATD0CTL2=0x40;//禁止外部触发,中断禁止

ATD0CTL3=0xB0;//a右对齐无符号,每次转换6个序列,NoFIFO,Freeze模式下继续转

ATD0CTL4=0x0f;

ATD0CTL5=0x30;

ATD0DIEN=0x00;//禁止数字输//禁止数字输入

}

初始化编程的一些步骤:

1.ATD启动;

2.按照要求对转换为数、扫描方式、采样时间、时钟频率及标志检查等方式进行设置;

也即根据自己的需要对AD的控制寄存器进行设置即可,最后就是禁止AD!

!

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

当前位置:首页 > 小学教育 > 语文

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

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