当前位置:文档之家› 第8讲 模数转换器ADC

第8讲 模数转换器ADC


CONVxx
对应的引脚
SEQ1
CONV00~CONV07
ADCINA0~ADCINA7
SEQ2
CONV08~CONV15
ADCINB0~ADCINB7
SEQ
CONV00~CONV15
ADCINA0~ADCINA7 ADCINB0~ADCINB7
最大转换通道寄存器的结构
双序列发生器模式下顺序采样
假设需要对ADCINA0~ADCINA7, ADCINB0~ADCINB7这16路通道进行采 样,ADC模块工作于双序列发生器模式, 并采用顺序采样。
双序列发生器顺序采样模式下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)
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) ×
双序列发生器顺序采样模式下16路通道转换结果
双序列发生器模式下并发采样
假设需要对ADCINA0~ADCINA7, ADCINB0~ADCINB7这16路通道进行采 样,ADC模块工作于双序列发生器模式, 并采用并发采样。
双序列发生器并发采样模式下16路通道时 双序列发生器并发采样模式下 路通道时ADCCHSELSEQn位情况 路通道时 位情况
SH pulse clock=0
1
1010b
HSPCP=3 150/(2*3)= 25MHz
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时钟频率
软件立即启动(S/W) EVA的多种事件 EVB的多种事件 外部引脚 (GPIO/XINT2_ADCSOC)

ADC模块的特点
ADC模块共有16个结果寄存器 ADCRESULT0~ADCRESULT15,用来保 存转换的数值。每个结果寄存器都是16 位的,而X281X的ADC是12位的,也就是 说转换后的数字值最高只有12位,那这 个12位的值是如何放在16位的结果寄存 器中的呢?
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
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通道
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)
ADC模拟输入的范围为0~3V。
AD端口的嵌位电路
ADC模块的特点
ADC模块对一个序列的通道开始转换必须需要有 一个启动信号,或者说是一个触发信号。
序列发生器 SEQ1 SEQ2 SEQ
启动方式
软件立即启动(S/W) EVA的多种事件 外部引脚 (GPIO/XINT2_ADCSO C)
软件立即启动(S/W) EVB的多种事件
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模块的特点
一共有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。
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
相关主题