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.

RTOS/CC2650: ADC configuration on CC2650 5XD

Part Number: CC2650

Tool/software: TI-RTOS

Is it possible to use the CC2650 Lauchpad (7xd) board.h, CC2650_LAUNCHXL.c/.h files to make ADC work on the CC26505xd? 

I looked at the CC2650 5XD board files provided by TI in the TI directory but, they do not include the ADC setup. 

Im trying to use IDIO_8 and IDIO_9. I tried remapping as the other used did below in the link. No luck...

I found a previous locked thread that is identical to what i'm trying to do but it doesn't contain and answer -> 

e2e.ti.com/.../738937

  • Yes, it's no problem to use ADC on 5x5 chip. You can modify ADC pins (DIO7 to DIO14) to board file to make it work.
  • Hi thank you for the fast response. I have done as you suggested but, not having much luck. I can't seem to figure out where in the LuanchPadxl board files the adc gpio pins are enabled for adc. I didn't want to add to the PIN_CONFIG BOardGpioInitTable[] if they are declared somewhere else. 

    Any feedback is appreciated. 

    Thanks much! 

  • Hi thank you for the fast response. I have done as you suggested but, not having much luck. I can't seem to figure out where in the LuanchPadxl board files the adc gpio pins are enabled for adc. I didn't want to add to the PIN_CONFIG BOardGpioInitTable[] if they are declared somewhere else.

    Update: I think I see them initialized in ADCCC26xx.c. So I'm not sure where else to investigate to setup adc properly. So far I have done the following ->

    1. CC2650_LAUNCHXL.h ->

    #define Board_DIO7_ANALOG IOID_UNUSED
    #define Board_DIO8_ANALOG IOID_8
    #define Board_DIO9_ANALOG IOID_9
    #define Board_DIO10_ANALOG IOID_UNUSED//IOID_23
    #define Board_DIO11_ANALOG IOID_UNUSED//IOID_24
    #define Board_DIO12_ANALOG IOID_UNUSED//IOID_25
    #define Board_DIO13_ANALOG IOID_UNUSED//IOID_26
    #define Board_DIO14_ANALOG IOID_UNUSED//IOID_27
    #define Board_DIO28_ANALOG IOID_UNUSED//IOID_28
    #define Board_DIO29_ANALOG IOID_UNUSED//IOID_29
    #define Board_DIO30_ANALOG IOID_UNUSED//IOID_30
    ....
    typedef enum CC2650_LAUNCHXL_ADCName {
    CC2650_LAUNCHXL_ADC0 = 0,
    CC2650_LAUNCHXL_ADC1,
    CC2650_LAUNCHXL_ADC2,
    CC2650_LAUNCHXL_ADC3,
    CC2650_LAUNCHXL_ADC4,
    CC2650_LAUNCHXL_ADC5,
    CC2650_LAUNCHXL_ADC6,
    CC2650_LAUNCHXL_ADC7,
    CC2650_LAUNCHXL_ADCDCOUPL,
    CC2650_LAUNCHXL_ADCVSS,
    CC2650_LAUNCHXL_ADCVDDS,
    CC2650_LAUNCHXL_ADCCOUNT
    } CC2650_LAUNCHXL_ADCName;



    2. CC2650_LAUNCHXL.c ->


    /* ADCBuf objects */
    ADCBufCC26XX_Object adcBufCC26xxObjects[CC2650_LAUNCHXL_ADCBufCOUNT];

    const ADCBufCC26XX_AdcChannelLutEntry ADCBufCC26XX_adcChannelLut[] = {

    // {Board_DIO7_ANALOG, ADC_COMPB_IN_AUXIO7},
    {Board_DIO8_ANALOG, ADC_COMPB_IN_AUXIO6},
    {Board_DIO9_ANALOG, ADC_COMPB_IN_AUXIO5},
    // {Board_DIO10_ANALOG, ADC_COMPB_IN_AUXIO4},
    // {Board_DIO11_ANALOG, ADC_COMPB_IN_AUXIO3},
    // {Board_DIO12_ANALOG, ADC_COMPB_IN_AUXIO2},
    // {Board_DIO13_ANALOG, ADC_COMPB_IN_AUXIO1},
    // {Board_DIO14_ANALOG, ADC_COMPB_IN_AUXIO0},
    // {PIN_UNASSIGNED, ADC_COMPB_IN_VDDS},
    // {PIN_UNASSIGNED, ADC_COMPB_IN_DCOUPL},
    // {PIN_UNASSIGNED, ADC_COMPB_IN_VSS},
    };

    ....

    /* ADC objects */
    ADCCC26XX_Object adcCC26xxObjects[CC2650_LAUNCHXL_ADCCOUNT];


    const ADCCC26XX_HWAttrs adcCC26xxHWAttrs[CC2650_LAUNCHXL_ADCCOUNT] = {
    {
    .adcDIO = PIN_UNASSIGNED,
    .adcCompBInput = ADC_COMPB_IN_AUXIO7,
    .refSource = ADCCC26XX_FIXED_REFERENCE,
    .samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
    .inputScalingEnabled = true,
    .triggerSource = ADCCC26XX_TRIGGER_MANUAL
    },
    {
    .adcDIO = Board_DIO8_ANALOG,
    .adcCompBInput = ADC_COMPB_IN_AUXIO6,
    .refSource = ADCCC26XX_FIXED_REFERENCE,
    .samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
    .inputScalingEnabled = true,
    .triggerSource = ADCCC26XX_TRIGGER_MANUAL
    },
    {
    .adcDIO = Board_DIO9_ANALOG,
    .adcCompBInput = ADC_COMPB_IN_AUXIO5,
    .refSource = ADCCC26XX_FIXED_REFERENCE,
    .samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
    .inputScalingEnabled = true,
    .triggerSource = ADCCC26XX_TRIGGER_MANUAL
    },
    {
    .adcDIO = PIN_UNASSIGNED,
    .adcCompBInput = ADC_COMPB_IN_AUXIO4,
    .refSource = ADCCC26XX_FIXED_REFERENCE,
    .samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
    .inputScalingEnabled = true,
    .triggerSource = ADCCC26XX_TRIGGER_MANUAL
    } ....

    3. Board.h

    #define Board_Adc_x CC2650_LAUNCHXL_ADC1
    #define Board_Adc_y CC2650_LAUNCHXL_ADC2
    ...


    Any feedback is appreciated.

    Thanks much!
  • In CC2650_LAUNCHXL.c

    const ADCBufCC26XX_AdcChannelLutEntry ADCBufCC26XX_adcChannelLut[] = {
        {PIN_UNASSIGNED, ADC_COMPB_IN_VDDS},
        {PIN_UNASSIGNED, ADC_COMPB_IN_DCOUPL},
        {PIN_UNASSIGNED, ADC_COMPB_IN_VSS},
        {Board_DIO07_ANALOG, ADC_COMPB_IN_AUXIO7},
        {Board_DIO08_ANALOG, ADC_COMPB_IN_AUXIO6},
        {Board_DIO09_ANALOG, ADC_COMPB_IN_AUXIO5},
        {Board_DIO10_ANALOG, ADC_COMPB_IN_AUXIO4},
        {Board_DIO11_ANALOG, ADC_COMPB_IN_AUXIO3},
        {Board_DIO12_ANALOG, ADC_COMPB_IN_AUXIO2},
        {Board_DIO13_ANALOG, ADC_COMPB_IN_AUXIO1},
        {Board_DIO14_ANALOG, ADC_COMPB_IN_AUXIO0},
    };

    const ADCCC26XX_HWAttrs adcCC26xxHWAttrs[CC2650_LAUNCHXL_ADCCOUNT] = {
        {
            .adcDIO = Board_DIO07_ANALOG,
            .adcCompBInput = ADC_COMPB_IN_AUXIO7,
            .refSource = ADCCC26XX_FIXED_REFERENCE,
            .samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
            .inputScalingEnabled = true,
            .triggerSource = ADCCC26XX_TRIGGER_MANUAL
        },
        {
            .adcDIO = Board_DIO08_ANALOG,
            .adcCompBInput = ADC_COMPB_IN_AUXIO6,
            .refSource = ADCCC26XX_FIXED_REFERENCE,
            .samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
            .inputScalingEnabled = true,
            .triggerSource = ADCCC26XX_TRIGGER_MANUAL
        },
        {
            .adcDIO = Board_DIO09_ANALOG,
            .adcCompBInput = ADC_COMPB_IN_AUXIO5,
            .refSource = ADCCC26XX_FIXED_REFERENCE,
            .samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
            .inputScalingEnabled = true,
            .triggerSource = ADCCC26XX_TRIGGER_MANUAL
        },
        {
            .adcDIO = Board_DIO10_ANALOG,
            .adcCompBInput = ADC_COMPB_IN_AUXIO4,
            .refSource = ADCCC26XX_FIXED_REFERENCE,
            .samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
            .inputScalingEnabled = true,
            .triggerSource = ADCCC26XX_TRIGGER_MANUAL
        },
        {
            .adcDIO = Board_DIO11_ANALOG,
            .adcCompBInput = ADC_COMPB_IN_AUXIO3,
            .refSource = ADCCC26XX_FIXED_REFERENCE,
            .samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
            .inputScalingEnabled = true,
            .triggerSource = ADCCC26XX_TRIGGER_MANUAL
        },
        {
            .adcDIO = Board_DIO12_ANALOG,
            .adcCompBInput = ADC_COMPB_IN_AUXIO2,
            .refSource = ADCCC26XX_FIXED_REFERENCE,
            .samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
            .inputScalingEnabled = true,
            .triggerSource = ADCCC26XX_TRIGGER_MANUAL
        },
        {
            .adcDIO = Board_DIO13_ANALOG,
            .adcCompBInput = ADC_COMPB_IN_AUXIO1,
            .refSource = ADCCC26XX_FIXED_REFERENCE,
            .samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
            .inputScalingEnabled = true,
            .triggerSource = ADCCC26XX_TRIGGER_MANUAL
        },
        {
            .adcDIO = Board_DIO14_ANALOG,
            .adcCompBInput = ADC_COMPB_IN_AUXIO0,
            .refSource = ADCCC26XX_FIXED_REFERENCE,
            .samplingDuration = ADCCC26XX_SAMPLING_DURATION_10P9_MS,
            .inputScalingEnabled = true,
            .triggerSource = ADCCC26XX_TRIGGER_MANUAL
        },
        {
            .adcDIO = PIN_UNASSIGNED,
            .adcCompBInput = ADC_COMPB_IN_DCOUPL,
            .refSource = ADCCC26XX_FIXED_REFERENCE,
            .samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
            .inputScalingEnabled = true,
            .triggerSource = ADCCC26XX_TRIGGER_MANUAL
        },
        {
            .adcDIO = PIN_UNASSIGNED,
            .adcCompBInput = ADC_COMPB_IN_VSS,
            .refSource = ADCCC26XX_FIXED_REFERENCE,
            .samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
            .inputScalingEnabled = true,
            .triggerSource = ADCCC26XX_TRIGGER_MANUAL
        },
        {
            .adcDIO = PIN_UNASSIGNED,
            .adcCompBInput = ADC_COMPB_IN_VDDS,
            .refSource = ADCCC26XX_FIXED_REFERENCE,
            .samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
            .inputScalingEnabled = true,
            .triggerSource = ADCCC26XX_TRIGGER_MANUAL
        }
    };

    In CC2650_LAUNCHXL.
    #define Board_DIO07_ANALOG          IOID_7
    #define Board_DIO08_ANALOG          IOID_8
    #define Board_DIO09_ANALOG          IOID_9
    #define Board_DIO10_ANALOG          IOID_10
    #define Board_DIO11_ANALOG          IOID_11
    #define Board_DIO12_ANALOG          IOID_12
    #define Board_DIO13_ANALOG          IOID_13
    #define Board_DIO14_ANALOG          IOID_14

    In Board.h
    #define     Board_ADC0              CC2650_LAUNCHXL_ADC0

    Then, you should be able to use "adc = ADC_open(Board_ADC0, &params)" to open ADC on DIO_7 and use "ADC_convert(adc, &adcValue0)" to do ADC reading from DIO_7.

  • Thank you, It ended up being a hardware issue that was causing me to not notice that ADC was working. Thank you again.