qq_55506300 2024-02-02 12:47 采纳率: 50%
浏览 10

stm32ADC使用问题

img


请问,为什么我在使用野火stm32最小系统板做ADC实验的时候,当GPIO的模拟输入通道没有接入的时候,ADC_DR仍然能获取到值,并且获取到的值还很大。

img


上图是我的stm32cube设置

img


上图是我获取ADC_DR寄存器的值的代码

img


上图是我Main函数里While循环前的ADC校准和循环代码

  • 写回答

2条回答 默认 最新

  • 专家-郭老师 Java领域新星创作者 2024-02-02 13:04
    关注

    参考通义千问和郭老师的小迷弟雅思莫了-编写提供,主要是为了帮助您快速解决问题,如下回答,您可以参考下,如有问题,评论区留言。

    在STM32的ADC实验中,如果您没有将任何外部模拟信号接入ADC输入通道,理论上应该得到的是电源电压(VDDA)与参考电压之间的某个中间值,而不是一个很大的数值。这是因为即使未连接外部信号,ADC通道内部仍然存在一定的输入阻抗,它会拾取噪声、漏电流或电源线上的干扰。此外,ADC也可能因为硬件设计的原因,在未接外部信号时表现出非零基准偏移。

    您提到获取到的值很大,可能原因有:

    1. 偏置电流或暗电流:ADC的输入端可能会有微小的偏置电流,尤其是在高阻抗状态下,这会导致读数不为0。
    2. 噪声或干扰:系统内部噪声、电源纹波、电磁干扰等都可能导致ADC采样到的数值不稳定或者偏大。
    3. 软件配置问题:检查您的ADC配置是否正确,例如校准步骤是否执行到位、增益和偏移校正是否启用、单次模式还是连续模式、是否启用了多通道扫描等。
    4. 硬件问题:检查电路是否存在短路或接地不良的情况,有时候看似开路但实际上存在寄生路径。
    5. 未进行合适的初始化:确保在使用ADC之前进行了正确的复位和初始化操作,并且在读取数据前等待了足够的稳定时间。

    请检查以下几点来解决问题:

    • 确保在获取ADC结果之前,完成了ADC的初始化并进行了适当的校准(如您提供的代码所示)。
    • 检查ADC的配置,看是否设置了正确的采样时间、分频系数、触发源等参数,以减小噪声影响并保证有效转换。
    • 考虑在读取ADC值之前,先让ADC通道空闲一段时间(比如等待若干个周期),以便ADC输入电容充分充电到其真实的“无信号”状态。
    • 若是调试阶段,尝试断点调试查看ADC配置寄存器的具体设置以及ADC_DR读出的数据变化情况。

    上图无法显示,但您可以详细描述一下STM32Cube的配置项以及您在Main函数中关于ADC配置和采集的具体代码段,这样有助于更准确地定位问题所在。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月2日

悬赏问题

  • ¥15 数据库原理及应用上机练习题
  • ¥30 征集Python提取PDF文字属性的代码
  • ¥15 如何联系真正的开发者而非公司
  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?