OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2125|回复: 2

针对F0系列片子 ADC多路通道单独采样工作,无法切换通道进行自问自答

[复制链接]

49

主题

143

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
390
金钱
390
注册时间
2017-3-24
在线时间
64 小时
发表于 2019-5-22 18:21:22 | 显示全部楼层 |阅读模式
这几天,遇到一个问题。 基本可以确定是 ,所有F0系列都可能遇到的问题了 ,在使用HAL库开发的时候会遇到的。   我使用的式STM 32 F070F6P6的芯片,定义了 PA0为 ADC_IN0 , PA1为 ADC_IN1 ,开启了两路通道,单独不连续采样工作模式。

微信截图_20190522174940.png
ADC的配置代码如图,使用CubeMX软件配置的,可以说比自己手动要准快狠 主要准有保证
微信截图_20190522175558.png
。。。。。。。。。。。
然后我主函数里 不停的循环1秒读一次 ADC_IN0 , ADC_IN1 。
使用读函数是原子例程里的:
微信截图_20190522180203.png
但是被我进行了修改,因为F0 HAL库里没有这些划红线的函数。于是我把它去掉了,正确。
每次读的时候 把该函数里 ( ADC1_ChanConf.Channel=ch;  //通道)  ch重新赋值为选定的通道就可以了。
如;           ch =ADC_CHANNEL_0;
                   ch =ADC_CHANNEL_1;       然后去调用这个函数 就可以读到你选定通道的电平了。也没错。
第一次读值  使用  ch =ADC_CHANNEL_0; 可以读到正确电平。 第一次读值  使用  ch =ADC_CHANNEL_1; 也可以读到正确电平。
但他么 就是 第一次使用任意一个  ,(单片机不复位)第二次使用另一个值 ,就读的值还是第一次 通道的值。

以上如果一直只读一个通道,百分百没问题,想要切换通道 就不行,不管你配置多少通道,度多少次,始终都是第一次使用的通道的在进行采样。

于是百般询问各路网友,提供的方法都不行,于是我百度 到了,类似的,说是直接设置寄存器。
于是 我也怀疑这个 HAL库的函数可能有问题 ,于是就把    sConfig.Channel=ch;   使用  这个替代了  ADC1->CHSELR =ch;
哎呀 以为万事大吉,结果心灰意冷 ,险些撂挑子不干了,无奈了。
就在我放弃的时候,我吃了一把狗粮,人生又燃起了 奋斗的欲望。
就把这句话 移动一下位置,不曾想 却可以了。
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
把  ADC1->CHSELR =ch; 这句话  放到 HAL_ADC_ConfigChannel(&hadc, &sConfig);她的热屁股     !!!   后面!!!!
把  ADC1->CHSELR =ch; 这句话  放到 HAL_ADC_ConfigChannel(&hadc, &sConfig);她的热屁股     !!!   后面!!!!
把  ADC1->CHSELR =ch; 这句话  放到 HAL_ADC_ConfigChannel(&hadc, &sConfig);她的热屁股     !!!   后面!!!!
你就可以任意指挥每个通道 ,随心所欲,无所不能!
看图。谢谢
微信截图_20190522174227.png



未命名1558080810.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

206

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-4-6
在线时间
234 小时
发表于 2019-5-22 19:43:38 | 显示全部楼层
知道原因是什么吗?为什么替换一个位置就行?
回复 支持 反对

使用道具 举报

43

主题

228

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1074
金钱
1074
注册时间
2012-1-10
在线时间
238 小时
发表于 2019-5-23 09:28:58 | 显示全部楼层
HAL库内部的问题,习惯就好。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 09:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表