Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
ADC
八路adc采集结果不稳定
发布于 2022-09-04 13:49:15 浏览:768
订阅该版
``` #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
被浏览
768
关于作者
小王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
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
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
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
本月文章贡献
程序员阿伟
5
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部