OpenEdv-开源电子网

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

关于32片上ADC外部信号采集及内部1.2V采集互相干扰的问题

[复制链接]

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2765
金钱
2765
注册时间
2018-11-8
在线时间
438 小时
发表于 2021-12-28 14:22:09 | 显示全部楼层 |阅读模式
1金钱
程序如图使用ADC对内部通道的1.2V基准采集计算供电电压VDDA 以及对CH7的外部信号进行采集
实测时发现 如果先进行了内部1.2V的采集(程序72、73行)再对外部信号采集 最后外部信号就完全不对
反过来先对外部信号采集再进行内部的采集(程序)81、82行 最后结果就没问题了

供电3.3V 外部信号转换理论结果200 主函数目前只有这个ADC采集的部分 两次采集之间尝试过加延时也没什么效果
STM32L072单片机 ADC初始化配置采用单次转换 19.5个时钟周期 已经启用了ADC的自校准
只在转换时单独对ADC通道配置了一下并开启转换 其他参数都未改动
求大佬指点下是哪里对ADC转换产生干扰了???

3.png
2.png
1.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2021-12-29 01:39:18 | 显示全部楼层
采集内部1.2是做啥子用?
回复

使用道具 举报

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2765
金钱
2765
注册时间
2018-11-8
在线时间
438 小时
 楼主| 发表于 2021-12-29 08:54:06 | 显示全部楼层
正点原子 发表于 2021-12-29 01:39
采集内部1.2是做啥子用?

电池供电 估算VDDA
回复

使用道具 举报

1

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
231
金钱
231
注册时间
2020-3-15
在线时间
28 小时
发表于 2021-12-29 09:32:41 | 显示全部楼层
同问楼上
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2022-1-4 00:34:17 | 显示全部楼层
倒是没试过读取内部电压,你继续努力
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2022-1-4 00:34:17 | 显示全部楼层
倒是没试过读取内部电压,你继续努力
回复

使用道具 举报

80

主题

931

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3348
金钱
3348
注册时间
2013-5-28
在线时间
468 小时
发表于 2022-1-4 08:27:28 | 显示全部楼层
1.你说了自校准,但是没看到程序有写.应该是在时钟初始化后进行校准,至少我是这样的.
2.不管是IO口还是ADC使能完成是需要时间的,单片机是很快,但是人家也要时间的.具体去查芯片的数据手册,数据手册都会告诉你.就是在每个时钟使能后面应该有延时.
如果不知道怎么弄就用库函数,库函数会帮你把所有问题给处理掉的.
3.你可以尝试下把两个通道同时写入序列采集,然后按序列触发看看.
回复

使用道具 举报

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2765
金钱
2765
注册时间
2018-11-8
在线时间
438 小时
 楼主| 发表于 2022-1-4 15:47:22 | 显示全部楼层
聚东风 发表于 2022-1-4 08:27
1.你说了自校准,但是没看到程序有写.应该是在时钟初始化后进行校准,至少我是这样的.
2.不管是IO口还是ADC ...

感谢解答~~~
自校准是在程序最开始时进行的 应该没问题 上次没开自校准内部电压采集的都不是很准 而且我刚才试了一下 每次采集之前加上自校准最后结果也没什么变化
L0要用HAL库 之前试着用了一下不是很习惯 以前只用F1和标准库 下次写的时候会借鉴一下H库的

前几天借了个示波器看了下信号,第二种方案测量准确的原因找到了,这是个错误的数据,待测信号在每次转换前才进行输出,输出时会有一个从0上升还带点儿过冲的过程,如果先采集外部通道信号,每次采集都是在这个上升沿的过程,而且因为程序运行时间的原因,转换时的值刚好很接近真实值。
实际上用示波器看,信号稳定后会有一定的波动,输出不会那么稳定的,只要稍微加一点点延时 转换结果就不能像图里那么完美了
至于第一种方案的偏差大,猜测是标定的过程中用了方案二,标定点不可靠,目前重新处理了一下偏差小很多了 但是数据转换的稳定性还不是很好,我再看看有啥别的方法
回复

使用道具 举报

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2765
金钱
2765
注册时间
2018-11-8
在线时间
438 小时
 楼主| 发表于 2022-1-4 15:50:25 | 显示全部楼层
聚东风 发表于 2022-1-4 08:27
1.你说了自校准,但是没看到程序有写.应该是在时钟初始化后进行校准,至少我是这样的.
2.不管是IO口还是ADC ...

而且在刚才改的过程中我发现 图中程序有问题 ADC的关闭不是对ADEN位写0 而是对ADDIS位写1实现的,还好这里对后面没啥影响

以后再写时会多参考库函数的
回复

使用道具 举报

80

主题

931

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3348
金钱
3348
注册时间
2013-5-28
在线时间
468 小时
发表于 2022-1-5 08:14:23 | 显示全部楼层
babyrabbit 发表于 2022-1-4 15:50
而且在刚才改的过程中我发现 图中程序有问题 ADC的关闭不是对ADEN位写0 而是对ADDIS位写1实现的,还好这 ...

我是建议你序列采集,避免内部ADC波动太大
回复

使用道具 举报

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2765
金钱
2765
注册时间
2018-11-8
在线时间
438 小时
 楼主| 发表于 2022-1-5 21:08:17 | 显示全部楼层
聚东风 发表于 2022-1-5 08:14
我是建议你序列采集,避免内部ADC波动太大

好的 明天试试
不过目前测内部1.2V 无论程序放在哪个位置 效果都还好 转换结果最大也就变三四个数吧
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-20 17:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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