你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
zero99 发布时间:2017-4-10 10:23
STM32 ADC模拟看门狗及其应用

% B4 F: I2 M. |$ [前言
$ T- }3 D0 h& n2 P) p5 S模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高低阈值,用户可以预先设定个模拟看门狗的上下限电压值,一旦采集到的电压超出该上下限,将会触发模拟看门狗中断。模拟看门狗一般用于检测单个的常规或注入转换通道,或同时检测所有的常规和注入通道。
( R% e, n- z9 K7 \! m8 q& ]1 Y1 r1 U
& h. d) g7 a& c( V1 d0 q( L
模块框图( i% B! ^9 P6 E& f
21.jpg
. M- g0 \3 I# |模拟看门狗可以预先设置ADC转换的高低阈值,ADC_HTR寄存器来配置ADC转换的上限阈值,ADC_LTR寄存器用来配置ADC转换的下限阈值。3 {* c7 j% q  H+ L) T

+ q' B8 E$ E; X) J6 C/ K7 k/ s% X
9 K# V& S5 I! \' R% ^- G应用示例
. c: v/ D  b7 x4 `( L! VADC配置代码
* U) z$ Z5 q& s. G4 r
22.jpg
7 p" ~' s- x/ u) B4 S
23.jpg
& |, d9 \) N. N' j5 P, y
24.jpg
, K" ~+ T  B6 ~# W$ M, B如上图所示,AnalogWDGConfig结构体中分别使能了模拟看门狗及中断,设置了电压的上下阈值HighThreshold和LowThreshold。模拟参考电压为3.3V,以上代码设置的下限电压阈值为3.3*1/8=0.41V,上限电压阈值为3.3*5/8=2.06V。
+ Y* L; S* O+ D$ U; r
: E5 o6 V* \4 O0 s模拟看门狗中断服务程序 8 Y* I$ H9 F5 u, p" X% N7 d
25.jpg 2 g! h# j& U* ~4 v. }- V; z; V
当模拟看门狗检测到电压高于上限或者低于下限时将会产生看门狗中断,中断服务程序触发后,可以做出一些应对措施。这里置了ubAnalogWatchdogStatus标志,然后由主程序去根据标志的值去执行相应处理程序。
/ j. h" w: Z7 a7 B3 ~' i4 P' B
26.png
8 f' }7 ]1 Q5 ~7 _, D, P( [  y. {" o
启动ADC转换代码# U( q: Q; A4 I0 E! ^; i5 x
27.jpg 0 ]! `7 ^1 ]  f
使用循环模式DMA启动ADC转换,DMA可以降低CPU负载。
+ ~! h/ p5 e1 M7 _0 @7 L
  _, R2 w- L- C" t- L* r% V9 r结论. X& e0 v+ x* \0 x& t8 ]' Y  }
控制系统中,需要测量严格电压、压力、温度等范围的信号,使用模拟看门狗能够快速地检测到异常状况,并做出相应的应对措施,以确保设备安全。+ R: m( D5 X5 N, Z1 |! i7 x: |

8 B) K+ R/ k4 f/ `# i4 P1 _

; c& X- B6 _/ p! P( H" F文档下载* [9 f( p6 w2 e
. f* g, Y  H6 J+ d2 v; M. I0 {
更多实战经验) F( f+ @6 {3 J3 V& Q

评分

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

查看全部评分

收藏 3 评论3 发布时间:2017-4-10 10:23

举报

3个回答
奏奏奏 回答时间:2017-4-10 16:27:54
关于这一段话:  _8 S4 x; p- _3 ~' u3 t3 X- I$ w
“如上图所示,AnalogWDGConfig结构体中分别使能了模拟看门狗及中断,设置了电压的上下阈值HighThreshold和LowThreshold。模拟参考电压为3.3V,以上代码设置的下限电压阈值为3.3*1/8=0.41V,上限电压阈值为3.3*5/8=2.06V。”6 o+ Z7 @: T" D
但是我在STM32CubeMX中,HighThreshold和LowThreshold的取值范围只能是0-4095
" A  {2 ^+ _. f2 U描述如下:
3 f; U7 @* b& r* High Threshold HighThreshold must be between 0 and 4 095. * This parameter has automatically changed after your last modification.
* u. O; m, Z: a2 |+ q  i( }+ Z% z
ryn4 回答时间:2018-1-19 11:47:52
奏奏奏 发表于 2017-4-10 16:27& W/ p3 l3 p( D3 V# e& ~. R
关于这一段话:4 i# ^- r7 b2 t- ~5 k- A7 ^
“如上图所示,AnalogWDGConfig结构体中分别使能了模拟看门狗及中断,设置了电压的上下阈值 ...

+ Y9 a. R8 O0 C前辈请问一个问题,我刚上手单片机,现在想实现一个ADC检测输入电压的功能,选择了连续检测的方式,连续进行对输入管脚模拟电压的检测,检测到某一电压值就中断或者用其他方式暂停转换,串口打印信息,然后再在程序里开启下一段转换,请问这样用看门狗功能可以实现吗?
3 C" [  @1 ]9 [6 Y, P- C8 U& j5 a* U2 _7 J0 G  u8 K0 j
还有一个问题就是您说的看门狗高低阈值的设定问题,如果是0到4095之间,是否意味着我输入模拟的阶数即可,不需要转换成二进制?(就是把模拟电压3.3V分成4096阶,输入v/3.3*4096即可?)$ t5 R5 ?8 {& K0 t/ z0 Y) Q
奏奏奏 回答时间:2018-1-19 20:11:39
ryn4 发表于 2018-1-19 11:47& u. v$ c- E7 g/ H& ^2 N8 B: g
前辈请问一个问题,我刚上手单片机,现在想实现一个ADC检测输入电压的功能,选择了连续检测的方式,连续 ...

: g  a. q# B3 o1 o4 m0 d很抱歉,这个功能我还没有实际试用过。回答不了你。
: K3 l# o' u, @只是当时我看到这个功能想试用一下,用STM32CubeMX配置的时候发现有这个问题。9 b$ Y7 m2 H9 E& Y6 [; T
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版