第8讲 模数转换器ADC

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

ADC模块的特点
ADC模块的时钟频率最高可配置为 25MHz,采样频率最高为12.5MSPS,也 就是说每秒最高能完成12.5个百万次的 采样。 ADC模块的自动序列发生器可以按两个 独立的8状态序列发生器(SEQ1和SEQ2) 来运行,也可以按一个16状态的序列发 生器(SEQ)来运行。
ADC模块的特点
13.2 ADC模块的工作方式
ADC模块既支持2个8状态序列发生器SEQ1 和SEQ2分开独立工作,此时称为双序列发 生器方式,也支持序列发生器SEQ1和SEQ2 级联成一个16状态序列发生器SEQ来工作, 此时称为单序列发生器方式,或者称为级 联方式。
ADC输入通道选择序列控制寄存器
X281X的16个通道可以通过编程来为序列发生器中需要转换的通 道安排顺序,这个功能就需要通过ADC输入通道选择序列控制寄 存器ADCCHSELSEQx(x=1,2,3,4)来实现。每一个输入通断选 择序列控制寄存器都是16位的,被分成了4个功能位CONVxx,每 一个功能位占据寄存器的4个位 。
ADC的时钟频率就是每秒有多少个时钟脉冲 的意思,它是ADC模块运行的基础 正如上面所介绍的,它是由系统时钟经过很 多环节分频后得到的,它取决于外部的时钟 输入和各个环节的倍频或者分频的系数。
ADC转换时间
转换时间是指ADC模块完成一个通道或 者一个序列的转换所需要的时间,很显 然,转换时间是由ADC的时钟频率来决 定的。
13.1 2812内部的ADC模块
ADC模块是一个12位分辨率的、具有流 水线结构的模数转换器 。 X281X的ADC模块一共具有16个采样通道, 分成了两组,一组为 ADCINA0~ADCINA7,另一组为 ADCINB0~ADCINB7。
ADC模块的结构框图
虽然ADC模块具有多个输入通道,但是 它内部只有1个转换器,也就是说同一时 刻只能对1路输入信号进行转换。当有多 路信号需要转换时,ADC模块该怎么办 呢?
OSCCLK*m (m! = 0) SYSCLKOUT = 2 SYSCLKOUT = OSCCLK(m = 0)
ADC的时钟频率和采样频率-2
然后,CPU时钟信号经过高速时钟预定标器HISPCP之后,生成高速外设时钟HSPCLK, 假设HISPCP寄存器的值为n,则有:
SYSCLKOUT (n! = 0) HSPCLK = 2*n HSPCLK = SYSCLKOUT(n = 0)
CONVxx
对应的引脚
SEQ1
CONV00~CONV07
ADCINA0~ADCINA7
SEQ2
CONV08~CONV15
ADCINB0~ADCINB7
SEQ
CONV00~CONV15
ADCINA0~ADCINA7 ADCINB0~ADCINB7
最大转换通道寄存器的结构
双序列发生器模式下顺序采样
假设需要对ADCINA0~ADCINA7, ADCINB0~ADCINB7这16路通道进行采 样,ADC模块工作于双序列发生器模式, 并采用顺序采样。
ADC模拟输入的范围为0~3V。
AD端口的嵌位电路
ADC模块的特点
ADC模块对一个序列的通道开始转换必须需要有 一个启动信号,或者说是一个触发信号。
序列发生器 SEQ1 SEQ2 SEQ
启动方式
软件立即启动(S/W) EVA的多种事件 外部引脚 (GPIO/XINT2_ADCSO C)
软件立即启动(S/W) EVB的多种事件
ADC采样频率
采样频率是指ADC模块每秒能够完成多 少次的采样,采样频率取决于启动ADC 的频率。启动ADC的方式有很多,比如 利用软件直接启动,利用事件管理器的 某些事件,或者是利用外部引脚来启动。 启动ADC的频率才是ADC的采样频率,例 如如果每隔1ms启动一次ADC,那么ADC 的采样频率就为1KHz。
SH pulse clock=0
1
1010b
HSPCP=3 150/(2*3)= 25MHz
Baidu Nhomakorabea
ADCLKPS=2 25/(2*2)= 6.25MHz
CPS=1 6.25/(2*1)= 3.125MHz
ACQ_PS=15 SH pulse clock=15
30MHz
150MHz
3.125MHz
16
ADC时钟频率
ADC时钟产生实例
XCLKIN PLLCR[3:0] HISPCLK ADCTRL3[1:4] ADCTRL1[7] ADC_CLK ADCTRL1[8:11] SHWidth
0000b
HSPCP=0
ADCLKPS=0
CPS=0
ACQ_PS=0
30MHz
15MHz
15MHz
15MHz
15MHz
15MHz
CONV02
CONV10
CONV03
CONV11
CONV04
CONV12
CONV05 ADCCHSELSE Q2 CONV06
× ADCCHSELSE Q4 ×
CONV13
×
CONV14
×
CONV07
×
CONV15
×
双序列发生器并发采样模式下序列发生器16路通道选择情况
AdcRegs.ADCTRL1.bit.SEQ_CASC=0; //选择双序列发生器模式 AdcRegs.ADCTRL3.bit.SMODE_SEL=1; //选择并发采样模式 AdcRegs.MAX_CONV.all=0x0033; //由于并发采样是一对通道、一对通道采样,采16个通道,总共只需 设置8个通道。SEQ1和SEQ2各设置4个通道,SEQ1将用到ADCCHSELSEQ1, SEQ2将用到SDCCHSELSEQ3。AdcRegs.CHSELSEQ1.bit.CONV00=0x0; // 采样ADCINA0和ADCINB AdcRegs.CHSELSEQ1.bit.CONV01=0x1; //采样ADCINA1和ADCINB1 AdcRegs.CHSELSEQ1.bit.CONV02=0x2; //采样ADCINA2和ADCINB2 AdcRegs.CHSELSEQ1.bit.CONV03=0x3; //采样ADCINA3和ADCINB3 AdcRegs.CHSELSEQ3.bit.CONV08=0xC; //采样ADCINA4和ADCINB4 AdcRegs.CHSELSEQ3.bit.CONV09=0xD; //采样ADCINA5和ADCINB5 AdcRegs.CHSELSEQ3.bit.CONV10=0xE; //采样ADCINA6和ADCINB6 AdcRegs.CHSELSEQ3.bit.CONV11=0xF; //采样ADCINA7和ADCINB7
软件立即启动(S/W) EVA的多种事件 EVB的多种事件 外部引脚 (GPIO/XINT2_ADCSOC)
ADC模块的特点
ADC模块共有16个结果寄存器 ADCRESULT0~ADCRESULT15,用来保 存转换的数值。每个结果寄存器都是16 位的,而X281X的ADC是12位的,也就是 说转换后的数字值最高只有12位,那这 个12位的值是如何放在16位的结果寄存 器中的呢?
ADC的时钟频率和采样频率-3
AD控制寄存器ADCTRL3的第0到第3位,也就是功能位ADCLKPS,可以对 HSPCLK进行分频,此外,AD控制寄存器ADCTRL1的CPS位另外还可以提供一 个2分频,因此,可以得到ADC模块的时钟ADCLK为:
HSPCLK ADCLK = (ADCLKPS = 0) CPS + 1 HSPCLK ADCLK = (ADCLKPS! = 0) 2* ADCLKPS*(CPS + 1)
模/数转换 ADC
在现实世界中,许多量都是 模拟量,例如电压、电流、 温度、湿度、压力等信号, 而在DSP等微控制器的世界 中,所有的量却都是数字量, 那如何实现将现实世界的模 拟量提供给DSP等微控制器 呢?
ADC
第13章 模/数转换器ADC
1、2812内部的ADC模块 2、ADC模块的工作方式 3、ADC模块的中断 4、ADC模块的寄存器
ADC输入通道选择序列控制寄存器
各个序列发生器所对应的寄存器和可选用的通道情况
序列发生器
对应的通道选择控制 寄存器 ADCCHSELSEQ1 ADCCHSELSEQ2 ADCCHSELSEQ3 ADCCHSELSEQ4 ADCCHSELSEQ1 ADCCHSELSEQ2 ADCCHSELSEQ3 ADCCHSELSEQ4
双序列发生器顺序采样模式下16路通道时 双序列发生器顺序采样模式下 路通道时ADCCHSELSEQn位情况 路通道时 位情况
CONV00 CONV01 ADCCHSELSE Q1 0000(ADCIN A0) 0001(ADCIN A1) 0010(ADCIN A2) 0011(ADCIN A3) 0100(ADCIN A4) 0101(ADCIN A5) 0110(ADCIN A6) 0111(ADCIN A7) ADCCHSELSE Q3 CONV08 CONV09 1000(ADCIN B0) 1001(ADCIN B1) 1010(ADCIN B2) 1011(ADCIN B3) 1100(ADCIN B4) 1101(ADCIN B5) 1110(ADCIN B6) 1111(ADCIN B7)
ADC模块的特点
ADResult =
VoltInput − ADCLO *65520 3.0
VoltInput − ADCLO (ADResult >> 4) = *4095 3.0
ADC的时钟频率和采样频率-1
假设外部晶振的频率为OSCCLK Hz,通常选用的是30M的晶振。 外部晶振经过PLL模块产生CPU时钟SYSCLKOUT,如果PLL模块的值为m,则有:
CONV02
CONV10
CONV03
CONV11
CONV04
CONV12
CONV05 ADCCHSELSE Q2 CONV06
CONV13 ADCCHSELSE Q4 CONV14
CONV07
CONV15
双序列发生器顺序采样模式下序列发生器16路通道选择情况
AdcRegs.ADCTRL1.bit.SEQ_CASC=0; //选择双序列发生器模式 AdcRegs.ADCTRL3.bit.SMODE_SEL=0; //选择顺序采样模式 AdcRegs.MAX_CONV.all=0x0077; //每个序列发生器最大采样通道数为8,总共可采样16通道 //SEQ1将用到ADCCHSELSEQ1、ADCCHSELSEQ2,SEQ2将用到 ADCCHSELSEQ3、ADCCHSELSEQ4 AdcRegs.CHSELSEQ1.bit.CONV00=0x0; //采样ADCINA0通道 AdcRegs.CHSELSEQ1.bit.CONV01=0x1; //采样ADCINA1通道 AdcRegs.CHSELSEQ1.bit.CONV02=0x2; //采样ADCINA2通道 AdcRegs.CHSELSEQ1.bit.CONV03=0x3; //采样ADCINA3通道 AdcRegs.CHSELSEQ2.bit.CONV04=0x4; //采样ADCINA4通道 AdcRegs.CHSELSEQ2.bit.CONV05=0x5; //采样ADCINA5通道 AdcRegs.CHSELSEQ2.bit.CONV06=0x6; //采样ADCINA6通道 AdcRegs.CHSELSEQ2.bit.CONV07=0x7; //采样ADCINA7通道 AdcRegs.CHSELSEQ3.bit.CONV08=0x8; //采样ADCINB0通道 AdcRegs.CHSELSEQ3.bit.CONV09=0x9; //采样ADCINB1通道 AdcRegs.CHSELSEQ3.bit.CONV10=0xA; //采样ADCINB2通道 AdcRegs.CHSELSEQ3.bit.CONV11=0xB; //采样ADCINB3通道 AdcRegs.CHSELSEQ4.bit.CONV12=0xC; //采样ADCINB4通道 AdcRegs.CHSELSEQ4.bit.CONV13=0xD; //采样ADCINB5通道 AdcRegs.CHSELSEQ4.bit.CONV14=0xE; //采样ADCINB6通道 AdcRegs.CHSELSEQ4.bit.CONV15=0xF; //采样ADCINB7通道
多路转换示意图
ADC模块的特点
一共有16个模拟量输入引脚,将这16个输入引 脚分成了两组,A组的引脚为 ADCINA0~ADCINA7,B组的引脚为 ADCINB0~ADCINB7。 具有12位的ADC内核,内置有2个采样保持器 S/H-A和S/H-B,从前面的学习可以知道,引脚 ADCINA0~ADCINA7对应于采样保持器S/H-A, 引脚ADCINB0~ADCINB7对应于采样保持器 S/H-B。
双序列发生器顺序采样模式下16路通道转换结果
双序列发生器模式下并发采样
假设需要对ADCINA0~ADCINA7, ADCINB0~ADCINB7这16路通道进行采 样,ADC模块工作于双序列发生器模式, 并采用并发采样。
双序列发生器并发采样模式下16路通道时 双序列发生器并发采样模式下 路通道时ADCCHSELSEQn位情况 路通道时 位情况
CONV00 CONV01 ADCCHSELSE Q1
0000(ADCIN A0) 0001(ADCIN A1) 0010(ADCIN A2) 0011(ADCIN A3) × ADCCHSELSE Q3
CONV08 CONV09
1000(ADCIN B4) 1001(ADCIN B5) 1010(ADCIN B6) 1011(ADCIN B7) ×
相关文档
最新文档