硬汉嵌入式论坛

 找回密码
 立即注册
查看: 198|回复: 5
收起左侧

[ADC] 问下单片机内置ADC配置差分输入需要外接运放吗

[复制链接]

8

主题

31

回帖

55

积分

初级会员

积分
55
发表于 7 天前 | 显示全部楼层 |阅读模式
现在我配置成差分输入,然后信号源直接接到h7的ADC输入两个引脚,发现转换出来的数据不对。

单端都是可以的。就修改了三个地方,GPIOA_PIN6和GPIOA_PIN7;SingleDiff = ADC_DIFFERENTIAL_ENDED;还有校准改成了"ADC_DIFFERENTIAL_ENDED".其他都一样。哪位大神帮忙分析下。谢谢啦
回复

使用道具 举报

7

主题

399

回帖

420

积分

高级会员

积分
420
发表于 6 天前 | 显示全部楼层
根据信号阻抗,有可能需要外接运放,你测试时直接接VCC/GND测试,这样就不用运放与阻抗也没关系了,要设置GPIO为模拟输入,然后PCSELx:DIFSEL寄存器。对照手册,查看寄存器设置成功了没
回复

使用道具 举报

8

主题

31

回帖

55

积分

初级会员

积分
55
 楼主| 发表于 6 天前 | 显示全部楼层
fxyc87 发表于 2026-3-8 10:57
根据信号阻抗,有可能需要外接运放,你测试时直接接VCC/GND测试,这样就不用运放与阻抗也没关系了,要设置G ...

谢谢回复。
1、GPIOA的pin6和pin7都配置成模拟输入了。
2、看了文档PCSELX是Vinp x引脚的设置,那有Vinn x引脚的设置吗?我跟踪下"HAL_ADC_ConfigChannel"函数有对PCSELX设置.hadc->Instance->PCSEL |= (1UL << (__LL_ADC_CHANNEL_TO_DECIMAL_NB((uint32_t)sConfig->Channel) & 0x1FUL));
3、寄存器DIFSEL也有设置.对应adc_ch_conf.SingleDiff =    ADC_DIFFERENTIAL_ENDED;

不知道还有哪里落掉了。
回复

使用道具 举报

8

主题

31

回帖

55

积分

初级会员

积分
55
 楼主| 发表于 6 天前 | 显示全部楼层
fxyc87 发表于 2026-3-8 10:57
根据信号阻抗,有可能需要外接运放,你测试时直接接VCC/GND测试,这样就不用运放与阻抗也没关系了,要设置G ...

我在这个差分输入信号两端加入一个最低为0v,最高为1v的正弦信号。采集到的数据不是正弦波
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121537
QQ
发表于 5 天前 | 显示全部楼层
sofia 发表于 2026-3-8 22:59
我在这个差分输入信号两端加入一个最低为0v,最高为1v的正弦信号。采集到的数据不是正弦波

之前我遇到过一次问题,后来没有再研究了

STM32H7的差分测量问题记录
https://forum.anfulai.cn/forum.p ... 9415&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

122

主题

651

回帖

1032

积分

至尊会员

积分
1032
QQ
发表于 5 天前 | 显示全部楼层
mark一下,可能未来需要用
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-3-14 08:46 , Processed in 0.613545 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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