CN / EN
CN / EN

提问

设计支持

您的项目私密技术问题如需获得一对一支持,请点击下方联系我们。

ADC测量电压偏低问题求解 GR551x

158***144

2025-05-07 13:08

参考v1.7.0版本例程,利用CR5513BEND,借用了ADC单端采样的实例,通过MSIO1管脚来检测电压,以下是测试代码,实际测量值应为1.8V左右,现测的电压在0.87V左右,请问是什么原因

#define TEST_CONV_LENGTH (16UL)

adc_handle_t g_adc_handle;

uint16_t conversion[TEST_CONV_LENGTH];

double voltage[TEST_CONV_LENGTH];


void adc_single(void)

{

g_adc_handle.init.channel_p = ADC_INPUT_SRC_IO1;

g_adc_handle.init.channel_n = ADC_INPUT_SRC_IO1;

g_adc_handle.init.input_mode = ADC_INPUT_SINGLE;

g_adc_handle.init.ref_source = ADC_REF_SRC_BUF_INT;

g_adc_handle.init.ref_value = ADC_REF_VALUE_1P6;

g_adc_handle.init.clock = ADC_CLK_1P6M;

hal_adc_deinit(&g_adc_handle);

hal_adc_init(&g_adc_handle);

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


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

hal_adc_poll_for_conversion(&g_adc_handle, conversion, TEST_CONV_LENGTH);

while (g_adc_handle.state == HAL_ADC_STATE_BUSY);

hal_gr551x_adc_voltage_intern(&g_adc_handle, conversion, voltage, TEST_CONV_LENGTH);

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

}

0收藏

0赞成

LGY

汇顶员工
2025-05-12 17:51

你好,检查一下是否没有初始化MSIO1 呢?

我们SDK里面peripheral文件夹的例程,是基于hal层接口实现的,需要在hal_adc_msp_init文件里面进行IO初始化,通过重写内部弱函数hal_adc_msp_init来实现。检查一下你的代码是否有这个函数进行msio1的初始化?

另外,建议调用我们的APP层接口去做,可参考peripheral_app文件夹里面的例程。调用APP层接口,只需要初始化参数里面指定了对应的IO,在ADC初始化接口里面会进行相应的IO初始化。

0条评论

0赞成

0收藏

您的评论

158***144

2025-05-12 11:41

您好,用示波器量了波形是很平稳的电压,但读到的数据其实是一直在变,不稳定,不确定是什么原因,现在把其他功能都关了,只调试AD,情况还是一样。

0条评论

0赞成

0收藏

您的评论

zhongchengzhi

汇顶员工
2025-05-08 09:54

您好,换个MSIO试试呢,确保MSIO外部没有连接其他外设。

0条评论

0赞成

0收藏

您的评论

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

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

扫描关注公众号

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