搜索
查看: 13761|回复: 3

[实战经验] 【实战经验】STM32 ADC模拟看门狗及其应用

[复制链接]
  • TA的每日心情
    开心
    2018-2-6 09:20
  • 签到天数: 1 天

    [LV.1]初来乍到

    1182

    主题

    4967

    帖子

    1

    蝴蝶豆

    论坛元老

    最后登录
    2020-3-17
    发表于 2017-4-10 10:23:16 | 显示全部楼层 |阅读模式
    STM32 ADC模拟看门狗及其应用

    前言
    模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高低阈值,用户可以预先设定个模拟看门狗的上下限电压值,一旦采集到的电压超出该上下限,将会触发模拟看门狗中断。模拟看门狗一般用于检测单个的常规或注入转换通道,或同时检测所有的常规和注入通道。


    模块框图
    21.jpg
    模拟看门狗可以预先设置ADC转换的高低阈值,ADC_HTR寄存器来配置ADC转换的上限阈值,ADC_LTR寄存器用来配置ADC转换的下限阈值。


    应用示例
    ADC配置代码
    22.jpg
    23.jpg
    24.jpg
    如上图所示,AnalogWDGConfig结构体中分别使能了模拟看门狗及中断,设置了电压的上下阈值HighThreshold和LowThreshold。模拟参考电压为3.3V,以上代码设置的下限电压阈值为3.3*1/8=0.41V,上限电压阈值为3.3*5/8=2.06V。

    模拟看门狗中断服务程序
    25.jpg
    当模拟看门狗检测到电压高于上限或者低于下限时将会产生看门狗中断,中断服务程序触发后,可以做出一些应对措施。这里置了ubAnalogWatchdogStatus标志,然后由主程序去根据标志的值去执行相应处理程序。
    26.png

    启动ADC转换代码
    27.jpg
    使用循环模式DMA启动ADC转换,DMA可以降低CPU负载。

    结论
    控制系统中,需要测量严格电压、压力、温度等范围的信号,使用模拟看门狗能够快速地检测到异常状况,并做出相应的应对措施,以确保设备安全。


    文档下载

    更多实战经验

    评分

    参与人数 1ST金币 +1 收起 理由
    kayman + 1

    查看全部评分

    回复

    使用道具 举报

    该用户从未签到

    54

    主题

    499

    帖子

    152

    蝴蝶豆

    论坛元老

    最后登录
    2021-3-29
    发表于 2017-4-10 16:27:54 | 显示全部楼层
    关于这一段话:
    “如上图所示,AnalogWDGConfig结构体中分别使能了模拟看门狗及中断,设置了电压的上下阈值HighThreshold和LowThreshold。模拟参考电压为3.3V,以上代码设置的下限电压阈值为3.3*1/8=0.41V,上限电压阈值为3.3*5/8=2.06V。”
    但是我在STM32CubeMX中,HighThreshold和LowThreshold的取值范围只能是0-4095
    描述如下:
    * High Threshold HighThreshold must be between 0 and 4 095. * This parameter has automatically changed after your last modification.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    3

    帖子

    0

    蝴蝶豆

    新手上路

    最后登录
    2018-3-11
    发表于 2018-1-19 11:47:52 | 显示全部楼层
    奏奏奏 发表于 2017-4-10 16:27
    关于这一段话:
    “如上图所示,AnalogWDGConfig结构体中分别使能了模拟看门狗及中断,设置了电压的上下阈值 ...

    前辈请问一个问题,我刚上手单片机,现在想实现一个ADC检测输入电压的功能,选择了连续检测的方式,连续进行对输入管脚模拟电压的检测,检测到某一电压值就中断或者用其他方式暂停转换,串口打印信息,然后再在程序里开启下一段转换,请问这样用看门狗功能可以实现吗?

    还有一个问题就是您说的看门狗高低阈值的设定问题,如果是0到4095之间,是否意味着我输入模拟的阶数即可,不需要转换成二进制?(就是把模拟电压3.3V分成4096阶,输入v/3.3*4096即可?)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    54

    主题

    499

    帖子

    152

    蝴蝶豆

    论坛元老

    最后登录
    2021-3-29
    发表于 2018-1-19 20:11:39 | 显示全部楼层
    ryn4 发表于 2018-1-19 11:47
    前辈请问一个问题,我刚上手单片机,现在想实现一个ADC检测输入电压的功能,选择了连续检测的方式,连续 ...

    很抱歉,这个功能我还没有实际试用过。回答不了你。
    只是当时我看到这个功能想试用一下,用STM32CubeMX配置的时候发现有这个问题。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

    GMT+8, 2024-5-3 04:49 , Processed in 1.190425 second(s), 41 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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