Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
ADC
八路adc采集结果不稳定
发布于 2022-09-04 13:49:15 浏览:894
订阅该版
``` #define ADC_DEV_NAME "adc1" /* ADC 设备名称 */ #define ADC_DEV_CHANNEL_PA0 0 /* ADC 通道 */ #define ADC_DEV_CHANNEL_PA1 1 /* ADC 通道 */ #define ADC_DEV_CHANNEL_PA4 4 /* ADC 通道 */ #define ADC_DEV_CHANNEL_PA5 5 /* ADC 通道 */ #define ADC_DEV_CHANNEL_PA6 6 /* ADC 通道 */ #define ADC_DEV_CHANNEL_PA7 7 /* ADC 通道 */ #define ADC_DEV_CHANNEL_PB0 8 /* ADC 通道 */ #define ADC_DEV_CHANNEL_PB1 9 /* ADC 通道 */ #define REFER_VOLTAGE 330 /* 参考电压 3.3V,数据精度乘以100保留2位小数*/ #define CONVERT_BITS (1 << 12) /* 转换位数为12位 */ //创建adc采集线程 rt_thread_t Adc_thread = RT_NULL; static void Adc_entry(void* paremeter) { rt_adc_device_t adc_dev; rt_uint32_t adc1_value,adc1_vol,adc2_value,adc2_vol,adc3_value,adc3_vol,adc4_value,adc4_vol; rt_uint32_t adc5_value,adc5_vol,adc6_value,adc6_vol,adc7_value,adc7_vol,adc8_value,adc8_vol; rt_err_t ret; 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); } /* 使能设备*/ ret= rt_adc_enable(adc_dev, ADC_DEV_CHANNEL_PA0|ADC_DEV_CHANNEL_PA1|ADC_DEV_CHANNEL_PA4|ADC_DEV_CHANNEL_PA5|ADC_DEV_CHANNEL_PA6|ADC_DEV_CHANNEL_PA7|ADC_DEV_CHANNEL_PB0|ADC_DEV_CHANNEL_PB1); if(ret == RT_EOK) { rt_kprintf("adc sample run success! find %s device!\n", ADC_DEV_NAME); } rt_thread_mdelay(1000); while(1) { /* 读取采样值 */ adc1_value= rt_adc_read(adc_dev, ADC_DEV_CHANNEL_PA0); /* 转换为对应电压值 */ adc1_vol = adc1_value * REFER_VOLTAGE / CONVERT_BITS; rt_kprintf("the adc1_voltage is :%d.%02d \n", adc1_vol / 100, adc1_vol % 100); adc2_value= rt_adc_read(adc_dev, ADC_DEV_CHANNEL_PA1); adc2_vol = adc2_value * REFER_VOLTAGE / CONVERT_BITS; rt_kprintf("the adc2_voltage is :%d.%02d \n", adc2_vol / 100, adc2_vol % 100); adc3_value= rt_adc_read(adc_dev, ADC_DEV_CHANNEL_PA4); adc3_vol = adc3_value * REFER_VOLTAGE / CONVERT_BITS; rt_kprintf("the adc3_voltage is :%d.%02d \n", adc3_vol / 100, adc3_vol % 100); adc4_value= rt_adc_read(adc_dev, ADC_DEV_CHANNEL_PA5); adc4_vol = adc4_value * REFER_VOLTAGE / CONVERT_BITS; rt_kprintf("the adc4_voltage is :%d.%02d \n", adc4_vol / 100, adc4_vol % 100); adc5_value= rt_adc_read(adc_dev, ADC_DEV_CHANNEL_PA6); adc5_vol = adc5_value * REFER_VOLTAGE / CONVERT_BITS; rt_kprintf("the adc5_voltage is :%d.%02d \n", adc5_vol / 100, adc5_vol % 100); adc6_value= rt_adc_read(adc_dev, ADC_DEV_CHANNEL_PA7); adc6_vol = adc6_value * REFER_VOLTAGE / CONVERT_BITS; rt_kprintf("the adc6_voltage is :%d.%02d \n", adc6_vol / 100, adc6_vol % 100); adc7_value= rt_adc_read(adc_dev, ADC_DEV_CHANNEL_PB0); adc7_vol = adc7_value * REFER_VOLTAGE / CONVERT_BITS; rt_kprintf("the adc7_voltage is :%d.%02d \n", adc7_vol / 100, adc7_vol % 100); adc8_value= rt_adc_read(adc_dev, ADC_DEV_CHANNEL_PB1); adc8_vol = adc8_value * REFER_VOLTAGE / CONVERT_BITS; rt_kprintf("the adc8_voltage is :%d.%02d \n", adc8_vol / 100, adc8_vol % 100); rt_thread_delay(500); } } int app_ADC_init(void) { Adc_thread = rt_thread_create("adc1", Adc_entry, RT_NULL, THREAD_STACK_SIZE*4, THREAD_PRIORITY-20, THREAD_TIMESLICE*2); if(Adc_thread != RT_NULL) { rt_thread_startup(Adc_thread); } return RT_EOK; } INIT_APP_EXPORT(app_ADC_init); ``` 数据采集过程中adc的值移植不稳定,三路3.3v,5路0v,采集的结果如图 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220904/7472111ca270b183c398985004357064.png) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220904/b98368f46f9f20fa72fb4dc5578dc6db.png) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220904/4bcf6073e870d68f2eaf4d54cba0c3a0.png)
查看更多
3
个回答
默认排序
按发布时间排序
小小李sunny
2022-09-04
这家伙很懒,什么也没写!
rt_adc_enable这个函数,一个通道一个通道去使能。你这样或出来的结果是15,并不是你所用的通道
小王001
2022-09-04
这家伙很懒,什么也没写!
补充:用的正点原子f407zgt6,裸机dma adc 8路采集的数据稳定,上了rtt后数据不稳定
flashman2002
2022-09-04
这家伙很懒,什么也没写!
建议先使用Fish命令进行相关通道的测试后再排除问题。 如`msh >adc probe adc1``msh >adc enable 5``msh >adc read 5`等命令测试
撰写答案
登录
注册新账号
关注者
0
被浏览
894
关于作者
小王001
这家伙很懒,什么也没写!
提问
14
回答
11
被采纳
0
关注TA
发私信
相关问题
1
请大神帮忙看下风格 还是哪里有问题 照着串口驱动写的ADC驱动
2
ADC config
3
rt_thread_delay()和ADC采样之间的冲突
4
请教在官方BSP中的STM32F40X程序中加入ADC,串口没输出。
5
给RT-Thread添加ADC驱动框架
6
求助:ADC采样被干扰
7
【内核和外设学习营】十里 ADC光敏电阻电压采集实验
8
<内核学习营>+坦然+探索者stm32f407板子的ADC测试光传感器实验
9
【内核学习营】+青春+ADC读取光敏传感器实验
10
《内核学习营》+水一方+项目中应用的ADC实现电压采集
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
RT Thread 源码分析笔记 :线程和调度器
2
RT-Thread项目助手v0.2.0 - 支持Env Windows
3
RttreadV5.10上,GD32F450Z RTC时间显示问题
4
rt-smart启动流程分析
5
EtherKit快速上手PROFINET
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
聚散无由
2
篇文章
12
次点赞
Wade
2
篇文章
2
次点赞
xiaorui
1
篇文章
1
次点赞
zhuzhuzhu
1
篇文章
1
次点赞
catcatbing
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部