|
STM32 ADC模拟看门狗及其应用 5 b& m% Z1 f! H. \& V6 B3 z前言* t5 n4 [2 c8 A$ F: ]: U* T 模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高低阈值,用户可以预先设定个模拟看门狗的上下限电压值,一旦采集到的电压超出该上下限,将会触发模拟看门狗中断。模拟看门狗一般用于检测单个的常规或注入转换通道,或同时检测所有的常规和注入通道。 $ U( C* h7 o9 o; p ' V" G" {1 R! I 模块框图
模拟看门狗可以预先设置ADC转换的高低阈值,ADC_HTR寄存器来配置ADC转换的上限阈值,ADC_LTR寄存器用来配置ADC转换的下限阈值。9 S8 b0 t" A; H6 `( } 0 t @; S/ o7 B: ? 应用示例8 d2 c' r/ {; z8 M. M# }& y ADC配置代码7 ]0 S% s/ _7 W
如上图所示,AnalogWDGConfig结构体中分别使能了模拟看门狗及中断,设置了电压的上下阈值HighThreshold和LowThreshold。模拟参考电压为3.3V,以上代码设置的下限电压阈值为3.3*1/8=0.41V,上限电压阈值为3.3*5/8=2.06V。 模拟看门狗中断服务程序 ) n% \" ]" q5 B
当模拟看门狗检测到电压高于上限或者低于下限时将会产生看门狗中断,中断服务程序触发后,可以做出一些应对措施。这里置了ubAnalogWatchdogStatus标志,然后由主程序去根据标志的值去执行相应处理程序。
2 ]6 J& D J& ^8 _; T 启动ADC转换代码7 T1 Q0 q( ]% c& U8 ~& w& i
使用循环模式DMA启动ADC转换,DMA可以降低CPU负载。 结论/ ^/ e5 u2 @! b5 M' f 控制系统中,需要测量严格电压、压力、温度等范围的信号,使用模拟看门狗能够快速地检测到异常状况,并做出相应的应对措施,以确保设备安全。 : I+ |/ r1 _0 K, l 文档下载. u5 e8 _2 V. b% E 更多实战经验% D# q! j; N( w+ j |
无刷直流电机控制应用+基于STM8S系列单片机---电子书
MCSDK FOC应用详解
STM32F10xxx 正交编码器接口应用笔记 及源代码
基于STM32定时器ETR信号的应用示例
《无刷直流电机控制应用 基于STM8S系列单片机》
STM32定时器触发SPI逐字收发之应用示例
【银杏科技ARM+FPGA双核心应用】STM32H7系列10——ADC
【银杏科技ARM+FPGA双核心应用】STM32H7系列57——MDK_FLM
【STM32图书分享之九】—《STM32F 32位ARM微控制器应用设计与实践》
STM32 USB的程序,包含固件、驱动和测试用的应用程序
微信公众号
手机版
“如上图所示,AnalogWDGConfig结构体中分别使能了模拟看门狗及中断,设置了电压的上下阈值HighThreshold和LowThreshold。模拟参考电压为3.3V,以上代码设置的下限电压阈值为3.3*1/8=0.41V,上限电压阈值为3.3*5/8=2.06V。”1 p& v, X( ^7 T1 _/ s; H/ {6 {
但是我在STM32CubeMX中,HighThreshold和LowThreshold的取值范围只能是0-4095+ O. r& M( p! ?& | d0 G
描述如下:
* High Threshold HighThreshold must be between 0 and 4 095. * This parameter has automatically changed after your last modification./ V9 r4 d8 s) |- K
前辈请问一个问题,我刚上手单片机,现在想实现一个ADC检测输入电压的功能,选择了连续检测的方式,连续进行对输入管脚模拟电压的检测,检测到某一电压值就中断或者用其他方式暂停转换,串口打印信息,然后再在程序里开启下一段转换,请问这样用看门狗功能可以实现吗?
( n3 ~ R+ k* j! }7 M
还有一个问题就是您说的看门狗高低阈值的设定问题,如果是0到4095之间,是否意味着我输入模拟的阶数即可,不需要转换成二进制?(就是把模拟电压3.3V分成4096阶,输入v/3.3*4096即可?), e+ S1 E! C+ {# z
很抱歉,这个功能我还没有实际试用过。回答不了你。
只是当时我看到这个功能想试用一下,用STM32CubeMX配置的时候发现有这个问题。% ^1 Y3 }$ S) w