了解更多常见问题解答教程

6个帖子/ 0新
最后一篇
哈扎阿夫斯
离线
最后一次露面:1周6小时前
加入:2020-10-03 13:11
ADC问题

你好

我试图读取从电压devider(3v精确)的电压输出,我设法了解关于ADC读数的一些部分

使用SDK 6.0.14 I基于外设示例的BATT示例编写了此代码

//在periph_setup.h.中

#define adc_port gpio_port_0.
#define adc_pin gpio_pin_1.

uint32_t adc_get_voltage_sample(void);

gpio_configurepin(adc_port,adc_pin,输入,pid_adc,false);//在set_pad_functions中

//在periph_setup.c.中

uint32_t adc_get_voltage_sample(void)
{
UINT32_T ADC_SAMPLE;
ADC_CONFIG_T CFG =.
{
.mode = adc_input_mode_single_ended,
.sign = true,
.attn = true
};
adc_init(&cfg);

adc_set_se_input(adc_input_se_p0_1);
adc_sample = adc_get_sample();

adc_disable();
返回ADC_SAMPLE;

};

我在main.c尝试通过Teraterm尝试获得该函数

printf_byte_dec(UART,ADC_GET_VOLTAGE_SAMPLE());

我得到的价值是24-25 ......我想如果代码是正确的,这个值是错的...谢谢

设备:
PM_DIALOG.
离线
最后一次露面:3天18小时前
职员
加入:2018-02-08 11:03
嗨Hamzaaffes,

嗨Hamzaaffes,

谢谢你的问题在线。您能否说明ADC_GET_VOLTAGE_SAMPLE()和ADC_GET_SAMPLE()返回的值是什么?

谢谢,PM_DIALOG.

哈扎阿夫斯
离线
最后一次露面:1周6小时前
加入:2020-10-03 13:11
感谢您的答复 。

感谢您的答复 。

我得到的价值总是15个是错误的。我试图从其他渠道读取,但结果仍然是相同的。我正试图遵循自脑袋的读取电压的BATT Exemple。如果您可以澄清适当的函数和文件以获得有用的正确结果。

PM_DIALOG.
离线
最后一次露面:3天18小时前
职员
加入:2018-02-08 11:03
嗨Hamzaaffes,

嗨Hamzaaffes,

当然,SDK的BATT示例应作为参考。似乎您使用的是正确的配置。请您以调试模式运行它,并共享ADC寄存器的值?此外,您可以在“监视”窗口中添加ADC_Sample值并检查值。

谢谢,PM_DIALOG.

哈扎阿夫斯
离线
最后一次露面:1周6小时前
加入:2020-10-03 13:11
感谢您的答复,

感谢您的答复,

自从我仍然是初学者以来,你能通过这个过程引导我来帮助我吗?

PM_DIALOG.
离线
最后一次露面:3天18小时前
职员
加入:2018-02-08 11:03
嗨Hamzaaffes,

嗨Hamzaaffes,

  1. 在调试模式下运行它,并将断点添加到ADC_SAMPLE = ADC_GET_SAMPLE()中;
  2. ADC_SAMPLE的值是多少?
  3. 从手表窗口à添加表达式并读取寄存器:*(uint16_t *)gp_adc_ctrl_reg。gp_adc_ctrl_reg的值是多少?

谢谢,PM_DIALOG.