飞思卡尔HC12系类AD转换模块讲解

合集下载

第二章 HC12系列MCU组成及工作原理

第二章  HC12系列MCU组成及工作原理

第二章 HC S12系列MCU组成及工作原理本章介绍MCU的组成,包括CPU的结构、工作原理、寄存器、内部存储器组织,同时介绍MCU内部的时钟产生及其分配逻辑、复位与中断的工作过程及其作用、运行模式与外部存贮器的管理等,尤其是各种特殊模式、多复位源、低速时钟等。

HCS12系列各型号虽然核心部分相同,但集成外设不尽相同,本章及后续章节除特别说明外均指HCS12系列的DP256。

2.1 HC S12系列MCU的结构组成及引脚分配HC S12的D子系列的器件引脚兼容,功能设置稍有不同。

其中型号中数字9表示内部程序存储器为FLASH,否则为ROM。

有80和112个管脚的两种封装形式,主要区别在于各型号的功能优势不同,比如MC9S12DP256B有5个CAN而MC9S12DB128B只有1个CAN 等。

2.1.1 组成框图图2-1为MC9S12系列MCU的结构组成,图中左、右分别为核心与外设部分,左边如果去掉顶部的三种存储器,剩下的就是一个带有调试接口和运行监视功能的标准CPU的增强版,其中的A口、B口作为分时复用的地址/数据总线,E口的部分口线作为控制总线,在系统扩展时使用;如果包括顶部的FLASH/ROM、RAM、EEPROM等存储器,完整的左半部分就是一个没有定时器和串行接口的简化的单片微控制器。

右半部分含有八种外设,其中的ATD、ECT、SPI、BDLC、CAN等接口是许多单片机中所没有的。

此外每一种接口还具有双重功能,即通用I/O功能和特殊接口功能,在单片模式下,甚至A口、B口和E口的一部分也可以用作通用I/O接口。

如果所有接口工作在通用I/O方式下,那么I/O引脚将达到91个,这些双重功能的I/O口本身及其控制逻辑完全集成在MCU内部,其体积、功耗、可靠性、应用简单方便程度都与用户扩充的I/O口有着重要区别。

单线背景调试模式(BDM)和运行监视部分分别用于OCD方式开发支持和保证运行安全,其中BDM方式和时钟监视部分更是它的特色。

飞思卡尔 HCS12(x) memory map解说之

飞思卡尔 HCS12(x) memory map解说之

飞思卡尔HCS12(x) memory map解说之1[原]热16已有905 次阅读2010-01-26 14:41标签: map memory卡尔解说对于用MCU的人来说,不一定要明白HCS12(x) memory map的机制和联系。

因为如果没有系统地学习操作系统和编译原理之类的课程,确实有些难度。

并且,对于DG128 XS128这样的MCU,默认的memory分配方式已经够用了。

从这个意义上讲,搞清楚memory map似乎不必要。

但是,你有没有RAM不够用的情况?有没有想定义变量到FLASH ROM的情况?有没有因为欲提高寻址效率而定义变量到非分页区的情况?有没有写EEPROM但没写成功的情况?飞思的memory非常灵活,通过地址映射来提高效率是芯片制造商的一惯作风(当然,首先这个CPU要有这种寻址和内存映射转换机制),但是,纵观HCS12(x) memory map的东西,真是做到极限了。

用我以前的话讲是,用有限的资源获得无限的好处了。

看看DG128,64K的逻辑空间,映射之后RAM EEPROM FALSH ROM,都可以充分发挥作用,而且扩展FLASH也方便。

而XS128更高级一筹,有专门的MMC管理HCS12(x) memory map。

我大体上了解这两个片子的HCS12(x) memory map,因此就此谈谈理解和看法,如有错误,请大家不吝指出首先,说说6个概念。

1 memory map 地址映射,不要理解成内存映射,内存是RAM。

2为什么要映射?因为CPU的寻址是对物理地址操作,但是单片机的RESET之后只有相对地址。

相对地址,我理解为是一块一块的,不是连断的。

相对地址,顾名思义,是个相对的,没有映射之前,CPU 是找不到他的,也用不了相对地址的数据。

粘一句百度上的解释:为了保证CPU执行指令时可正确访问存储单元,需将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址,这一过程称为地址映射。

飞思卡尔AD模块总结

