TI论坛
直播中

石根厚

8年用户 172经验值
私信 关注
[问答]

如何将共模信号转换成差分信号?

正在做一个电压采集的项目,输入信号的共模信号,而28377S,16位ADC需要输入差分信号,我利用下图的方式将共模信号转换成差分信号,请教ti工程师,能否这样做。输入的共模信号是0—2.5V的直流信号,在输入之前已经做了滤波处理。ADC的采样时间是320ns,ADC时钟频率是40M。

回帖(4)

石根厚

2020-7-24 12:33:29
下面是我的ADC的配置,EPWM触发转换,触发频率25KHZ,现在有个问题是,在某个转换点的时候,ADC会有较大幅度的转换误差,就是跳动,在200左右,特别是在输入共模电压在1V一下和9V以上的时候。
测量了ADC的输入,除了电源产生得到噪声之外并没有发现毛刺和电压突变。
void ConfigureADC(void)
[
    Uint16 acqps;

    EALLOW;
    //
    //write configurations
    //
    AdcaRegs.ADCCTL2.bit.PRESCALE = 2; //set ADCCLK divider to /2
    AdcSetMode(ADC_ADCA, ADC_RESOLUTION_16BIT, ADC_SIGNALMODE_DIFFERENTIAL);

    //
    //Set pulse positions to late
    //
    AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1;

    //
    //power up the ADC
    //
    AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;

    //
    //delay for 1ms to allow ADC time to power up
    //
    DELAY_US(1000);
    EDIS;

    //
    //determine minimum acquisition window (in SYSCLKS) based on resolution
    //
    if(ADC_RESOLUTION_12BIT == AdcaRegs.ADCCTL2.bit.RESOLUTION)
    [
        acqps = 14; //75ns
    ]
    else //resolution is 16-bit
    [
        acqps = 63; //320ns
    ]

    //
    //Select the channels to convert and end of conversion flag
    //
    EALLOW;
    AdcaRegs.ADCSOC0CTL.bit.CHSEL = 0;  //SOC0 will convert pin A0
    AdcaRegs.ADCSOC0CTL.bit.ACQPS = acqps; //sample window is 100 SYSCLK cycles
    AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 5; //trigger on ePWM1 SOCA/C

    AdcaRegs.ADCSOC1CTL.bit.CHSEL = 2;  //SOC1 will convert pin A2
    AdcaRegs.ADCSOC1CTL.bit.ACQPS = acqps; //sample window is 100 SYSCLK cycles
    AdcaRegs.ADCSOC1CTL.bit.TRIGSEL = 5; //trigger on ePWM1 SOCA/C

    AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 1; //end of SOC1 will set INT1 flag
    AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;   //enable INT1 flag
    AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; //make sure INT1 flag is cleared
    EDIS;

]
举报

冯敬宇

2020-7-24 12:41:29
正在做一个电压采集的项目,输入信号的共模信号,而28377S,16位ADC需要输入差分信号,我利用下图的方式将共模信号转换成差分信号,请教TI工程师,能否这样做。输入的共模信号是0—2.5V的直流信号,在输入之前已经做了滤波处理。ADC的采样时间是320ns,ADC时钟频率是40M。

Eric:
我认为这个电路有问题。
F2837X的16位ADC对外部的差分信号有比较严格的要求,你看看芯片手册里面关于16位ADC共模电压的要求。
需要满足 A0, A1 都在0~3.3V之间,另外,(A0+A1)/2 在任意时刻都在VREF/2 正负50mv以内。
推荐用THS4521的差分运放去做。                                                                          - ERIC
举报

冯敬宇

2020-7-24 12:55:59
引用: zzecom 发表于 2020-7-24 12:33
下面是我的ADC的配置,EPWM触发转换,触发频率25KHZ,现在有个问题是,在某个转换点的时候,ADC会有较大幅度的转换误差,就是跳动,在200左右,特别是在输入共模电压在1V一下和9V以上的时候。
测量了ADC的输入,除了电源产生得到噪声之外并没有发现毛刺和电压突变。
void ConfigureADC(void)

下面是我的ADC的配置,EPWM触发转换,触发频率25KHZ,现在有个问题是,在某个转换点的时候,ADC会有较大幅度的转换误差,就是跳动,在200左右,特别是在输入共模电压在1V一下和9V以上的时候。
测量了ADC的输入,除了电源产生得到噪声之外并没有发现毛刺和电压突变。

Eric:
先满足上面提到的硬件要求先。
至于软件,你参考controlSUITE例程就好。
另外,看看芯片的版本是C版本以上,量产的芯片。                                                                          - ERIC
举报

石根厚

2020-7-24 13:08:33
引用: guigui_7044 发表于 2020-7-24 12:55
下面是我的ADC的配置,EPWM触发转换,触发频率25KHZ,现在有个问题是,在某个转换点的时候,ADC会有较大幅度的转换误差,就是跳动,在200左右,特别是在输入共模电压在1V一下和9V以上的时候。
测量了ADC的输入,除了电源产生得到噪声之外并没有发现毛刺和电压突变。

我知道了,非常感谢您的回答。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分