了解更多常见问题教程

6个员额/ 0个新员额
最后发表
HamzaAffes
离线
最后看到:1周2天前
加入:2020-10-03 13:11
ADC的问题

我试图读电压输出从电压分压器(3v精确),我设法了解有关adc读数的一些部分

使用SDK 6.0.14,我基于外围示例中的batt示例编写了这段代码

/ /在periph_setup.h

#定义ADC_PORT GPIO_PORT_0
#定义ADC_PIN GPIO_PIN_1

uint32_t adc_get_voltage_sample(无效);

GPIO_ConfigurePin (ADC_PORT ADC_PIN,输入、PID_ADC假);/ /在set_pad_functions

/ /在periph_setup.c

uint32_t adc_get_voltage_sample(空白)

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中调用这个函数试图通过terterm得到值

printf_byte_dec (UART adc_get_voltage_sample ());

我得到的值是24-25…我想如果代码是正确的,这个值就是错误的……谢谢你!

设备:
PM_Dialog
离线
最后看到:6天1小时前
工作人员
加入:2018-02-08 11:03
嗨HamzaAffes,

嗨HamzaAffes,

谢谢你的在线问题。你能指出adc_get_voltage_sample()和adc_get_sample()返回的值是什么吗?

谢谢,PM_Dialog

HamzaAffes
离线
最后看到:1周2天前
加入:2020-10-03 13:11
谢谢你的回复。

谢谢你的回复。

我得到的值总是15,这是错误的。我试着从其他渠道读,但还是一样的结果。我正试着按照电池的例子,如何读电压,因为我仍然是一个初学者。如果您能够澄清适当的函数和文件以获得正确的结果,将是有帮助的。

PM_Dialog
离线
最后看到:6天1小时前
工作人员
加入:2018-02-08 11:03
嗨HamzaAffes,

嗨HamzaAffes,

当然,SDK的batt示例应该作为参考。看起来您使用的配置是正确的。你能在调试模式下运行它并共享ADC寄存器的值吗?此外,您可以在监视窗口中添加adc_sample值并检查该值。

谢谢,PM_Dialog

HamzaAffes
离线
最后看到:1周2天前
加入:2020-10-03 13:11
谢谢你的回复,

谢谢你的回复,

由于我还是一个初学者,您能帮助我通过这个过程指导我吗?

PM_Dialog
离线
最后看到:6天1小时前
工作人员
加入: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