飞思卡尔AD模块总结

飞思卡尔H12系列AD(模数转换)模块总结————下面对CodeWarrior IDE中生成的有关AD的函数做个总结一、函数用法。

1.void ADC_PE_Init(void){。

}初始化函数,在主函数中PE_low_level_init();语句中执行,不用用户调用。

初始化中EnUser=1。

2.ISR(ADC_PE_Interrupt){。

}AD中断入口函数,AD中断时系统自行调用,用户可忽略。

3.static void HWEnDi(void){ }使能或禁止AD转换。

系统调用4byte ADC_PE_Enable(void){if (EnUser) { /* Is the device enabled by user? */return ERR_OK; /* If yes then set the flag "device enabled" */}EnUser = TRUE; /* Set the flag "device enabled" */HWEnDi(); /* Enable the device */return ERR_OK; /* OK */}有事件发生时,使能AD5.byte ADC_PE_Disable(void){if (!EnUser) { /* Is the device disabled by user? */return ERR_OK; /* If yes then OK */}EnUser = FALSE; /* If yes then set the flag "device disabled" */ HWEnDi(); /* Enable the device */return ERR_OK; /* OK */}没有事件发生时,禁止AD6.byte ADC_PE_Start(void){if (!EnUser) { /* Is the device disabled by user? */return ERR_DISABLED; /* If yes then error */}if (ModeFlg != STOP) { /* Is the device in running mode? */return ERR_BUSY; /* If yes then error */}ModeFlg = CONTINUOUS; /* Set state of device to the continuos mode */HWEnDi(); /* Start measurement */return ERR_OK; /* OK */}调用这个函数可让所有在bean中设置的AD通道,连续转换一次,每次转换的数据存储在文件开头定义的ADC_PE_OutV [ ]数组中。

AD转换基准电压总结(飞思卡尔电磁组)

AD转换基准电压总结(飞思卡尔电磁组)

基准电压总结通常AD/DA芯片都有两个电压输入端,一个是Vcc,一个是Vref,上图所示的芯片是DAC0832,Vcc是芯片的工作电压,Vref是DA转换的基准电压,AD/DA芯片对Vcc 的要求不是很高,但对基准电压Vref的要求就比较高。

S12的VRH引脚就是AD转换的基准电压输入端,在最小系统板上通过0Ω电阻和Vcc连在了一起。

一、什么叫基准电压我们知道,AD/DA转换时需要一个电压参考值,而且要求这个参考值要稳定,这个稳定的电压参考值就叫做基准电压。

比如AD(8位)转换时,假设参考电压时5V,输入量是2V,则转换后得到的数字量就是(2/5)*255=102。

二、智能车制作过程中遇到的问题最开始我们组是利用LM2940稳压芯片输出的5V电压作为S12芯片内部AD转换的电压参考值,但采集回来的电磁信号AD值时常出现跳变,为什么?经过排除其他原因后,我们发现原因就在于基准电压不稳定,夸张地举个例子(8位AD),假设参考电压是5V,采集到的电磁模拟信号是2V,那么得到的数字量是102,但是由于某种原因参考电压突然变为4V,那么得到的数字量就突变为127,转换不准确,使得S12单片机产生误动作,要是时常发生这类突变,后果可想而知,车子根本跑不了!!!三、LM2940与MC1403芯片通过上面举的例子,我想说的是,LM2940输出的5V电压并非稳定,因为LM2940属于功率型稳压芯片,就是说其输出的电压会受流过LM2940的电流的影响,电流短时间发生较大变化时,其输出电压也会相应发生变化(1V以内,典型值是0.5V),由于挂在LM2940上的负载较多,电流值变化较大,也就是说输出电压也会变化,而AD转换需要的却是一个稳定的参考电压,显然LM2940无法满足这个条件,因此AD值跳变是肯定的;那么用哪个芯片作为基准电压更为恰当呢,答案肯定是有很多的,我们后来采用的芯片是MC1403,其输出电压很稳定,输出电压值为2.5V,关键在于即使输入电压变化较大,MC1403的输出误差也在1%以内,显然这可以满足我们AD转换所需基准电压的要求。

AD转换模块课件

