AnsweredAssumed Answered

Kinetis K70 how to define single ended ADC pins

Question asked by christophe michiels on Jan 11, 2013
Latest reply on Apr 3, 2013 by Robert Lewis

Dear,

 

 

I use K70 Kinetis with MQX 3.8.1

 

I want to read the following adc channels in single ended mode :

 

PGA0DP_ADC0DP0_ADC1DP3 pin R1

PGA0DM_ADC0DM0_ADC1DM3 pin R2

PGA1DP_ADC1DP0_ADC0DP3 pin T1

PGA1DM_ADC1DM0_ADC0DM3 pin T2

 

ADC settings per channel :

 

const ADC_INIT_CHANNEL_STRUCT PP1 =

{

    ADC0_SOURCE_ADPM0,                                             /* physical ADC channel */

    ADC_CHANNEL_MEASURE_LOOP | ADC_CHANNEL_START_NOW,

    4,                                                            /* number of samples in one run sequence */

    0,                                                            /* time offset from trigger point in us */

    ADC_SAMPLING_PERIOD,                                         /* period in us */

    0,                                                              /* scale range of result (not used now) */

    4,                                                              /* circular buffer size (sample count) */

    ADC_PDB_TRIGGER,

    &evnWaitAdc,

    0x01

};

const ADC_INIT_CHANNEL_STRUCT PP2 =

{

    ADC0_SOURCE_ADPM1, /* physical ADC channel */

    ADC_CHANNEL_MEASURE_LOOP | ADC_CHANNEL_START_NOW,

    4,                /* number of samples in one run sequence */

    0,                /* time offset from trigger point in us */

    ADC_SAMPLING_PERIOD,         /* period in us */

    0,                  /* scale range of result (not used now) */

    4,                  /* circular buffer size (sample count) */

    ADC_PDB_TRIGGER,

    &evnWaitAdc,

    0x01

};

 

same for ADC0_SOURCE_ADPM2 and ADC0_SOURCE_ADPM3

 

I used the pin names as defines in adc_mk70.h :

 

#define ADC0_SOURCE_ADPM0       (ADC_SOURCE_MODULE(1) | ADC_SOURCE_MUXSEL_X | ADC_SOURCE_CHANNEL(0) | ADC_SOURCE_DIFF)

#define ADC0_SOURCE_ADPM1       (ADC_SOURCE_MODULE(1) | ADC_SOURCE_MUXSEL_X | ADC_SOURCE_CHANNEL(1) | ADC_SOURCE_DIFF)

#define ADC0_SOURCE_ADPM2       (ADC_SOURCE_MODULE(1) | ADC_SOURCE_MUXSEL_X | ADC_SOURCE_CHANNEL(2) | ADC_SOURCE_DIFF)

#define ADC0_SOURCE_ADPM3       (ADC_SOURCE_MODULE(1) | ADC_SOURCE_MUXSEL_X | ADC_SOURCE_CHANNEL(3) | ADC_SOURCE_DIFF)

 

I use 12 bit resolution :

 

const ADC_INIT_STRUCT adc_init = {

        ADC_RESOLUTION_12BIT,                                                     // 12 bit resolution

};

 

 

If I read these channels, it seems that they are in differential mode ??? I get readings (High = 3.3V) in the range of 65535 (16bit) instead of 12 bit 4096 range ??

I suspect that these channels are per default defined as differential pins ??

 

My first question, how can I set these pins in single ended mode ?

Possible in the mqx adc way? Or should I set this with direct registers?

 

My second question :

 

Is it correct to assume that

 

PGA0DP_ADC0DP0_ADC1DP3 pin R1 corresponds with #define ADC0_SOURCE_ADPM0 

PGA0DM_ADC0DM0_ADC1DM3 pin R2 corresponds with #define ADC0_SOURCE_ADPM1

PGA1DP_ADC1DP0_ADC0DP3 pin T1 corresponds with #define ADC0_SOURCE_ADPM2

PGA1DM_ADC1DM0_ADC0DM3 pin T2 corresponds with #define ADC0_SOURCE_ADPM3

 

This is only a guess, I can not find a direct link(proof) in the manuals.

 

 

Anyone can help me with one of my questions ?

 

Many thanks in advance

 

 

Regards,

Michris

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Outcomes