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.

CC2640R2F ADC采样点数的配置

Other Parts Discussed in Thread: CC2640R2F

#include <airturbo/blower/blower_adc.h>

//#define ADCBUFFERSIZE    500

ADCBuf_Handle adcbuf;
ADCBuf_Conversion conversion = {0};

uint16_t sampleBufferOne[ADCBUFFERSIZE];
//uint16_t sampleBufferTwo[ADCBUFFERSIZE];
uint32_t microvoltBuffer[ADCBUFFERSIZE];

//uint32_t buffersCompletedCounter = 0;

// ADCBuf callback function
void adcBufCallbackFxn(ADCBuf_Handle handle, ADCBuf_Conversion *conversion,
                       void *buffer, uint32_t channel);
extern void adcbuf_init(void)
{



    ADCBuf_Params params;
    ADCBufCC26XX_ParamsExtension customParams;
    ADCBuf_init();
    ADCBuf_Params_init(&params);
    params.returnMode = ADCBuf_RETURN_MODE_CALLBACK;
    params.recurrenceMode = ADCBuf_RECURRENCE_MODE_ONE_SHOT;

    params.callbackFxn = adcBufCallbackFxn;
    params.samplingFrequency = 100000;

    customParams.samplingDuration    = ADCBufCC26XX_SAMPLING_DURATION_2P7_US;
    customParams.refSource           = ADCBufCC26XX_FIXED_REFERENCE;
    customParams.samplingMode        = ADCBufCC26XX_SAMPING_MODE_SYNCHRONOUS;
    customParams.inputScalingEnabled = true;
    params.custom = &customParams;
    adcbuf = ADCBuf_open(Board_ADCBUF0, &params);

    conversion.adcChannel = Board_ADCBUF0CHANNEL7;
    conversion.sampleBuffer = sampleBufferOne;
    //conversion.sampleBufferTwo = sampleBufferTwo;
    conversion.samplesRequestedCount = ADCBUFFERSIZE;




}

extern void adcbuf_convert(void)
{
    if (ADCBuf_convert(adcbuf, &conversion, 1) != ADCBuf_STATUS_SUCCESS)
    {
        // ADCBuf_convert() failed
    }
}

extern void adcbuf_convertCancel(void)
{
    if (ADCBuf_convertCancel(adcbuf)!= ADCBuf_STATUS_SUCCESS)
        {
            // ADCBuf_convert() failed
        }

}

void adcBufCallbackFxn(ADCBuf_Handle handle, ADCBuf_Conversion *conversion,
    void *buffer, uint32_t channel)
{
    //malloc();
    // Adjust raw ADC values and convert them to microvolts
    ADCBuf_adjustRawValues(handle, buffer, ADCBUFFERSIZE,
        channel);
    ADCBuf_convertAdjustedToMicroVolts(handle, channel,
        buffer, microvoltBuffer, ADCBUFFERSIZE);

   /* for(int i = 0; i < ADCBUFFERSIZE ; i++)
    {
        Log_info2("microvoltBuffer[%d]:%u ",
                  i,(unsigned int)microvoltBuffer[i]);
    }*/
    Log_info0("ADC DONE");
}

我根据CC2640R2F的官方例程编写了ADC连续采样的代码,我的要求是在5ms内采500个信号,ADC的采样频率设置为100000,缓冲区的信号个数为500,编译成功系统可以运行,但蓝牙掉线,当我将采集个数改成300后,系统和蓝牙都可以正常运行,有没有办法能够既能够让蓝牙正常运行,系统也能正常运行