280049C ADC配置及应用思考
具体细节说明书最详细,此内容仅抛砖引玉
文章目录
- 280049C ADC配置及应用思考
- 280049C ADC模块简介
- 1. 280049C的ADC都是12位的,只支持单端输入,不支持差分输入
- 2.三个模数转换器(ADCA,ADCB,ADCC),即三个ADC模块,每个ADC模块由一个采样保持(s/h)电路组成。ADC模块设计为在同一芯片上进行多次复制,允许多个ADC同时采样或独立操作。
- 3.每个ADC模块有16个通道,每个通道可配置
- 3.将模拟电压转换为数字值的过程分为S+H阶段和转换阶段。ADC采样和保持电路(S+H)由SYSCLK计时,而ADC转换过程由ADCCLK计时。ADCCLK是通过(AdcaRegs.ADCCTL2.bit.PRESCALE)配置进行分频而生成的。S+H持续时间是正在转换的SOC的ACQPS字段的值(AdcaRegs.ADCSOC0CTL.bit.ACQPS)加上SYSCLK周期的一倍。用户必须确保该持续时间超过1个ADCCLK周期和数据表中指定的最小S+H持续时间。转换时间约为10.5个ADCCLK周期。确切的转换时间总是SYSCLK周期的整数。
- 一、寄存器配置
- 二、配置代码
- 三、应用思考
- 总结
280049C ADC模块简介
1. 280049C的ADC都是12位的,只支持单端输入,不支持差分输入
2.三个模数转换器(ADCA,ADCB,ADCC),即三个ADC模块,每个ADC模块由一个采样保持(s/h)电路组成。ADC模块设计为在同一芯片上进行多次复制,允许多个ADC同时采样或独立操作。
3.每个ADC模块有16个通道,每个通道可配置
3.将模拟电压转换为数字值的过程分为S+H阶段和转换阶段。ADC采样和保持电路(S+H)由SYSCLK计时,而ADC转换过程由ADCCLK计时。ADCCLK是通过(AdcaRegs.ADCCTL2.bit.PRESCALE)配置进行分频而生成的。S+H持续时间是正在转换的SOC的ACQPS字段的值(AdcaRegs.ADCSOC0CTL.bit.ACQPS)加上SYSCLK周期的一倍。用户必须确保该持续时间超过1个ADCCLK周期和数据表中指定的最小S+H持续时间。转换时间约为10.5个ADCCLK周期。确切的转换时间总是SYSCLK周期的整数。
一、寄存器配置
1.配置参考电压,为模数转换器(ADC)配置参考电压,该参考电压对应AD值4096(12位ADC)
2.时钟配置,基本ADC时钟由系统时钟(SYSCLK)直接提供。SYSCLK用于生成ADC采集窗口。寄存器ADCCTL2具有确定ADCCLK的PRESCALE字段。ADCCLK用于为转换器计时,仅在转换阶段有效。在所有其他时间,包括在采样和保持窗口期间,ADCCLK信号被门控关闭。
3.配置采样通道与ADC模块通道相对应,与结果寄存器相对应
4.中断配置,选择一个SOC来触发ADC中断,将ADC中断信号传递PIE,需要ADC中断才配置
二、配置代码
代码如下:
// Setup VREF as internal
SetVREF(ADC_ADCA, ADC_INTERNAL, ADC_VREF3P3);
EALLOW;
// Set ADCCLK divider to /4
AdcaRegs.ADCCTL2.bit.PRESCALE = 6;
// Set pulse positions to late
AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1; //中断脉冲的产生发生在转换结束时,ADC结果锁存到其结果寄存器前1个周期
// Power up the ADC and then delay for 1 ms
AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1; //该位控制模拟核心内所有模拟电路的加电和断电
EDIS;
DELAY_US(1000);
EALLOW;
AdcaRegs.ADCSOC0CTL.bit.CHSEL = CH_SOCA0; //选择采样通道
AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = TRIG_SOCA0; //选择触发源
AdcaRegs.ADCSOC0CTL.bit.ACQPS = ACQPS_SOCA0; //控制此SOC的采样和保持窗口。配置的采集时间必须至少为一个ADCCLK周期,以确保ADC的正确操作,为了正确操作,必须允许ADC的输入信号有足够的时间对采样和保持电容器Ch.充电。
EDIS;
EALLOW;
// End of SOC0 will set INT1 flag
AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 0x1u; //选择信号来产生ADC中断
// Enable INT1 flag
AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1u;
AdcaRegs.ADCINTSEL1N2.bit.INT1CONT = 1u; //无论标志位是否被清除,只要产生EOC脉冲,就会产生ADCINT1脉冲
// Make sure INT1 flag is cleared
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1u;
EDIS;
DELAY_US(1000);
三、应用思考
1.一个模数转换器多个通道,采集的先后顺利如何定义,默认是轮询的,但是可以配置优先级
2.模数转换的频率和触发采样的频率,以PWM触发采样为例,PWM触发的频率是否会超过转换频率,大部分情况不会,目前接触过最快的PWM频率,LLC原边调频控制300K赫兹,转换频率以兆赫兹为单位,因此控制频率特别快的时候需要注意
3.ADC采样误差波动原因及处理
软件:通过对采样数据滤波及校表处理,得到准确的AD值
硬件:1.ADC阻抗匹配,根据芯片内部的采样保持电路设计外围采样电路
2.ADC受到开关噪声干扰,采样时刻和PWM开关时间重叠,以PWM触发采样为例,管子的开关会相对发出的PWM延迟,通常采样时刻快于管子开关时刻
3.ADC采样基于系统时间,系统时间进行了配置,需要考虑
4.ADC采样端口电压不要大于芯片规定的3.3V,整个芯片的端口电压一样不要超过规定的值,有某一个端口超过,会有意想不到的问题
4.ADC采样对环路控制的影响(后续整理下)
总结
采样过程包括,采样、保持、量化、编码,配置在采样保持及编码环节进行配置
采样是环路控制关键,配置的时候,考虑采样信号特征、香农采样定律、环路控制需求等