嵌入式技术论坛
直播中

熊本熊

8年用户 1381经验值
擅长:处理器/DSP
私信 关注
[问答]

N32G457 ADC采样只有3.3v和0这两个值吗?

N32G457 ADC采样只有3.3v 和0 这两个值

#include <rtthread.h>
#include "board.h"
#include <rtdevice.h>
#include "protocol.h"
#define ADC_DEV_NAME "adc2" /* ADC 设备名称 /
#define ADC_DEV_CHANNEL 4
#define REFER_VOLTAGE 330 /
参考电压 3.3V,数据精度乘以100保留2位小数*/
#define CONVERT_BITS 4095 /* 转换位数为12位 */
static int adc_thread_entry(int argc, char argv[])
{
rt_adc_device_t adc_dev;
rt_uint32_t value, vol;
rt_err_t ret = RT_EOK;
while(1){
/
查找设备 /
adc_dev = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME);
if (adc_dev == RT_NULL)
{
rt_kprintf("adc sample run failed! can't find %s device!\n", ADC_DEV_NAME);
return RT_ERROR;
}
/
使能设备 /
ret = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL);
value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);
rt_kprintf("the value is :%d \n", value);
/
转换为对应电压值 /
vol = value * REFER_VOLTAGE / CONVERT_BITS;
rt_kprintf("the voltage is :%d.%02d \n", vol / 100, vol % 100);
/

if(value<800)
{
mcu_dp_enum_update(DPID_COVER_STATE,0); //当前蜂箱盖状态枚举型数据上报;
}
else {
mcu_dp_enum_update(DPID_COVER_STATE,1); //当前蜂箱盖状态枚举型数据上报;
}
/
rt_thread_mdelay(500);
/
关闭通道 /
ret = rt_adc_disable(adc_dev, ADC_DEV_CHANNEL);
}
return ret;
}
int rt_thread_adc(void)
{
rt_thread_t ret=rt_thread_create("read_adc",adc_thread_entry,RT_NULL,512,10,10);
if(ret!=RT_NULL)
{
rt_kprintf("rt_thread_read_adc succeed....\n");
rt_thread_startup(ret);
}
else {
rt_kprintf("rt_thread_read_adc err....\n");
}
}
INIT_APP_EXPORT(rt_thread_adc);
/
导出到 msh 命令列表中 */
//MSH_CMD_EXPORT(rt_thread_adc, adc7_thread_entry);

回帖(6)

bigbangboom

2023-3-6 09:59:59
排查一下硬件,万用表测一下管脚实际的电压是多少呢?
举报

熊本熊

2023-3-6 10:00:07
2.19v,查了数据手册,管脚也没问题
2.jpg
举报

bigbangboom

2023-3-6 10:00:19
万用表测一下电压呢,看实际上是多少
举报

麻酱

2023-3-6 10:00:29
排除硬件,看通道这些有没有问题,用电压表看下具体的输入电压是多少,如果输入超过了量程,可能变成0或者3.3
举报

goodmbby

2023-3-6 10:00:41
我今天也遇到这样的事了,只有0跟3.3你的解决了吗?
后面找到问题了:
是没接参考电压,把参考电压接到VREFF(J14),参与电压地接到VREFN(J15)上面就可以了。
举报

张龙祥

2023-3-6 10:00:50
遇到过类似的情况,当时用ADC1、2、3分别取三个位置的电压,ADC1采1路,ADC2采2路,ADC3采3路。结果ADC1采完正常,2和3都是0了。(如果先采2路,那就另外两路归零)而硬件对应管脚是有电压的。
后续修改,把三路采样全用ADC1来采集,单独的ADC就不会出现这个问题了。不过问题原因没找到
所以你查查是不是别的地方配置ADC的时候有多余的配置项,把别的ADC加进来了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分