Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
ADC设备
双通道ADC采集问题
发布于 2021-11-03 11:57:15 浏览:1521
订阅该版
```c void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) { GPIO_InitTypeDef GPIO_InitStruct = {0}; if(hadc->Instance==ADC1) { /* USER CODE BEGIN ADC1_MspInit 0 */ /* USER CODE END ADC1_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_ADC1_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); /**ADC1 GPIO Configuration PC2 ------> ADC1_IN3 */ GPIO_InitStruct.Pin = GPIO_PIN_2; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); /* USER CODE BEGIN ADC1_MspInit 1 */ /* USER CODE END ADC1_MspInit 1 */ } } ``` ADC1只配置的是PC2通道3为什么使能通道5,然后`rt_adc_read(dev, 5)`也能读出值
查看更多
4
个回答
默认排序
按发布时间排序
刺刺赐
2021-11-03
大家吃好喝好
从上面这种图只能看出来PC3被设置成模拟输入
小小李sunny
2021-11-03
这家伙很懒,什么也没写!
这里只是把PC2设置为模拟输入模式,配置和读取ADC的值只能读取该通道。读取其他通道有值但不是不是该通道所采集的值,不能用
嚜軒公告
2021-11-26
努力中
你这不就配置了一个通道
fubaojun2006
2021-12-02
哇(挖)~~坑~~~啊!
我读了源码,代码的调用路径: ``` rt_adc_read --》 dev->ops->convert(dev, channel, &value); --》 stm_adc_ops.convert = stm32_get_adc_value --》 ADC_ChanConf.Channel = stm32_adc_get_channel(channel); ADC_ChanConf.Rank = 1; --》 HAL_ADC_ConfigChannel --》 HAL_ADC_GetValue ``` 可以确认的是,这个rt_adc_read 确定读取的是你设定的通道5的电压值。`stm32_get_adc_value`这个函数的作用就是只配置`Rank = 1`这样一个`regular group`, 另外,`ADC1_CONFIG.Init.NbrOfConversion = 1`, 也就是每次只转换这一个通道。 所以可以确认的是 读取的是硬件通道`5 PA5 ADC12_IN5`的值。 那为什么你读取的值是对的呢,这个要从硬件IO 上找原因了。 ![ADC-IO-20211202105615.png](https://oss-club.rt-thread.org/uploads/20211202/b87462c6d8787d30418b7fa2d915d679.png.webp) 从IO结构图上看出,模拟输入 与 数字输入 是一条线上的。只是数字输入这里多了一个TTL 施密特触发器。 当芯片复位时,IO口的模式为 数字浮空输入,一般来说浮空输入模式 对外的漏电流为1uA 这很小的。 所以,对于模拟输入那里 几乎不产生电压影响。 所以,就算硬件ADC去获取PA5的电压,也依然能够反映外部真实的ADC值。 那么根据这硬件图,我推测,如果是把PA5 设定为PP输出模式 ,ADC 依然可以读到IO上的电压值。只是这个值会随着PA5的输出电压变化而变化。 这就是为什么读外部ADC时要设定为模拟输入的原因: 切断其他电路对外部模拟电压的干扰。 如果想要测试我说的这个,可以用一个滑动变阻器,抽头 放在PA5这里。 两种情况: - 1.不对PA5 初始化, 滑动变阻器 看ADC值。 - 2.对PA5 初始化PP输出,定时1s 翻转电平,看ADC值。 好像空口无凭 啊 (ಥ_ಥ) 我去实验一下。不过通道不一定选择你这个PA5。
撰写答案
登录
注册新账号
关注者
0
被浏览
1.5k
关于作者
黄城铭
这家伙很懒,什么也没写!
提问
8
回答
0
被采纳
0
关注TA
发私信
相关问题
1
adc设备不能打开。。。。。
2
ADC 设备名称是怎么确定的
3
stm32g0 设备驱动框架 wdt adc 报错
4
ADC设备只能采集一个通道值?
5
rtthread studio adc三通道采集ntc电阻出现问题
6
ADC复制的void HAL_ADC_MspInit编译错误
7
多通道ADC读取出现问题
8
ADC 总线打不开 控制台没有ADC总线
9
rt_adc_voltage 使用问题
10
求助粉尘传感器GP2Y10使用工程
推荐文章
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中的time溢出问题,时间戳溢出,解决方法
2
ART-PI使用env驱动ETH网卡,pc和板子可以ping通
3
SystemView线程名字不显示
4
只用网页也能跑RT-Smart 无门槛腾讯Cloud studio + smart-build快速构建
5
免费申请 | FRDM-MCXA156评测活动发布!
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
8
个答案
2
次被采纳
三世执戟
7
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
winfeng
2
个答案
1
次被采纳
chenyaxing
2
个答案
1
次被采纳
本月文章贡献
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
3
次点赞
YZRD
1
篇文章
2
次点赞
Days
1
篇文章
2
次点赞
阳光的掌控者
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部