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.

MSP432P401R ADC14 issues

Other Parts Discussed in Thread: REF2030

Hello!


I try new LaunchPad, based on MSP432P401R. Actually, I'm interested in it's 14 bits ADC module. I tried to use this module with external reference voltage source.

For this purpose I took an software example from MSP432 DriverLib - v2_20_00_08, which called "adc14_single_channel_external_reference".

By using jumper wires I've connected VeREF+(P5.6) to 3.3V and VeREF-(P5.7) to GND.

By connecting an A0 input(P5.5) to GND I expected to see values about zeroes in ADCResult register. But I was surprised when I saw

values about 8323 (2083 hex).

Then I've connected A0 input(P5.5) to 3.3V with expecting to see values about 2^14 - 1 = 16383 (3FFF hex). But I've got about 16343 (3FD7 hex).

Almost the same results I've got by using REF2030 as an external reference voltage source.

Then, by trying to find the answer in the datasheet on 432 family, I found an interesting equation for LSB in differential mode:

And it seems, that in diff mode ADC works with 13-bit resolution. ( 2^13 = 8192)

My connections on LP(for measuring) are implemented like this:

So, I have two questions:

1. Whats wrong with external reference voltage mode on MSP432 LaunchPad?

2. Does ADC module in differential mode work only with 13-bits resolution?

  • Hi!

    I did not have a look at the manual for the MSP432 now and I do not know it's operational behaviour in differential mode, but for a differential ADC in general you often have an input of +/-VREF. So this is twice your reference voltage range. Of course -VREF doesn't mean you can feed in a negative voltage, but the voltage at IN+ can be more negative than the one at IN-.

    Here is an example:

    Let's say VREF is 3V - the ADC has 14 bits in total. If you now have a possible input span of +/-VREF you can have

    • IN+ (or A0) at 3V and IN- (or A1) at 0V: Maximum positive output of 16383d.
    • IN+ (or A0) == IN- (or A1): Midscale of 8192d.
    • IN+ (or A0) at 0V and IN- (or A1) at 3V: Maximum negative output of 0d.

    That is a virtual input voltage range of 2*VREF, so 6V in this case, which is represented as 0d to 16383d (14 bits) and therefore

    6V / 14 bits = 1LSB

    OR

    3V / 13 bits = 1LSB OR VREF / 13 bits = 1 LSB OR (VR+ - VR-) / 13 bits = 1 LSB

    But as I said, I would have to look into the manual to say that this is the same for the MSP432 in differential mode. At the moment I don't know. And the external reference voltage mode of the MSP432 normally works fine - I have running it with an external reference, too.

    Dennis

  • So, this misunderstanding of ADC result values is also resolved.

    The project "adc14_single_channel_external_reference" uses inputs of ADC A0 and A1 in differential mode. This wasn't specified in header of adc14_single_conversion_repeat.c file, but I could see this in ADC setup DriverLib function - "true" parameter was used:

    ADC14_configureConversionMemory(ADC_MEM0, ADC_VREFPOS_EXTPOS_VREFNEG_EXTNEG, ADC_INPUT_A0, true);

    So, to get the correct result I had to connect pin P5.4(A1 input) of LaunchPad either to GND or 3.3V, instead of lefting it floating.

     

  • Dennis, you are totally right. Thank you for explanation!

**Attention** This is a public forum