AD转换模块课件
电源管理与能效
为了提高能效,需要合理地管理电源,如使用开关电源和动态电压 调节技术。
CHAPTER
04
AD转换模块的接口与编程
硬件接口
模拟信号输入接口
用于连接模拟信号源,如传感器等,将模拟信号传输到AD转换 模块。
数字信号输出接口
将转换后的数字信号输出,通常连接微控制器或其他数字设备。
控制信号接口
逐次逼近型AD转换器
总结词
逐次逼近的方式将输入模拟信号转换为数字输出。
详细描述
逐次逼近型AD转换器采用逐次逼近的方式将输入模拟信号转换为数字输出。它通过不断调整比较器的参考电压 ,逐渐逼近输入模拟信号,最终得到数字输出。逐次逼近型AD转换器具有分辨率高、线性度好、转换速度快等 优点,但功耗较大。
并行比较/串并行型AD转换器
总结词
采用并行比较或串并行方式将输入模拟信号转换为数字输出。
详细描述
并行比较/串并行型AD转换器采用并行比较或串并行方式将输入模拟信号转换为数字输出。它通过多 个比较器同时比较输入模拟信号与多个参考电压,得到数字输出。并行比较/串并行型AD转换器具有 转换速度快、分辨率高等优点,但电路复杂度较高。
压频转换型AD转换器
AD转换模块的应用场景
信号处理
在信号处理系统中,AD转换模块 用于将模拟信号转换为数字信号 ,便于进行进一步的处理和分析

控制系统
在控制系统中,AD转换模块用于 将传感器的模拟信号转换为数字信 号,便于控制器进行数据处理和控 制。
数据采集
在数据采集系统中,AD转换模块用 于将模拟信号转换为数字信号,便 于计算机或其他数据处理设备进行 存储和处理。
AD转换模块PPT课件
CONTENTS

飞思卡尔MC9S12XS128技术手册翻译AD

飞思卡尔MC9S12XS128技术手册翻译AD

飞思卡尔MC9S12XS128技术手册(AD转换部分)英文资料:飞思卡尔MC9S12XS256RMV1官方技术手册1.1 XS12系列单片机的特点XS12系列单片机特点如下:·16位S12CPU—向上支持S12模糊指令集并去除了其中的MEM, WAV, WAVR, REV, REVW 五条指令;—模块映射地址机制(MMC);—背景调试模块(BDM);·CRG时钟和复位发生器—COP看门狗;—实时中断;·标准定时器模块—8个16位输入捕捉或输出比较通道;;—16位计数器,8位精密与分频功能;—1个16位脉冲累加器;·周期中断定时器PIT—4具有独立溢出定时的定时器;—溢出定时可选范围在1到2^24总线时钟;—溢出中断和外部触发器;·多达8个的8位或4个16位PWM通道—每个通道的周期和占空比有程序决定;—输出方式可以选择左对齐或中心对其;—可编程时钟选择逻辑,且可选频率范围很宽;·SPI通信模块—可选择8位或16位数据宽度;—全双工或半双工通信方式;—收发双向缓冲;—主机或从机模式;—可选择最高有效为先输出或者最低有效位先输出;·两个SCI串行通信接口—全双工或半双工模式·输入输出端口—多达91个通用I/O引脚,根据封装方式,有些引脚未被引出;—两个单输入引脚;·封装形式—112引脚薄型四边引线扁平封装(LQFP);—80引脚扁平封装(QFP);—64引脚LQFP封装;·工作条件—全功率模式下单电源供电范围3.15V到5V;—CPU总线频率最大为40MHz—工作温度范围–40 C到125 C第十章模拟—数字转换10.1 介绍ADC12B16C是一个16通道,12位,复用方式输入逐次逼近模拟—数字转换器。

ATD的精度由电器规格决定。

10.1.1 特点·可设置8位、10位、12位精度·在停止模式下,ATD转换使用内部时钟·转换序列结束后自动进入低耗电模式·可编程采样时间·转化结果可选择左对齐或右对齐·外部触发控制·转换序列结束后产生中断·模拟输入的16个通道为复用方式·可以选择VRH、VRL、 (VRL+VRH)/2特殊转换方式·转换序列长度1到16·可选择连续转换方式·多通道扫描·任何AD通道均可配置外部触发功能,并且可选择4种额外的触发输入。

FreeScale HCS12系列单片机教程(dg128)

FreeScale HCS12系列单片机教程(dg128)

