Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
ADC
八路adc采集结果不稳定
发布于 2022-09-04 13:49:15 浏览:529
订阅该版
``` #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,采集的结果如图   
查看更多
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
被浏览
529
关于作者
小王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
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
五分钟玩转RT-Thread新社区
5
国产MCU移植系列教程汇总,欢迎查看!
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
BL808 RT-Thread Wi-Fi 驱动适配
2
rt-thread 系统运行期改变网卡配置
3
简单的步进电机驱动调试
4
RT-Thread Github action 体验
5
RTC+硬件时钟分析STM32L4
热门标签
RT-Thread Studio
串口
LWIP
Env
AT
SPI
Bootloader
FinSH
ART-Pi
CAN总线
Hardfault
USB
文件系统
RT-Thread
DMA
SCons
线程
MQTT
RT-Thread Nano
STM32
RTC
ESP8266
rt-smart
flash
ota在线升级
WIZnet_W5500
FAL
I2C
packages_软件包
UART
cubemx
freemodbus
潘多拉开发板_Pandora
定时器
PWM
BSP
ADC
socket
中断
rt_mq_消息队列_msg_queue
keil_MDK
SDIO
Debug
AB32VG1
MicroPython
C++_cpp
编译报错
QEMU
msh
ulog
本月问答贡献
出出啊
1500
个答案
338
次被采纳
小小李sunny
1389
个答案
276
次被采纳
张世争
714
个答案
157
次被采纳
crystal266
522
个答案
153
次被采纳
whj467467222
1216
个答案
146
次被采纳
本月文章贡献
出出啊
1
篇文章
12
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
2
篇文章
0
次点赞
crystal266
2
篇文章
5
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部