CN / EN
CN / EN

GR5513蓝牙状态下ADC电压测量异常问题分析 GR551x

199***514

2025-12-13 11:55

为什么下面这段代码,没有蓝牙时在GR5513上可以量出1.6V,在蓝牙时却只有1.2V ?

void adc_single(void)

{

uint16_t ret = APP_DRV_SUCCESS;


/* Please initialize DMA in the following order. */

/* Note: Initialization is not allowed during the transmission process. */

ret = app_adc_init(&adc_params, app_adc_evt_handler);

if (ret != APP_DRV_SUCCESS)

{

printf("\r\nADC initial failed! Please check the input parameters.\r\n");

return;

}

ret = app_adc_dma_init(&adc_params);

if (ret != APP_DRV_SUCCESS)

{

printf("\r\nADC initial dma failed! Please check the input parameters.\r\n");

return;

}


memset(conversion, 0, sizeof(conversion));


printf("Start single sampling.\r\n");

covn_done = 0;

app_adc_dma_conversion_async(conversion, TEST_CONV_LENGTH);

while(covn_done == 0);


app_adc_voltage_intern(conversion, voltage, TEST_CONV_LENGTH);

printf("Conversion value:\r\n");

for(uint32_t i = 0; i < TEST_CONV_LENGTH; i++)

{

printf("%0.3fV ", voltage[i]);

app_log_flush();

}

printf("\r\n");


/* Please deinitialize DMA in the following order. */

app_adc_dma_deinit();

app_adc_deinit();

}

0收藏

0赞成

199***514

2025-12-13 11:55

/*

* GLOBAL VARIABLE DEFINITIONS

*****************************************************************************************

*/

volatile uint16_t covn_done = 0;

uint16_t conversion[TEST_CONV_LENGTH];

double voltage[TEST_CONV_LENGTH];

app_adc_params_t adc_params = {

.pin_cfg = {

.channel_p = {

.type = APP_IO_TYPE_MSIO,

.mux = APP_ADC_P_INPUT_PIN_MUX,

.pin = APP_ADC_P_INPUT_PIN,

},

.channel_n = {

.type = APP_IO_TYPE_MSIO,

.mux = APP_ADC_N_INPUT_PIN_MUX,

.pin = APP_ADC_N_INPUT_PIN,

},

},

.dma_cfg = {

.dma_instance = DMA0,

.dma_channel = DMA_Channel0,

},

.init = {

.channel_p = APP_ADC_P_INPUT_SRC,

.channel_n = APP_ADC_N_INPUT_SRC,

.input_mode = ADC_INPUT_SINGLE,

.ref_source = ADC_REF_SRC_BUF_INT,

.ref_value = ADC_REF_VALUE_1P6,

.clock = ADC_CLK_1M,

},

};

/*

* GLOBAL FUNCTION DEFINITIONS

****************************************************************************************

*/

void app_adc_evt_handler(app_adc_evt_t * p_evt)

{

if (p_evt->type == APP_ADC_EVT_CONV_CPLT)

{

covn_done = 1;

}

}

0条评论

0赞成

0收藏

您的评论

登录后可回答问题,请 注册

我们时刻倾听您的声音
联系销售

扫描关注公众号

打开微信,使用“扫一扫”即可关注