HCS12微控制器系列教程---第一讲:PWM 模块介绍该教程以MC9S12DG128单片机为核心进行讲解,全面阐释该16位单片机资源。

本文为第一讲,开始介绍S12 MCU的PWM模块。

PWM 调制波有8 个输出通道,每一个输出通道都可以独立的进行输出。

每一个输出通道都有一个精确的计数器(计算脉冲的个数),一个周期控制寄存器和两个可供选择的时钟源。

每一个PWM 输出通道都能调制出占空比从0—100% 变化的波形。

PWM 的主要特点有:1、它有8 个独立的输出通道,并且通过编程可控制其输出波形的周期。

2、每一个输出通道都有一个精确的计数器。

3、每一个通道的PWM 输出使能都可以由编程来控制。

4、PWM输出波形的翻转控制可以通过编程来实现。

5、周期和脉宽可以被双缓冲。

当通道关闭或PWM计数器为0时,改变周期和脉宽才起作用。

6、8 字节或16 字节的通道协议。

7、有4 个时钟源可供选择(A、SA、B、SB),他们提供了一个宽范围的时钟频率。

8、通过编程可以实现希望的时钟周期。

9、具有遇到紧急情况关闭程序的功能。

10、每一个通道都可以通过编程实现左对齐输出还是居中对齐输出。

HCS12微控制器系列教程---第二讲:PWM 寄存器简介1、PWM启动寄存器PWMEPWME 寄存器每一位如图1所示:复位默认值:0000 0000B图1 PWME 寄存器每一个PWM 的输出通道都有一个使能位PWMEx 。

它相当于一个开关,用来启动和关闭相应通道的PWM 波形输出。

当任意的PWMEx 位置1,则相关的PWM输出通道就立刻可用。

用法:PWME7=1 --- 通道7 可对外输出波形PWME7=0 --- 通道7 不能对外输出波形注意:在通道使能后所输出的第一个波形可能是不规则的。

当输出通道工作在串联模式时(PWMCTL寄存器中的CONxx置1),那么)使能相应的16位PWM 输出通道是由PWMEx的高位控制的,例如:设置PWMCTL_CON01 = 1,通道0、1级联,形成一个16位PWM 通道,由通道 1 的使能位控制PWM 的输出。

飞思卡尔半导体 如何在M68HC08、HCS08和HCS12 微控制器上应用IIC模块 说明书

飞思卡尔半导体 如何在M68HC08、HCS08和HCS12 微控制器上应用IIC模块 说明书

飞思卡尔半导体文件编号:AN3291 应用笔记第1版,03/2007Specifications and information herein are subject to change without notice. ©Freescale Semiconductor,Inc., 2007. All rights reserved.General Business Information如何在M68HC08、HCS08和HCS12微控制器上应用IIC模块作者: Stanislav Arendarik应用工程师捷克共和国,罗斯诺夫1 简介此应用笔记是如何在飞思卡尔的微控制器上应用IIC模块的一个示例。

IIC模块可以分别在主模式或从模式下使用。

在这种情况下,由于IIC 总线主要用于在微控制器(MCU)和IIC外设之间的通信,因此在主模式时与串行EEPROM进行通信。

IIC总线可以在两个微控制器(MCU)之间直接进行通信,然而SPI总线却更适用于这种应用。

此应用笔记总结了通用IIC总线状态和定义,并提供了如何与串行EEPROM进行通信的示例(24C16和24C512)。

您可以轻松地用另外一个IIC器件取代EEPROM,但是必须改变将其标识为从器件的IIC地址字节。

