TI中文支持网
TI专业的中文技术问题搜集分享网站

CC1310开启多个adc的方法?

我想开启多个adc。

1、在不使用sce的情况下,必须建立多个线程任务,每个线程任务都开启一个adc任务?

2、那么在使用sce的情况下,也是开启多个任务?

3、使用多个adc的时候,我不想连续测试,又想功耗很低,需要采集的时候才采集,那么我应该用哪个好?

我下面写的程序可行吗?

#include "adc.h"
#include <ti/drivers/ADC.h>

ADC_Paramsparams;
ADC_Handleadc23,adc24,adc25,adc26,adc27,adc28,adc29,adc30;

void ADC_Init(void)
{ADC_init();ADC_Params_init(&params);
}

uint16_t ADC23_Convert(void)
{int_fast16_t res= 0;uint16_tadcValue = 0;adc23 = ADC_open(CC1310_LAUNCHXL_ADC0, &params);res= ADC_convert(adc23, &adcValue);ADC_close(adc23);if (res == ADC_STATUS_SUCCESS){if(adcValue < 1) adcValue=1;//避开0,这样就知道是不是转换成功了return adcValue;}else{return 0;}
}

uint16_t ADC24_Convert(void)
{int_fast16_t res= 0;uint16_tadcValue = 0;adc24 = ADC_open(CC1310_LAUNCHXL_ADC1, &params);res= ADC_convert(adc24, &adcValue);ADC_close(adc24);if (res == ADC_STATUS_SUCCESS){if(adcValue < 1) adcValue=1;//避开0,这样就知道是不是转换成功了return adcValue;}else{return 0;}
}

uint16_t ADC25_Convert(void)
{int_fast16_t res= 0;uint16_tadcValue = 0;adc25 = ADC_open(CC1310_LAUNCHXL_ADC2, &params);res= ADC_convert(adc25, &adcValue);ADC_close(adc25);if (res == ADC_STATUS_SUCCESS){if(adcValue < 1) adcValue=1;//避开0,这样就知道是不是转换成功了return adcValue;}else{return 0;}
}

uint16_t ADC26_Convert(void)
{int_fast16_t res= 0;uint16_tadcValue = 0;adc26 = ADC_open(CC1310_LAUNCHXL_ADC3, &params);res= ADC_convert(adc26, &adcValue);ADC_close(adc26);if (res == ADC_STATUS_SUCCESS){if(adcValue < 1) adcValue=1;//避开0,这样就知道是不是转换成功了return adcValue;}else{return 0;}
}

uint16_t ADC27_Convert(void)
{int_fast16_t res= 0;uint16_tadcValue = 0;adc27 = ADC_open(CC1310_LAUNCHXL_ADC4, &params);res= ADC_convert(adc27, &adcValue);ADC_close(adc27);if (res == ADC_STATUS_SUCCESS){if(adcValue < 1) adcValue=1;//避开0,这样就知道是不是转换成功了return adcValue;}else{return 0;}
}

uint16_t ADC28_Convert(void)
{int_fast16_t res= 0;uint16_tadcValue = 0;adc28 = ADC_open(CC1310_LAUNCHXL_ADC5, &params);res= ADC_convert(adc28, &adcValue);ADC_close(adc28);if (res == ADC_STATUS_SUCCESS){if(adcValue < 1) adcValue=1;//避开0,这样就知道是不是转换成功了return adcValue;}else{return 0;}
}

uint16_t ADC29_Convert(void)
{int_fast16_t res= 0;uint16_tadcValue = 0;adc29 = ADC_open(CC1310_LAUNCHXL_ADC6, &params);res= ADC_convert(adc29, &adcValue);ADC_close(adc29);if (res == ADC_STATUS_SUCCESS){if(adcValue < 1) adcValue=1;//避开0,这样就知道是不是转换成功了return adcValue;}else{return 0;}
}

uint16_t ADC30_Convert(void)
{int_fast16_t res= 0;uint16_tadcValue = 0;adc30 = ADC_open(CC1310_LAUNCHXL_ADC7, &params);res= ADC_convert(adc30, &adcValue);ADC_close(adc30);if (res == ADC_STATUS_SUCCESS){if(adcValue < 1) adcValue=1;//避开0,这样就知道是不是转换成功了return adcValue;}else{return 0;}
}





Viki Shi:

需要开启多个任务,采用ADC的不同通道。CC1310的ADC最多支持8个通道,但是每次只能采样一个

user4988634:

回复 Viki Shi:

你好,Viki Shi:

        谢谢你的回答。

uint16_t value0=0,value1=0;value0 = ADC23_Convert();
value1 = ADC24_Convert();

我没有创建多个任务,这样调用上面的函数也能正常采集adc,我这样写可以吗?有什么弊端吗?

赞(0)
未经允许不得转载:TI中文支持网 » CC1310开启多个adc的方法?
分享到: 更多 (0)