This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PCM1864: How to calculate DC voltage from Secondary ADC value

Part Number: PCM1864

Tool/software:

Hi,

Could you tell me how how to calculate DC voltage from PCM1864's Secondary ADC value.

I want to get DC voltage from VINL1 input pin.

AUXADC_DATA_CTRL register(Register 88) was written value  0xF0.

Secondary ADC Input Channel register(Register 10) was written value 0x01.

Then I could get some values from ADCAUX_DATA register (Register 89,90) as blow.

ADCAUX_MSB: 0xA7, ADCAUX_LSB:B9,  VINL1 input voltage: 0.963V

ADCAUX_MSB: 0x8e, ADCAUX_LSB:95,  VINL1 input voltage: 0.458V

DC voltage = ADC Value/32768 × 4.3V

The actual voltage does not match the value calculated by the above formula.

 Let me know how to calculate it correctly.

  • Hi Shinji,

    The DC voltage can be read in the SIGDET_DC_LEVEL_CHx registers and you can cross check the difference between this level and the reference point in SIGDET_DC_DIFF_CHx register. No need to calculate a voltage reading.

  • Hi, Daveon.

    Thank you for your support.

    I could get ADCAUX values and SIGDET_DC_LEVEL_CHx values shown blow.

    ADCAUX value I couldn't measure under 0.1V.

    Input voltage

    ADCAUX value

    (hex)

    ADCAUX value

    (decimal)

    SIGDET_DC_LEVEL_CH1L value

    (hex)

    3.00 0xCC9 3273 0x8C
    2.50 0xF3EE -3090 0x74
    2.00 0xDB25 -9435 0x5B
    1.50 0xC265 -15771 0x42
    1.00 0xA99F -22113 0x29
    0.50 0x90B8 -28488 0x10
    0.20 0x81B0 -32336 0x01
    0.10 0x8000 -32768 0x00
    0.00 0x8000 -32768 0x00

    Next, I configured the LPF coefficient register to avoid the influence of the LPF.

    LPF_B0 register value: 0x800000

    LPF_B1 register value: 0x000000

    LPF_B2 register value: 0x000000

    LPF_A1 register value: 0x000000

    LPF_A2:register value: 0x000000

    Then I could get values shown blow.

    I could convert each value to voltage(0.1mV per ADCAUX value or 20mV per SIGDET_DC_LEVEL_CH1L value)

    Input voltage

    ADCAUX value

    (hex)

    ADCAUX value

    (decimal)

    SIGDET_DC_LEVEL_CH1L value

    (hex)

    3.00

    0xF5E8

    -2584

    0x75

    2.50

    0x974

    2420

    0x89

    2.00

    0x1CF4

    7412

    0x9C

    1.50

    0x3070

    12400

    0xB0

    1.00

    0x43E8

    17384

    0xC4

    0.50 0x5798 22424 0xD7
    0.20 0x6340 25408 0xE2
    0.10 0x6718 26392 0xE6
    0.00 0x6B24 27428 0xEA