目录1 简介…………… . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . 12 IIC 总线摘要………….. . . . …. . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.1 IIC总线术语.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.2 位传输. ………….. . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 22.3 起始条件和停止条件(START and STOP Conditions)...... . 32.4 总线通信. . ……………………….. . . . . . . . . . . . . . . . . . . . 32.5 控制字节………………………. . . . . . . . . . . . . . . . . . . . .. . . 32.6 地址字节……….... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.7 应答………… . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 42.8 读/写格式………………………………......…..…... . . . . . . .. 53 用于微控制器的IIC软件程序. ………. . . . . . . . . . . . . . . . . . . . . . . 53.1 IIC的初始化. … . . . …….. . . . . . . . . .. .. . . . .. .. .. . . . . . . . 63.2 写入功能. . . . . . . . . . . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . 73.3 读取功能 .. . . . . . . . . . . . . . . . . . . . .. . .. . . . . .. . . . . . . . . 93.4 中断应用举例. . . . . . ……………. . . . . . . . . . . .. . . . . . . . . 133.4.1 MCU作为主机.. . . . . . . . . . . .. .. . . . . . . . . . . . . . . 133.4.2 MCU作为从机. . . . . . .. . . . . . . .. . . . . . .. . . . . . . 164 结论. . . ……... . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . .. . . . . . . .. . . 17IIC总线摘要2 IIC 总线摘要IIC总线是基于主机和从机间线与(开漏)连接的双向、两线式总线。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Freescale HCS12 微控制器TMFreescale Semiconductor Confidential and Proprietary Information. Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.A/D转换模块 转换模块ATD 1 ATD 0 12K SRAM 256K FLASEEPROMSCI 1SCI 1Internal BusSPI 2 SPI 1 or or PWM PWM PWM SPI 0 8 CH CH CHAN 4-7 0-3 BKP INT MMIStar12 CPUCMSIMBDMMEBI PITPIM PLLmsCAN 4 or IICmsCAN 3msCAN 2msCAN 1BDLC or msCAN 04K BYTES EEPROMECT 8 CHANSlide 1TMFreescale Semiconductor Confidential and Proprietary Information. Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.AD转换模块 转换模块特点: 特点: 8/10 位精度 • 7 us, 10-位单次转换时间 位单次转换时间. 位单次转换时间 • 采样缓冲放大器 • 可编程采样时间 • 左/右 对齐 有符号 无符号结果数据 右 对齐, 有符号/无符号结果数据 • 外部触发控制 • 转换完成中断 • 模拟输入 通道复用 模拟输入8通道复用 • 模拟 数字输入引脚复用 模拟/数字输入引脚复用 • 1到8转换序列长度 到 转换序列长度 • 连续转换模式 • 多通道扫描方式Slide 2TMFreescale Semiconductor Confidential and Proprietary Information. Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.A/D 寄存器控制寄存器 状态寄存器转换结果寄存器Slide 3TMFreescale Semiconductor Confidential and Proprietary Information. Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.A/D 控制寄存器2 控制寄存器ADPU - A/D 电源使能/禁止 1 = A/D模块上电 0 = 禁止A/D,以减少功耗 AWAI - A/D 等待模式 1 = 等待模式下,转换 0 = 等待模式下,禁止转换 ASCIE - A/D 顺序完成中断使能 ASCIF - A/D 顺序完成标志位ATDCTRL2Address offset $0002AFFC - A/D 快速转换完成标志位清零 1 = 快速标志位清零顺序 每次读取结果寄存器自动清零 0 = 正常标志位清零顺序 需要手动对状态标志位清零ETRIGLE x x 0 0 1 1Slide 4TMETRIGP x x 0 1 0 1ETRIGE 0 0 1 1 1 1SCAN 0 1 X X X X描述 忽略外部触发,执行一次转换后停止 忽略外部触发,执行连续转换后 下降沿触发,每次触发,执行一次转换 上升沿触发,每次触发,执行一次转换 低电平触发,每次触发,执行连续转换 高电平触发,每次触发,执行连续转换Freescale Semiconductor Confidential and Proprietary Information. Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.A/D 控制寄存器 控制寄存器3ATDCTRL3 Address offset $0003FIFO – 结果寄存器 FIFO 1 = 结果寄存器没有映射到转换序列 0 = 结果寄存器没有映射到转换序列转换序列长度FRZ 00 01 10 11 ReservedResponse Ignore IFREEZE Finish conversion, then freeze Freeze Immediately转换序列长度就是需要转换的通道数 比如: 通道0,1,2作为AD采集通道 则转换序列为3,即S2C=1,S1C=1 在控制寄存器5 ATD0CTL5中: 设CC CB CA = 0 0 0,转换序列从通 道0开始;ATD0DR0, ATD0DR1,ATD0DR2存放转换结果 设CC CB CA = 0 1 0,转换序列从通 道2开始。

