工具/软件:Code Composer Studio
我一直在开发基于28069 MCU 的数据采集硬件、发现12位 ADC 存在一些问题、想知道是否有人可以解释。
我的 ADC 配置:
AdcRegs.ADCCTL2.bit.ADCNONOVERLAP = 1;//启用非重叠模式
AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1;//延迟中断脉冲
AdcRegs.INTSEL1N2.bit.INT1E = 1;//启用 ADCINT1
AdcRegs.INTSEL1N2.bit.INT1CONT = 1;//启用 ADCINT1连续模式
AdcRegs.INTSEL1N2.bit.INT2E = 1;//启用 ADCINT2
AdcRegs.INTSEL1N2.bit.INT2CONT = 1;//启用 ADCINT2连续模式
AdcRegs.INTSEL1N2.bit.INT1SEL = 0;//设置 EOC0以触发 ADCINT1触发
AdcRegs.INTSEL1N2.bit.INT2SEL = 1;//设置 EOC1以触发 ADCINT2触发
AdcRegs.ADCSOC0CTL.bit.CHSEL = 0;//将 SOC0通道选择设置为 ADCINA0
AdcRegs.ADCSOC1CTL.bit.CHSEL = 8;//将 SOC1通道选择设置为 ADCINB0
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 0;//在 cputimer1上设置 SOC0启动触发器,但最初关闭
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 0;//在 cputimer1上设置 SOC1启动触发器,但最初关闭
AdcRegs.ADCINTSOCSEL1.ALL = 0x0;
AdcRegs.ADCINTSOCSEL2.ALL = 0x0;
AdcRegs.ADCSOC0CTL.bit.ACQPS = 8;//将 SOC0 S/H 窗口设置为9个 ADC 时钟周期,
AdcRegs.ADCSOC1CTL.bit.ACQPS = 8;
1、不同的 SR 给出的 ADC 结果略有不同。
在大约一半的 Vref 提供输入时、我扫描了不同的 SR (100KHz 至3MHz)。 某些 SR 与正常的12位代码相差3-4 LSB。 不确定是否正常?
2.在较高的 SR (例如1.5MHz)下、我必须对两个通道都使用重叠、在这种情况下、通道 A 和 B 将相互影响。 例如、如果我打开或关闭其中一个通道、则另一个通道的 ADC 结果可能更高或更低。 因此、我必须使用非反向 LAP、且 ACQPS >7来消除这种情况、从而降低 SR。
3.当我测量小信号时,我可以观察到至少3-4LSB 的 ADC 结果不正确。 例如、我为 ADCIN 提供50mV 1KHz 正弦信号、该正弦信号以1024mV (Vref=2048mV)为中心、每当信号超过大约1024mV 的中值时、结果波形就像一个位(至少3-4 LSB)振荡、而不是波形平滑、然后变为正常。
4、当 SR = 2MHz 时、设置 ACQPS=6或7不起作用、结果波形变得相当糟糕、极大的失真。 但对于其他采样率来说、这是可以的、即使对于较高的 SR=3MHz 也是如此。 因此我设置 ACQPS=8、没关系。
ADC 是否存在这些已知问题? 还是由糟糕的布局造成的? 或者我的 ADC 配置不正确?
非常感谢有人能给我一些线索。