




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第7章 A/D、D/A、CMP和TSI模块本章导读:作为工业控制及测量最主要的模块之一,模/数转换 (ADC)及数/模转换(DAC)的是嵌入式系统应用的基本内容之一。比较器CMP也是嵌入式应用系统中基本的控制逻辑之一。触摸感应接口TSI 作为一种新型的人机交互手段,已应用于越来越多的嵌入式系统。本章主要知识点有A/D转换的基本知识及一般编程模型;D/A转换的基本知识及一般编程模型;比较器CMP模块的基本知识及一般编程模型;TSI模块的基本知识及一般编程模型。7. 1 16位A/D转换模块的驱动构件设计在过程控制和仪器仪表中,多数情况下是由嵌入式计算机进行实时控制及实时数据处理的。计算机所加工的
2、信息是数字量,而被测控对象往往是一些连续变化的模拟量(如温度、压力、速度或流量等)。模/数 (Analog/Digital,A/D)转换模块是嵌入式计算机与外界连接的纽带,是大部分嵌入式应用中必不可少的重要组成部分,该部分的性能直接影响到嵌入式设备的总体性能。本节首先简要阐述A/D转换的基础知识,接着给出K60 MCU内部A/D转换模块的基本编程方法,并封装了A/D转换构件,可供实际开发参考使用。7. 1. 1 A/D转换的基础知识A/D转换模块(Analog To Digital Convert Module)即模/数转换模块,其功能是将电压信号转换为相应的数字信号。数字控制系统如图 7-1
3、所示。实际应用中,该电压信号可能由温度、湿度、压力等实际物理量经过传感器和相应的变换电路转化而来。经过A/D转换后,MCU就可以处理这些物理量。进行A/D转换,应该了解以下一些基本问题:第一,采样精度是多少;第二,采样速率有多快;第三,滤波问题;第四,物理量回归等。 图7-1数字控制系统框图1.采样精度采样精度就是指数字量变化一个最小量时模拟信号的变化量,即采样位数。通常,MCU的采样位数为8位,某些增强型的可达到10位,而专用的A/D采样芯片则可达到12位、14位,甚至16位。设采样位数为N,则 最小的能检测到的模拟量变化值为1/2N 。例如,以K60为例,其采样精度最高为16位,若参考电压
4、为3. 3V,则检测到的模拟量最小变化为 3. 3/216 =0. 05mV。2.采样速率采样速率是指完成一次A/D采样所要花费的时间。在多数的MCU中要花费几个到几十个指令周期,因而此速率和所选器件的工作频率有很大关系。3.滤波为了使采样的数据更准确,必须对采样的数据进行筛选,去掉误差较大的毛刺。通常采用中值滤波法和均值滤波法来提高采样精度。所谓中值滤波,就是将M次连续采样值按大小进行排序,取中间值作为滤波输出。而均值滤波,是把N次采样结果值相加,然后除以采样次数N,得到的平均值就是滤波结果。若要得到更高的精度,可以通过建立其他误差模型分析方式来实现。4.物理量回归在实际应用中,得到稳定的A
5、/D采样值以后,还需要把A/D采样值与实际物理量对应起来,这一步称为物理量回归。A/D转换的目的是把模拟信号转化为数字信号,供计算机进行处理,但必须知道A/D转换后的数值所代表的实际物理量的值,这样才有实际意义。例如,利用MCU采集室内温度,A/D转换后的数值是126,实际它代表多高温度呢?如果当前室内温度是25. IV,则A/D值126就代表实际温度25. 。7.1.2A/D转换常用传感器简介传感器是指把物理量或化学量转变成电信号的器件,它是实现测试与自动控制系统的首要环节。例如,电子计价枰中所安装的称重传感器,是电子计价枰的重要部件,它担负着将重量转换成电信号的任务,该电信号被放大器放大并
6、经A/D转换后,由显示器件给出称重信息。如果没有传感器对原始参数进行精确可靠的测量,无论是信号转换或信息处理都将无法实现。传感器的种类可分为力、热、湿、气、磁、光、电等。各种传感器都是根据相关材料在不同环境下会表现出不同的物理特性研制而成的。下面介绍一些简单的传感器。1.温度传感器温度传感器是利用一些金属、半导体等材料与温度有关的特性制成的,这些特性包括热膨胀、电阻、电容、磁性、热电势、热噪声、弹性及光学特征,根据制造材料将其分为热敏电阻传感器、半导体热电偶传感器、PX结温度传感器和集成温度传感器等类型。热敏电阻传感器是一种比较简单的温度传感器,其最基本电气特性是随着温度的变化自身阻值也随之变
7、化。图7-2 (a)是XTC热敏电阻。 (a) NTC热敏电阻 (b)热敏电阻的简单采样电路图7-2热敏电阻及其采样电路在实际应用中,将热敏电阻接入图7-2 (b)的采样电路中,热敏电阻和一个特定阻值的电阻串联,由于热敏电阻会随着环境温度的变化而化,因此A/D采样点的电压也会随之变化,A/D采样点的电压式中,X是一特定阻值,根据实际热敏电阻的不同而加以选定。假如热敏电阻阻值增大,采样点的电压就会减小,A/D值也相应减小;反之,热敏电阻阻值减小,采样点的电压就会增大,A/D值也相应增大。所以采用这种方法,MCU就会获知外界温度的变化。如果想知道外界的具体温度值,就需要进行物理量回归操作,也就是通
8、过A/D采样值,根据采样电路及热敏电阻温度变化曲线,推算当前温度值。2.光敏电阻器光敏电阻器是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小;入射光弱,电阻增大。光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。通常,光敏电阻器都制成薄片结构,以便吸收更多的光能。当它受到光的照射时,半导体片(光敏层)内就激发出电子空穴对,参与导电,使电路中电流增强。一般光敏电阻器结构如图7-3 (a)所示。图7-3 (b)给出了简单的光敏电阻采样电路,其中A/D采样点的电压的计算方法类似于上述热敏电阻A/D采样点电压的计算。图7-3光敏电阻及其采
9、样电路3. 灰度传感器所谓灰度,也可认为是亮度,简单地说就是色彩的深浅程度。灰度传感器的主要工作原理是使用两只二极管,一只为发白光的高亮度发光二极管,另一只为光敏二极管。发光二极管发出超强白光照射在物体上,通过物体反射回来落在光敏二极管上,由于受照射在它上面的光线强弱的影响,光敏二极管的阻值在反射光线很弱(也就是物体为深色)时为几百千欧, 般光照度下为几千欧,在反射光线很强(也就是物体颜色很浅,几乎全反射时)为几十欧。这样就能检测到物体的颜色的灰度了。7.1.3A/D转换模块概要与编程要点1.A/D模块简介概要由于K60的ADC模块的时钟频率最高可配置为50MHz,最快采样周期为 4个时钟,所
10、以采样速率最高可达12. 5MHz。K60共有2个ADC模块,每个 ADC模块包含27个寄存器。ADC模块由于使用了线性逐次逼近算法,所以具有最高可达16位的分辨率。同时ADC具有差分输入和单端输入两种采集模式。差分输入模式具有4路,每路有可以分别配置为16位、13位、11位 和9位四种采集精度;单端输入模式具有24路,每路可以分别配置为16位、 12位、10位和8位四种采集精度。当K60的ADC模块配置为差分模式时,将4对差分引脚视为差分输入源,将该对引脚的电压差值作模数转换的测量值,而且相应的结果寄存器会出现符号位。当差分引脚DP的电压比DM高时,符号位为0 。当差分引脚DP的电压比DM低
11、时,符号位1。虽然差分可以带符号,但这里还是建议读者设置DP端的电压值高于DM端的电压值。如果ADC模块配置位为非差分模式时,那么差分模式下的所有差分输入正端将视为单端模式的输入端。其实单端输入可以理解为另一端电压值永远为0V的差分输入。2. A/D模块寄存器ADC模块共有2个通道,每个道共有28个寄存器。表7-2列出了ADC0道的28个寄存器的内存映射,ADC0通道的寄存器名、复位值和该通道相同,基地址则从400B_B000 开始。表7-2 ADC0通道寄存器映射绝对地址寄存器名宽度进入方式复位值4003_B000ADC 状态控制寄存器1(ADC0_SC1A)32R/W0000_001Fh4
12、003_B004ADC 状态控制寄存器1(ADC0_SC1B)32R/W0000_001Fh4003_B008ADC 配置寄存器1(ADC0_CFG1)32R/W0000_0000h4003_B00CADC 配置寄存器2(ADC0_CFG2)32R/W0000_0000h4003_B010ADC 数据结果寄存器(ADC0_RA)32R0000_0000h4003_B014ADC 数据结果寄存器(ADC0_RB)32R0000_0000h4003_B018比较值寄存器(ADC0_CV1)32R/W0000_0000h4003_B01C比较值寄存器(ADC0_CV2)32R/W0000_0000h
13、4003_B020状态和控制寄存器2(ADC0_SC2)32R/W0000_0000h4003_B024状态和控制寄存器3(ADC0_SC3)32R/W0000_0000h4003_B028ADC 偏移校正寄存器(ADC0_OFS)32R/W0000_0004h4003_B02CADC 加方增益寄存器(ADC0_PG)32R/W0000_8200h4003_B030ADC 减方增益寄存器(ADC0_MG)32R/W0000_8200h4003_B034ADC 加方通用校准值寄存器(ADC0_CLPD)32R/W0000_000Ah4003_B038ADC 加方通用校准值寄存器(ADC0_CLP
14、S)32R/W0000_0020h4003_B03CADC 加方通用校准值寄存器(ADC0_CLP4)32R/W0000_0200h4003_B040ADC 加方通用校准值寄存器(ADC0_CLP3)32R/W0000_0100h4003_B044ADC 加方通用校准值寄存器(ADC0_CLP2)32R/W0000_0080h4003_B048ADC 加方通用校准值寄存器(ADC0_CLP1)32R/W0000_0040h4003_B04CADC 加方通用校准值寄存器(ADC0_CLP0)32R/W0000_0020h4003_B050ADC PGA 寄存器(ADC0_PGA)32R/W000
15、0_0000h4003_B054ADC 减方通用校准值寄存器(ADC0_CLMD)32R/W0000_000Ah4003_B058ADC 减方通用校准值寄存器(ADC0_CLMS)32R/W0000_0020h4003_B05CADC 减方通用校准值寄存器(ADC0_CLM4)32R/W0000_0200h4003_B060ADC 减方通用校准值寄存器(ADC0_CLM3)32R/W0000_0100h4003_B064ADC 减方通用校准值寄存器(ADC0_CLM2)32R/W0000_0080h4003_B068ADC 减方通用校准值寄存器(ADC0_CLM1)32R/W0000_0040
16、h4003_B06CADC 减方通用校准值寄存器(ADC0_CLM0)32R/W0000_0020h在ADC模块的编程过程中,主要需要配置ADC模块的时钟、转换为单端或者差分、转换精度、触发源以及转换通道等功能,因此需要用到ADC的控制寄存器、配置寄存器以及状态寄存器等。本章详细介绍的寄存器有配置寄存器1、状态和控制寄存器1、状态和控制寄存器2和状态和控制寄存器31. ADC 配罝寄存器1(ADCx_CFG1)配置寄存器1选择ADC的运行模式、时钟源、时钟分频,并可以配置低功耗或长采样时间。ADLPC低功耗配置。该寄存器控制功耗配置的逐次逼近转换器。当采用优化功耗时,不需要更改的采样速率。0:
17、正常功耗配罝。1:低功耗配置。功耗的减小以最大时钟速率为代价。ADIV时钟分频选择。该位选择时钟分频比,用以生成ADC模块的内部时钟 ADCK。00:分频比为1,时钟速率为输人时钟。01:分频比为2,时钟速率为(输入时钟)/2。10:分频比为4,时钟速率为(输入时钟)/4。11:分频比为84,时钟速率为(输入时钟)/8。ADLSMP采样时间配置。该位根据转换模式的选择来配罝不同的采样时间,通过调整它来适应采样周期,以允许高阻抗的精确采样或低阻抗输入的最低转换速率。在连续转换使能且不需要高转换速率的时候,长的采样时间也可以用来降低整体的功耗。当ADLSMP=1时,选择为长采样时间,此时配置ADL
18、STS1:0可以选择长采样时间的程度。0:短采样时间。 1:长采样时间。MODE转换模式选择,用来选择ADC模块的精度模式。00: DIFF=0时,为单端8位精度转换;DIFF=1时,为差分9位精度转换并输出二进制补码。01: DIFF=0时,为单端12位精度转换;DIFF=1时,为差分13位精度转换并输出二进制补码。10: DIFF=0时,为单端10位精度转换;DIFF=1时,为差分11位粮度转换并输出二进制补码。11: DIFF=0时,为单端16位精度转换;DIFF=1时,为差分16位精度转换并输出二进制补码。ADICLK输入时钟选择。该位通过选择时钟输人源来生成内部时钟ADCK。注意,当
19、选择的时钟源为ADACK时,不必在转换开始前激活它。当选择为ALTCLK并且在转换前未激活(ADACKEN = 0)时,异步时钟会在转换开始时被激活并在结束时关闭。因此,在时钟源被重新激活的时候相应的时钟会有一个启动延时。00: 总线时钟。 01: 总线时钟2分频。10: 备用时钟(ALTCLK)。11: 异步时钟(ADACK)。2. ADC状态和控制寄存器1(ADCx_SC1n)状态寄存器ADCx_SCln分为两个寄存器,分别是SC1A和SC1B。SC1A寄存器可用于软件和硬件触发两者模式的操作。为了允许ADC的连续转换可以被内部外设触发,ADC有不止一个状态和控制寄存器,每个转换对应一个寄
20、存器。只有在硬件触发的模式下,才可以配置SC1中的SC1B寄存器。在任何一个时间点上,仅有一个SC1n寄存器为控制ADC转换的激活状态。当 SC1n正在控制转换过程时是可以更新SC1A的。向SC1A寄存器写人的时候会中止一个当前正在运行的转换。在软件触发模式下(ADTRG=0),写入SC1A寄存器会初始化一个新的转换(如果ADCH不等于全1状态)。同样,写人任何SC1n寄存器会中止当前SC1n控制的转换。由于SC1B不能用来软件触发操作,因此写入 SC1B奇存器不会初始化一个新的转换。COCO转换完成标志。该位为只读位,如果比较功能没有使能(ACFE = 0)且硬件平均功能没有使能(AVGE=
21、0),每次转换完成时该位会罝位。当比较功能使能后(ACFE=l),COCO标志仅当转换完成后的比较结果为真值时才置位。当硬件平均功能使能后(AVGE=1),COCO标志在选定的转换数目完成后置位(由AVGS位决定)。SC1A的COCO标志也会在校准序列完成后罝位。当对应的SC1n寄存器写入或者对应的Rn寄存器被读取后,COCO标志会被淸除。0: 转换没有完成。 1: 转换完成。AIEN中断使能。该位使能转换完成中断。当COCO被置位,并且AIEN为高时,一个中断会被触发。0: 转换完成中断禁用。 1: 转换完成中断使能。DIFF差分模式使能。该位配置ADC运行于差分输入模式。当使能该位后,该模
22、式自动选择差分通道、改变转换算法和转换完成的周期数。0: 单端转换。 1: 差分转换。ADCH输人通道选择。ADCH的5位用来选择输入的通道号。输人通道的解码还取决于DIFF位的值。DAD0DAD3为对应差分输人的DADPx和DADMx成对引脚。当通道选择位的所有位为1时(ADCH=11111),逐次逼近转换算法子系统会关闭。该特性可以用来明确地禁用ADC转换并且隔离通道的所有输人源。通过中止连续转换可以避免一个额外的单次转换被执行。没有必要在连续转换禁用的时候设置该位为全1以起到降低ADC功耗的作用,因为该模块会在一个转换完成后自动进入低功耗模式。00000:DIFF=0,DADP0 为输入
23、;DIFF=1,DAD0为输入。00001:DIFF=0,DADP1为输人;DIFF=1,DAD1为输入。 00010:DIFF=0,DADP2 为输入;DIFF=1,DAD2 为输入。00011:DIFF=0,DADP3 为输人;DIFF=1,DAD3 为输入。00100:DIFF=0,AD4 为输入;DIFF=1,保留状态。00101:DIFF=0,AD5 为输入;DIFF=1,保留状态。00110:DIFF=0,AD6 为输入;DIFF=1,保留状态。00111:DIFF=0,AD7为输人;DIFF=1,保留状态。01000:DIFF=0,AD8 为输入;DIFF=1,保留状态。0100
24、1:DIFF=0,AD9 为输人;DIFF=1,保留状态。01010:DIFF=0,AD10 为输入;DIFF=1,保留状态。01011:DIFF=0,AD11 为输人;DIFF=1,保留状态。01100:DIFF=0,AD12 为输人;DIFF=1,保留状态。01101:DIFF=0,AD13 为输入;DIFF=1,保留状态。01110:DIFF=0,AD14 为输人;DIFF=1,保留状态。01111:DIFF=0,AD15 为输人;DIFF=1,保留状态。10000:DIFF=0,AD16 为输入;DIFF=1,保留状态。10001:DIFF=0,AD17 为输入;DIFF= 1,保留状
25、态。10010:DIFF=0,AD18 为输人;DIFF=1,保留状态。10011:DIFF=0,AD19 为输入;DIFF=1,保留状态。10100:DIFF=0,AD20 为输入;DIFF=1,保留状态。10101:DIFF=0,AD21 为输入;DIFF=1,保留状态。10110:DIFF=0,AD22 为输入;DIFF=1,保留状态。10111:DIFF=0,AD23 为输人;DIFF=1,保留状态。11000:保留状态。11001:保留状态。11010:DIFF = 0,温度传感器(单端)为输入;DIFF=1,温度传感器(差分)为输入。11011:DIFF=0,带隙(单端)为输入;D
26、IFF=1,带隙(差分)为输人。11100:保留状态。11101: DIFF=0,VREFSH为输入;DIFF=1,VREFSH(差分)为输入。电压参考的选择由SC2寄存器的REFSEL位决定。11110: DIFF=0,VREFSH为输入;DIFF=1,保留状态。电压参考的选择由SC2寄存器的REFSEL位决定。11111:模块禁用。3. ADC状态和控制寄存器2(ADCx_SC2)SC2寄存器包含转换活跃、硬件/软件触发选择、比较功能和电压参考选择等配置。ADACT转换活跃。该位指明当前是否处于一个转换或硬件平均处理中。初始化一个转换后,ADACT置位;当转换完成或者中止后,该位被淸零。0
27、:没有在转换。 1:正在转换。ADTRG转换触发选择。ADTRG选择触发类型来初始化一个转换,有软件触发和硬件触发两个类型可以选择。当选择软件触发时,通过写SC1A寄存器可以初始化一个转换。当选择硬件触发时,则随着一个ADHWTSn脉冲输人后的ADHWT 使能而触发一个转换初始化。0:软件触发选择。 1:硬件触发选择。ACFE比较功能使能。0:比较功能禁用。 1:比较功能使能。ACFGT比较功能大于使能。ACFGT根据ACREN的值来配置比较功能,以检查转换结果与对应的比较值寄存器(CV1和CV2)。为了使该位有效,则ACFE位必须置位。0:如果配置小于阈值,则范围之内的和范闲之外的值将不被包
28、含,该功能取决于CV1和CV2寄存器的值。1:如果配罝为大于或等于阈值,则范围之内的和范闲之外的值将被包含,该功能取决于CV1和CV2寄存器的值。ACREN比较功能范围使能。ACREN配置比较功能来检查转换的结果是否在 CV1和CV2寄存器的范围内或范围外。为了使ACFGT位有效则ACFE位必须置位。DMAENDMA使能。0:DMA禁用。1:DMA使能,任何ADC的转换完成后都会置位COCO标志以触发一个DMA请求。REFSEL电压参考选择,用于转换的电压参考源。00:默认电压参考源引脚对(外部引脚VREFH和VREFL)。01:备用参考对(VALTH和VALTL),可以是附件的外部引脚或者内
29、部源,取决于MCU的配置。10:保留选项。 11:保留选项。4. ADC状态和控制寄存器3(ADCx_SC3)SC3及寄存器控制ADC模块的校准、连续转换以及硬件平均功能。CAL校准。置位CAL的时候开始一个校准序列。处于校准过程中该位保持置位,校准序列完成后该位淸零。必须检查CALF位来决定校准序列的结果,一旦校准开始,校准过程便不能通过写ADC寄存器来中断,否则校准结果就是不正确的,且CALF将被罝位。S位CAL位将中断任何转换。CALF校准失败标志。在校准序列完成前,如果ADTRG=1,则任何ADC寄存器被写入或者进人任何停止模式校准序列都将失败。向该位写1将会清零该位。0:校准正常完成
30、。1:校准失败。ADC精确度规格将不保证。ADCO连续转换使能。0:如果硬件平均功能使能(AVGE=1),那么在初始化转换后,一个转换或者一组转换将开启。1:如果硬件平均功能使能(AVGE=1),那么在初始化转换后,连续转换或者多组转换将开启。AVGE硬件平均使能。0:硬件平均功能禁用。 1:硬件平均功能使能。AVGS硬件平均选择,决定多少个ADC转换来平均出一个结果。00:4个采样平均。 01:8个采样平均。10:16个采样平均。 11:32个采样平均。3. 编程要点对于ADC模块的编程,我们只要了解ADC状态控制寄存器SCI (ADC Status and Control Register
31、s 1)、ADC配置寄存器CFG1 和CFG2 (ADC Configuration Register 1、2)三个寄存器就能使用K60的ADC模块了。读者若要了解其寄存器详细信息请参见芯片手册。下面着重介绍ADC模块编程要点。1)初始化在开始ADC之前,需要初始化ADC模块,ADC模块初始化的顺序如下。(1)配置SIM_SCGC6, 使能ADC的时钟,使能A/D通道的引脚复用功能为ADC功能。(2)配置ADC配置寄存器(CFG),选择用于产生内部时钟输入时钟源和分频因子,同时可以配置ADC的选择采样时间和低功耗功能。(3)配置ADC状态和控制寄存器(SC1n),选择转换是否是单端或差分模式,
32、使能或禁止转换完成中断,选择转换的输入通道。2)开始转换操作在初始化结束后,当向SC1n的域ADCH写入通道值时,一个A/D转换便 开始了。3)完成转换当转换结果送到数据结构寄存器中转换就完成了。可以通过查看 SC1n寄存器中的C0C0位来检验转换是否完成。4)获取A/D值当转换结束后,结果寄存器中的值即为转换结果,最后需要清除标 志寄存器的coco完成转换位。代码片段如下。7.1.4A/D转换驱动构件设计A/D模块具有初始化、采样、中值滤波、均值滤波等操作。按照构件的思想,可将它们封装成独立的功能函数。A/D构件包括头文件hw_adc. h 和hw_adc. c文件。A/D构件头文件中主要包
33、括相关宏定义、A/D的访能函数原每说明等内容。A/D构件程序文件的内容是给出A/D各功能函数的实现过程。表7-1给出了 ADC构件函数的函数名和各个函数的具体功能。表7-1 A/D构件函数本节给出了 K60内部A/D转换模块的程序,包含了中值滤波与均值滤波的复合滤波方式,因为不含软件滤波的A/D转换程序很少能够实际应用。中值滤波的思想是:连续采样3次,并将3次采样结果按照从大到小的顺序排列,取中间值作为中值滤波的结果。均值滤波的思想是:先进行n次中值滤波,再将这n次中值结果相加,然后除以采样次数n得到最终结果。具体的构件函数功能如下,hw_adc_init函数主要完成A/D转换模块的初始化。h
34、w_adc_mid函数实现中值滤波,hw_adC_ave函数实现均值滤波。下面以K60的A/D转换程序为例,给出相应的程序代码。1. A/D转换构件头文件2. A/D转换构件函数7.1.5 A/D转换驱动构件测试实例A/D转换测试实例主函数 7.2 12位D/A转换模块的驱动构件设计7.2.1 D/A转换的基础知识数/模转换(Digital-to-Analog Converter, DAC)是ADC的逆转换 当MCU需要把处理后的信息反馈到控制设备上时,就需要将数字量转换为模拟量。完成这种转换的电路称为数/模转换器,亦称为DAC。1.D/A转换的指标1)分辨率(Resolution)指数字量变
35、化一个最小量时模拟信号的变化量。分辩率又称为精度,通常以数字信号的位数来表示。2)建立时间(SettingTime)是将一个数字量转换为稳定模拟信号所需的时间,也可以认为是转换时间。2.D/A转换器的分类1)电压输出型电压输出型D/A转换器虽有直接从电阻阵列输出电压的,但一般采用内置输出放大器以低阻抗输出。直接输出电压的器件仅用于高阻抗负载,由于无输出放大器部分的延迟,故常作为高速D/A转换器使用。2)电流输出型电流输出型D/A转换器很少直接利用电流输出,大多外接电流-电压转换电路得到电压输出,有两种方法:一是只在输出引脚上接负载电阻而进行电流-电压转换;二是外接运算放大器。第一种方法虽可在电
36、流输出引脚上出现电压,但必须在规定的输出电压范围内使用,而且由于输出阻抗高,所以一般外接运算放大器使用。3)乘算型D/A转换器中有使用恒定基准电压的,也有在基准电压输入上加交流信号的,后者由于能得到数字输入和基准电压输入相乘的结果而输出,因而称为乘算型D/A转换器。乘算型D/A转换器一般不仅可以进行乘法运算,而且可以作为使输入信号数字化衰减的衰减器及对输入信号进行调制的调制器使用。4)一位D/A转换器一位D/A转换器与前述转换方式全然不同,它将数字值转换为脉冲宽度调制或频率调制的输出,然后用数字滤波器进行平均化而得到一般的电压输出(又称为位流方式),用于音频等场合。7. 2. 2 D/A转换模
37、块概要1.概要当DAC使能时,将会转换DACDAT11:0的值或者把数据缓冲区的值转换成模拟电压。电压转换精度为Vin/4096,输出电压范围在Vin/4096 Vin之间。D/A结构如图7-4所示。图7-4 K60的12位DAC模块结构图DAC模块可以选择两路参考电压,DACREF_1和DACREF_2,其分别连接至VREF和VDDA。VREF输出的是一个精准的1. 2V电压,VDDA是K60使用的3.3V工作电压。K60的12位DAC的输出端则可以连接到外部引脚、比较器的输入端、 运算放大器(Op-Amps)以及ADC等。K60的12位DAC主要有以下特性:片上可编程的输出产生器:两路参考
38、源电压选择;支持16字的数据缓冲区;支持DMA 。2. DAC模块寄存器DAC模块共有2个通道,每组通道共有36个寄存器。其中,有32个缓冲区寄存器DACx_DATnL和DACx_DATnH各16组,其余4个分别是状态寄存器 (DACx_SR)、控制寄存器0(DACx_C0)、控制寄存器l(DACx_C1)和控制寄存器2(DACx_C2)。DAC通道0的基地址为400C_C000,通道1的基地址为400C_D000。在DAC模块的编程过程中主要需要配置DAC模块的触发模式、缓冲区操作模式等,因此需要用到DAC的控制寄存器0和控制寄存器1。下面将详细介绍这两组寄存器。1) DAC控制寄存器0(D
39、ACx_C0)DACENDAC使能。该位控制可编程参考电压生成器的开始操作。0:DAC系统禁用。 1:DAC系统使能。DACRFSDAC参考选择。0:DAC选择DACREF_1作为参考电压。1:DAC选择DACREF_2作为参考电压。 DACTRGSELDAC触发选择。0:选择DAC硬件触发。 1:选择DAC软件触发。DACSWTRGDAC软件触发。髙位激活。该位只能写入,读取值始终为0。如果DAC软件触发被选择并且缓冲器被使能,向该位写1将使缓冲器读指针前进一次。0:DAC软件触发无效。 1 :DAC软件触发有效。LPENDAC低功耗控制.0:髙功耗模式。 1:低功耗模式。DACBWIEND
40、AC缓冲区阈值中断使能。0:DAC缓冲区阈值中断被禁用。1:DAC缓冲区阈值中断被使能。DACBTIENDAC缓冲区读指针到顶标志中断使能。0:DAC缓冲区读指针到顶标志中断禁用。1:DAC缓冲区读指针到顶标志中断使能。DACBBIENDAC缓冲区读指针到底标志中断使能。0:DAC缓冲区读指针到底标志中断禁用。1:DAC缓冲区读指针到底标志中断使能。2) DAC控制寄存器1(DACx_C1)DMAENDMA使能选择。0:DMA禁用。1:DMA使能。DMA使能时,DMA请求将由原始中断生成,且此时该模块的中断不会发生。DACBFWMDAC缓冲区阈值选择,用于控制DAC缓冲区阈值标志何时被罝位。当
41、DAC缓冲区读指针达到该位定义的字数,即离上限值的14个字时,DAC缓冲区阈值将被置位。该位允许用户配置阈值中断。00:1个字; 01:2个字; 10:3个字; 11:4个宇。DACBFMDDAC缓冲区工作模式选择。00:普通模式; 01:摆动模式; 10:单次扫描模式; 11:保留。DACBFENDAC缓冲区使能。0:缓冲区读指针禁用。转换的数据始终为缓冲区的第一个字。1:缓冲区读指针使能。转换的数据为读指针指向的字,意味者其可以为缓冲区的任意字。3.DAC三种工作模式K60的DAC模块共有16位的数据缓冲区,同时DAC可以被配置为正常开模式、摆动模式、一次扫描模式。在这些模式下,数据缓冲区
42、的读指针可以设置为任意一个0到DAC控制寄存器DAC_C2 (DAC Control Register2)的DACBFUP域之间的一个值。1)正常模式缓冲区作为一个循环缓冲区工作,当触发发生时,读指针每次加K 当读指针到达顶部时,在下次触发事件时回到0。2)摆动模式当读指针到达顶部时它不返回到0,而是在下次触发时减1,直到减到0为止。3)一次扫描模式当事件发生时,读指针每次加1,当到达顶部时停止。复位后读指针回0 。7. 2. 3 D/A转换驱动构件设计由于DAC模块具有初始化、DAC转换等操作,所以按照构件的思想,可将它们封装成多个独立的功能函数。DAC构件包括hw_dac. h和hw_da
43、c. c 文件。DAC构件头文件中主要包括相关宏定义、DA的功能函数原型每明等内容。DAC构件程序文件的内容是给出DAC各功能函数的实现过程。DAC构件给出了表7-2所示DAC主要函数的声明和定义。表7-2 DAC主要函数的声明和定义1. D/A转换构件头文件 2. D/A转换构件函数7. 2. 4 D/A转换驱动构件测试实例基于D/A驱动构件的基础之上,我们再设计一个测试实例,便于更好地理解D/A构件函数。我们知道12位的D/A输出,在设置缓冲区为4095时,输出电压最高为参考电压。设置为0时,输出0V电压。在主函数中设计一个循环,让输出缓冲区的大小从0加到4000循环,观察DAC0通道引脚
44、输出电压变化值。7.3 K60的比较器模块的驱动构件设计 7. 3. 1 CMP基础知识电压比较器的功能为比较两个电压的大小(用输出电压的高或低电平,表示两个输入电压的大小关系):当“+”输入端电压高于输入端时,电压比较器输出为高电平;当“+”输入端电压低于输入端时,电压比较器输出为低电平。电压比较器的作用:它可用做模拟电路和数字电路的接口,还可以用做波形产生和变换电路等。利用简单电压比较器可将正弦波变为同频率的方波或矩形波。比较器可以分为模拟比较器和数字比较器两类。1.模拟比较器将模拟量与一标准值进行比较,当高于该值时,输出高(或低)电平;反之,则输出低(或高)电平。例如,将一温度信号接于运
45、放的同相端,反相端接一电压基准(代表某一温度),当温度高于基准值时,运放输出高电平,控制加热器关闭;反之当温度信号低于基准值时,运放输出低电平,将加热器接通,这一运放就是一个简单的比较器。2.数字比较器用来比较二组二进制数是否相同,相同时输出高(或低)电平;反之,则输出相反的电平。最简单的数字比较器是一位二进制数比较器,是一个异或门。7. 3. 2 CMP模块概要与编程要点1.CMP模块介绍K60的比较器(Comparator, CMP)模块提供了一个电路,可以比较两路模拟电压。比较器电路使用的电压范围与芯片使用的电压范围相同。比较器比较两路模拟电压信号的输入,使用INP和INM 。当正向输入
46、大于反向输入时,模拟信号输出(CMP0)为高,当正向输入小于反向输入时, CMP0为低。K60中输出信号还可以通过CR1寄存器中的INV置1来确定反向输出。CMP的框图如图7-5所示。 图7-5比较器结构图1) CMP框图K60的比较器设备,共有3个比较器模块。模块0有5个输入通道,模块1和模块2都有2个输入通道。这3个比较器模块的输出通道都只有1个。K60的比较器模块有两个模拟复用器(MUX),MUX可以从8路通道中选择一路模拟信号作为输入信号。内部的6位DAC也可以提供一个信号。MUX电路可以在整个电源电压范围内进行操作。6位DAC是一个64-tap的电阻型阶梯网络,它可以为应用程序提供一
47、个可选的参考电压。它可以将电源电压分成64个不同的参考电压值。每6位数值对应一个输出电压,其值的范围是Vin/64到Vin。DAC的参考电压Vin可以从Vin1和Vin2中选择。Vin1指向VDD, VDD为3.3V。Vin2指向VREF_OUT,VREF_OUT输出一个精确的 1.2V。INP和INM为正向输入通道初反向输又通道。INP和INM比较通道分别从两个模拟MUX选择一路输入信号。若两个输入通道选择了一样的输入,那CMP模块将会自动关闭模块。CMP模块将从用户选择的通道进行比较。若使用DAC输出的比较电压作为参考电压,设置通道号为7即可。2)CMP中断CMP可以在比较输出上升沿或者下
48、降沿产生中断。当SCEIET位和SCECFR被置位时,或者SCRIEF位和SCRCFF被置位时,响应中断请求。可以通过清除SCRIER来取消上升沿中断,或者清除SCRIEF来取消下降沿请求。3) CMP模块特点CMP包括如下特性:1运行于整个电源电压范围内。2输入范围从rail到rail。3可编程滞环控制。4可选择的上升沿中断,下降沿中断,或沿跳变中断。5可选择的比较输出电平翻转。6比较器输出可以为:采样模式、窗口模式(适用于某些PWM零交叉检测应用)、数字滤波模式、旁路滤波、时钟可通过外部采样信号或总线时钟调整。7在输出外部滤波器用于内部功能时,外部滞后可同时被使用。8两种软件可选的性能级别
49、:通过较高的功率换取较短延时;低功率,长延时。9支持DMA传输:可选择一个比较事件来触发一个DMA传输。10可以在所有操作模式中使用。在停止模式,VLPS模式,LLS模式,和VLLSx模式中,无法使用窗口和滤波器功能。2. CMP模块寄存器介绍CMP存储器映射绝对地址寄存器名称位宽权限复位值40073000CMP控制寄存器0 (CMP0_CR0)8读/写00h40073001CMP控制寄存器1 (CMP0_CR1)8读/写00h40073002CMP滤波周期寄存器 (CMP0_FPR)8读/写00h40073003CMP状态和控制寄存器 (CMP0_SCR)8读/写00h40073004DAC
50、控制寄存器(CMP0_DACCR)8读/写00h40073005MUX控制寄存器(CMP0_MUXCR)8读/写00h40073008CMP控制寄存器0 (CMP1_CR0)8读/写00h40073009CMP控制寄存器1 (CMP1_CR1)8读/写00h4007_300ACMP滤波周期寄存器 (CMP1_FPR)8读/写00h4007300BCMP状态和控制寄存器 (CMP1_SCR)8读/写00h4007300CDAC 控制寄存器 (CMP1_DACCR)8读/写00h4007300DMUX 控制寄存器 (CMP1_MUXCR)8读/写00h40073010CMP控制寄存器0 (CMP2
51、_CR0)8读/写00h40073011CMP控制寄存器1 (CMP2_CR1)8读/写00h40073012CMP滤波周期寄存器 (CMP2_FPR)8读/写00h40073013CMP状态和控制寄存器 (CMP2_SCR)8读/写00h40073014DAC控制寄存器 (CMP2_DACCR)8读/写00h40073015MUX 控制寄存器 (CMP2 MUXCR)8读/写00h1) CMP 控制寄存器0 (CMPx CR0)FILTER_CNT滤波采样计数。这几位表示连续采样必须一致的次数。000:禁止滤波。若SE=1,则COUT位逻辑0;若SE=0,COUT=COUTA;001:连续1
52、次采样一致;010:连续2次采样一致;011:连续3次采样一致;100:连续4次采样一致;101:连续5次采样一致;110:连续6次采样一致;111:连续7次采样一致;HYSTCTR比较器滞环控制。定义了可编程滞环控制。这个滞环值与设备定义的每个等级有关。查看设备数据表以获得精确值。00:Level 0; 01:Level 1; 10:Level 2; 11:Level 3;2) CMP 控制寄存器1 (CMPx CR1)SE采样使能。SE和WE可以在任何时候设置。如果两个同时设置,那么SE和WE都会被清0。 然而要避免写两个1到那两个位置,因为这种情况是被保留的,在将来的实现中会被改变。0:采样; 1:不采样。WE窗口使能。SE和WE可以在任何时候设置。如果两个同时设置,那么SE和WE都会被清0。 然而要避免写两个1到那两个位置,因为这种情况是被保留的,在将来的实现中会被改变。0:禁止窗口; 1:使能窗口PMODE电源模式选择。查看设备数据表的电气格式表格,可以查看以下模式的详细信息。0:低速比较模式选择,在这个模式下,CMP有较慢的输出传播时延和较低的电量消耗;1:高速比较模式选择,在这个模式下,CMP有较快的输出传播时延和较高的电量消耗。IN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园白露教案反思学习小故事
- 建筑施工特种作业-建筑焊工真题库-3
- 2025届湖北省八市高三下学期3月联考语文试题(解析版)
- 2024-2025学年浙江省嘉兴市高一上学期期末考试语文试题(解析版)
- 新疆日新恒力橡塑有限公司年处理6万吨废旧轮胎热解项目报告书报告书简写本
- 江苏勃晟包装有限公司年产2300吨日用塑料制品(焊丝盘、包装盒、洒水壶、花盆)及300吨流延膜项目环评资料环境影响
- 话剧热泉心得体会
- 环境工程实验课件下载
- 环境工程专题课件
- 脑出血患者营养治疗讲课件
- 40篇短文搞定高考英语3500词
- 【山东】国际足球运动小镇概念规划方案
- 海氏(hay)职位分析法-介绍、实践与评价合集课件
- 煤矿安全规程露天部分参考题库(含答案)
- 有趣的英汉互译-课件
- (参考)菲达公司国内电除尘器业绩表
- 步进式加热炉耐材砌筑施工方案
- GB-T12232-2005- 通用阀门 法兰连接铁制闸阀
- 大学生职业生涯规划与就业指导教案第5讲:兴趣探索
- 2022年中国电信店长技能四级认证教材
- 门店电表记录表
评论
0/150
提交评论