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

cc1310不带操作系统的低功耗

将adc采集到的值,通过rf发送出去,发送完进入低功耗,但是发现adc的外设关闭不了,通过sleep进入低功耗时,测得电流为0.3ma,把adc通道上的硬件去掉就得到电流为7微安,想问下怎么才能把在adc采集完数据后把adc外设关闭,从而达到低功耗

Susan Yang:

SDK有相关的ADC的例程,您可以参考一下

dev.ti.com/…/node

能否给出您的相关代码?

另外您是否有使用Sensor Controller Studio?

user6197252:

回复 Susan Yang:

没有使用Sensor Controller Studio,部分代码如下:

//adcbuf初始化
int AD_init(void)
{//ADCBuf_Params adcBufParams;
ADCBuf_init();
/* Set up an ADCBuf peripheral in ADCBuf_RECURRENCE_MODE_CONTINUOUS */ADCBuf_Params_init(&adcBufParams);adcBufParams.callbackFxn = NULL;adcBufParams.recurrenceMode = ADCBuf_RECURRENCE_MODE_ONE_SHOT;adcBufParams.returnMode = ADCBuf_RETURN_MODE_BLOCKING;adcBufParams.samplingFrequency = 100 * 1000; //100 kHz;adcBuf = ADCBuf_open(Board_ADCBUF0, &adcBufParams);
if (adcBuf == NULL){/* ADCBuf failed to open. */while (1);}
return 0;
}
//读adc转换值
int AD_Read(int channel)
{
adcBuf = ADCBuf_open(Board_ADCBUF0, &adcBufParams);//打开adcbufif(adcBuf){ADCBuf_Conversion continuousConversion;uint16_t i;uint32_t value = 0;
/* Configure the conversion struct */continuousConversion.arg = NULL;continuousConversion.adcChannel = channel;continuousConversion.sampleBuffer = sampleBufferOne;continuousConversion.sampleBufferTwo = sampleBufferTwo;continuousConversion.samplesRequestedCount = ADCBUFFERSIZE;
/* Start converting. */if (ADCBuf_convert(adcBuf, &continuousConversion, 1) == ADCBuf_STATUS_SUCCESS){/* Adjust raw ADC values and convert them to microvolts */ADCBuf_adjustRawValues(adcBuf, &continuousConversion, ADCBUFFERSIZE,channel);ADCBuf_convertAdjustedToMicroVolts(adcBuf, channel,sampleBufferOne, microVoltBuffer, ADCBUFFERSIZE);
for (i = 0; i < ADCBUFFERSIZE; i++){value += microVoltBuffer[i];}
value /= ADCBUFFERSIZE;}ADCBuf_close(adcBuf);//关闭adcbufreturn value;
}return -1;
}

int main(void)
{int adc_sense;int adc_power;
/*电源初始化*/Power_init();NoRTOS_start(); /*IO脚初始化*/IO_init();DOG_init();FLASH_init()USART_init();AD_init();
DOG_start(260 * 1000);RFTX_init(); TIMER_init();TIMER_start(1); while (1){//转换AD值adc_sense = AD_Read(CC1310_LAUNCHXL_ADCBUF0CHANNEL0);adc_power = AD_Read(CC1310_LAUNCHXL_ADCBUF0CHANNELVDDS);
//发送数据RFTX_send_sense_value(adc_sense, adc_power);IO_close();ADCBuf_close(adcBuf);//调用这个之后,测得电流0.3毫安,USART_close();TIMER_close();
sleep(15);//测低功耗SysCtrlSystemReset();DOG_clear(); }
}

ADCBuf_close(adcBuf);//调用这个之后,测得电流0.3毫安,如果把外接adc采样的电路去掉,才可以达到7微安,说明ADCBuf_close(adcBuf);并没有把adcBuf关闭从而进入低功耗,我现在想了解下,怎么让adcbuf采集完数据,进入低功耗状态

Susan Yang:

回复 user6197252:

ADCBuf driver 使用的是定时器 CC1310_LAUNCHXL_GPTIMER0A,您现在是否除了ADC外还有其他外设使用这个定时器?

另外参考

software-dl.ti.com/…/_a_d_c_buf_8h.html

在ADCBuf_RECURRENCE_MODE_CONTINUOUS中,应用程序必须首先调用ADCBuf_convertCancel()然后才调用ADCBuf_close

赞(0)
未经允许不得转载:TI中文支持网 » cc1310不带操作系统的低功耗
分享到: 更多 (0)