仍然是ATD0DR0, ATD0DR1,ATD0DR2存放转换结果Slide 5TMFreescale Semiconductor Confidential and Proprietary Information. Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.A/D 时钟选择 预分频 时钟选择/• 最大 A/D 时钟 = 2.0 MHz (最小 A/D CLOCK = 0.5 MHz) 最小ATDCTL4(HI) - A/D 控制寄存器 Address offset $0004采样时间选择SRES8 - A/D 精度选择 1=8位 0 = 10位 位 5位 模数计数器预分频器 - 由A/D控制寄存器中的PRS[4:0]控制 - 分频系数从2到64 - 如果 PRS[4:0] = 0, 预分频不起作用 注: 设置PRS[4:0]时, A/D Clock 不能大于 2 MHz.PRS0-PRS4SMP [1:0] 00 01 10 11采样时间 2 A/D时钟周期 4 A/D时钟周期 8 A/D时钟周期 16 A/D时钟周期系统时钟5位 模数计数器 位 预分频器Slide 6TM除2A/D 时钟Freescale Semiconductor Confidential and Proprietary Information. Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.转换时间A/D 时钟总是2 个 时钟周期2, 4, 8, 16 时钟周期CCF标志位置位,如果在8通道模式下,序列结束转换时间计算举例:(假设 2MHZ A/D 时钟频率)例 1: 转换时间 = Initial Sample Time + Programmed Sample Time + Resolution Period = 2 + 2 + 10 = 14 A/D Clocks = 7uSec 例 2: 转换时间= Initial Sample Time + Programmed Sample Time + Resolution Period = 2 + 16 + 10 = 28 A/D Clocks = 14uSecSlide 7TMFreescale Semiconductor Confidential and Proprietary Information. Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.A/D控制寄存器 控制寄存器5 控制寄存器Address offset $0005ATDCTRL5SCAN – 连续转换模式 1 = 连续转换模式 0 = 单次转换 DSGN – 符号选择 1 = 有符号 0 = 无符号 MULT – 多通道采样模式 1 = 多通道转换 0 = 单通道转换DJM – 对齐方式 1 = 右对齐 0 = 左对齐通道选择 0 0 0 = Chan 0 1 1 1 = Chan 7注意:对这个寄存器写操作时,将会中断当前的转换,然后重新启动新的转换序列 注意:对这个寄存器写操作时,将会中断当前的转换,Slide 8TMFreescale Semiconductor Confidential and Proprietary Information. Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.A/D 状态寄存器ATDSTAT0Address Offset $0006ATDSTAT1 SCF – 转换序列完成标志 - 在单次转换模式时,当转换完成后置位 (SCAN = 0) 在连续转换模式时,当第一次转换完成后置位 (SCAN = 1). 当 (AFFC = 0) ,写1清零. ETORF - 外部触发覆盖标志 - 如果在转换过程中高/低电平出现,置位 FIFOR – 当结果寄存器在读出之前已经被写入时,置位 ( CCF没有清零) CC[2:0] – 转换计数器 3-位计数器指向下一个将要转换的通道 CCF7 -CCF0 – 独立通道转换完成标志位 每个相应的通道转换结束后置位, 当相应的A/D结果寄存器被读出 时,清零Slide 9TM$0007Freescale Semiconductor Confidential and Proprietary Information. Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.转换结果寄存器左对齐数据存放格式Address Offset $0010 - $0011 $001E - $001F//假设左对齐10位精度 Word AD_wValue;右对齐数据存放格式 右对齐数据存放格式AD_wValue = ATD0DR0>>6; Address Offset $0010 - $0011 $001E - $001FSlide 10TMFreescale Semiconductor Confidential and Proprietary Information. Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.A/D口寄存器 口寄存器Address Offset $000FPORTAD1ADA7 ADA6A T D P TADA5 ADA4 ADA3 ADA2 ADA1 ADA0ATDDIEN - ATD 数字输入使能注意:任何一个引脚可以用作A/D或数字输入Slide 11TMFreescale Semiconductor Confidential and Proprietary Information. Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.AD使用示例 查询方式 使用示例-查询方式 使用示例void AD_Init(void) //初始化 { ATD0CTL2=0xC0; //AD模块上电, 快速清零, 无等待模式, 禁止外部触发, 中断禁止 ATD0CTL3=0x20; // 每个序列4次转换, No FIFO, Freeze模式下继续转换 ATD0CTL4=0x83; // 8位精度, 2个时钟, ATDClock=[BusClock*0.5]/[PRS+1] ; PRS=3, divider=8 ATD0CTL5=0xA0; //右对齐无符号,单通道采样,通道0 ATD0DIEN=0x00; // 禁止数字输入 } void AD_GetValue(word *AD_wValue) //读取AD转换结果 { *AD_wValue = ATD0DR0; //Read out the Result Register }word AD_wValue; void main(void) { word i; AD_Init(); //AD初始化 DDRB = 0xFF; PORTB = 0x00; EnableInterrupts; for(;;) { while(!ATD0STAT1_CCF0); //等待转换结束 AD_GetValue(&AD_wValue); //读取转换结果 PORTB = (byte)AD_wValue; //在B口显示转换值 } }Slide 12TMFreescale Semiconductor Confidential and Proprietary Information. Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.AD使用示例 中断方式 使用示例-中断方式 使用示例word AD_wData = 0; void main(void) { word i; AD_Init(); DDRB = 0xFF; PORTB = 0x00; EnableInterrupts; for(;;) { PORTB = (byte)AD_wData; } } void AD_Init(void) { ATD0CTL2=0xC2; //AD模块上电, 快速清零, 无等待模式, 禁止外部触发, 中断开放 ATD0CTL3=0x20; ATD0CTL4=0x83; ATD0CTL5=0xA0; ATD0DIEN=0x00; } #pragma CODE_SEG NON_BANKED void interrupt 22 Int_AD0(void) { AD_wData = ATD0DR0; //Read out the Result Register }Slide 13TMFreescale Semiconductor Confidential and Proprietary Information. Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.AD使用例程 使用例程void AD_Init(void) //AD初始化 { //控制寄存器2: 上电,标志位快速清零,开中断 ATD0CTL2 = (ATD0CTL2_ADPU_MASK|ATD0CTL2_AFFC_MASK|ATD0CTL2_ASCIE_MASK); //控制寄存器3:转换序列长度为3,FIFO模式 ATD0CTL3 = (ATD0CTL3_S2C_MASK|ATD0CTL3_S1C_MASK|ATD0CTL3_FIFO_MASK); //控制寄存器4: ATD0CTL4 = (ATD0CTL4_SRES8_MASK|ATD0CTL4_PRS1_MASK|ATD0CTL4_PRS0_MASK); //控制寄存器5: ATD0CTL5 = (ATD0CTL5_DJM_MASK|ATD0CTL5_SCAN_MASK|ATD0CTL5_MULT_MASK); ATD0DIEN=0x00; // 禁止数字输入缓冲 } #pragma CODE_SEG NON_BANKED //中断服务程序 void interrupt 22 Int_AD0(void) { AD_wData[0] = ATD0DR0; //将结果寄存器中的值存放到数组中 AD_wData[1] = ATD0DR1; //将结果寄存器中的值存放到数组中 AD_wData[2] = ATD0DR2; //将结果寄存器中的值存放到数组中 } #pragma CODE_SEG DEFAULT_ROMSlide 14TMFreescale Semiconductor Confidential and Proprietary Information. Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.word AD_wData[3]; //全局变量存放 AD0,AD1,AD2的结果 void main(void) { dword i; AD_Init(); //AD 初始化 DDRB = 0xFF; PORTB = 0x00; AD_wData[0] = 0; //全局变量初始化 AD_wData[1] = 0; AD_wData[2] = 0; EnableInterrupts; for(;;) { if(ATD0CTL2_ASCIE == 0) //采用查询方式 { while(!ATD0STAT1_CCF0); //等待通道0转换结束 AD_wData[0] = ATD0DR0; //读通道0的转换结果 while(!ATD0STAT1_CCF1); //等待通道1转换结束 AD_wData[1] = ATD0DR1; //读通道1的转换结果 while(!ATD0STAT1_CCF2); //等待通道2转换结束 AD_wData[2] = ATD0DR2; //读通道2的转换结果 } PORTB = (byte)AD_wData[0]; //用PORT B来显示AD0的值 for(i=0;i<0xFFFFF;i++); //delay PORTB = (byte)AD_wData[1]; //用PORT B来显示AD1的值 for(i=0;i<0xFFFFF;i++); //delay PORTB = (byte)AD_wData[2]; //用PORT B来显示AD1的值 for(i=0;i<0xFFFFF;i++); //delay } }Slide 15TMFreescale Semiconductor Confidential and Proprietary Information. Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.。

相关文档
最新文档