Exemple #1
0
int acq_GetDataV2(uint32_t pos, uint32_t* size, float* buffer1, float* buffer2)
{
    *size = MIN(*size, ADC_BUFFER_SIZE);

    float gainV1, gainV2;
    rp_pinState_t gain1, gain2;
    ECHECK(acq_GetGainV(RP_CH_1, &gainV1));
    ECHECK(acq_GetGain(RP_CH_1, &gain1));
    ECHECK(acq_GetGainV(RP_CH_2, &gainV2));
    ECHECK(acq_GetGain(RP_CH_2, &gain2));

    rp_calib_params_t calib = calib_GetParams();
    int32_t dc_offs1 = calib.fe_ch1_dc_offs;
    uint32_t calibScale1 = calib_GetFrontEndScale(RP_CH_1, gain1);

    int32_t dc_offs2 = calib.fe_ch2_dc_offs;
    uint32_t calibScale2 = calib_GetFrontEndScale(RP_CH_2, gain2);

    const volatile uint32_t* raw_buffer1 = getRawBuffer(RP_CH_1);
    const volatile uint32_t* raw_buffer2 = getRawBuffer(RP_CH_2);

    uint32_t cnts1[*size];
    uint32_t cnts2[*size];
    uint32_t* ptr1 = cnts1;
    uint32_t* ptr2 = cnts2;

    for (uint32_t i = 0; i < (*size); ++i) {
        *ptr1++ = raw_buffer1[pos];
        *ptr2++ = raw_buffer2[pos];
        pos = (pos + 1) % ADC_BUFFER_SIZE;
    }

    ptr1 = cnts1;
    ptr2 = cnts2;

    for (uint32_t i = 0; i < (*size); ++i) {
        *buffer1++ = cmn_CnvCntToV(ADC_BITS, *ptr1++, gainV1, calibScale1, dc_offs1, 0.0);
        *buffer2++ = cmn_CnvCntToV(ADC_BITS, *ptr2++, gainV2, calibScale2, dc_offs2, 0.0);
    }

    return RP_OK;
}
Exemple #2
0
int acq_GetDataV(rp_channel_t channel,  uint32_t pos, uint32_t* size, float* buffer)
{
    *size = MIN(*size, ADC_BUFFER_SIZE);

    float gainV;
    rp_pinState_t gain;
    ECHECK(acq_GetGainV(channel, &gainV));
    ECHECK(acq_GetGain(channel, &gain));

    rp_calib_params_t calib = calib_GetParams();
    int32_t dc_offs = (channel == RP_CH_1 ? calib.fe_ch1_dc_offs : calib.fe_ch2_dc_offs);
    uint32_t calibScale = calib_GetFrontEndScale(channel, gain);

    const volatile uint32_t* raw_buffer = getRawBuffer(channel);

    uint32_t cnts;
    for (uint32_t i = 0; i < (*size); ++i) {
        cnts = raw_buffer[(pos + i) % ADC_BUFFER_SIZE];
        buffer[i] = cmn_CnvCntToV(ADC_BITS, cnts, gainV, calibScale, dc_offs, 0.0);
    }

    return RP_OK;
}
Exemple #3
0
int acq_GetChannelThresholdHyst(rp_channel_t channel, float* voltage)
{
    float gainV;
    rp_pinState_t gain;
    uint32_t cnts;

    if (channel == RP_CH_1) {
        ECHECK(osc_GetHysteresisChA(&cnts));
    }
    else {
        ECHECK(osc_GetHysteresisChB(&cnts));
    }

    ECHECK(acq_GetGainV(channel, &gainV));
    ECHECK(acq_GetGain(channel, &gain));

    rp_calib_params_t calib = calib_GetParams();
    int32_t dc_offs = (channel == RP_CH_1 ? calib.fe_ch1_dc_offs : calib.fe_ch2_dc_offs);
    uint32_t calibScale = calib_GetFrontEndScale(channel, gain);

    *voltage = cmn_CnvCntToV(ADC_BITS, cnts, gainV, calibScale, dc_offs, 0.0);

    return RP_OK;
}
Exemple #4
0
int acq_GetChannelThresholdHyst(rp_channel_t channel, float* voltage)
{
    float gainV;
    rp_pinState_t gain;
    uint32_t cnts;

    if (channel == RP_CH_1) {
        osc_GetHysteresisChA(&cnts);
    }
    else {
        osc_GetHysteresisChB(&cnts);
    }

    acq_GetGainV(channel, &gainV);
    acq_GetGain(channel, &gain);

    rp_calib_params_t calib = calib_GetParams();
    int32_t dc_offs = GET_OFFSET(channel, gain, calib);
    uint32_t calibScale = calib_GetFrontEndScale(channel, gain);

    *voltage = cmn_CnvCntToV(ADC_BITS, cnts, gainV, calibScale, dc_offs, 0.0);

    return RP_OK;
}