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

【实战经验】STM32 DFSDM测量温度应用

[复制链接]
zero99 发布时间:2017-4-5 17:18
STM32 DFSDM测量温度应用
前言
' L. I3 Q5 ?' k" n& WSTM32L4集成了DFSDM数字滤波模块,配合Σ-Δ器件使用,可进行高精度、高速率的AD测量。* @) x* b$ a# c& {

4 ?* m2 [- r) K模块框图
: b8 u. f( r( vSTM32 Σ-Δ转换器应用框图如下:3 _- o+ }5 Z, e4 e
21.jpg
1 k) R; Q% i6 x* n" @: w) O
2 Y. w, U8 {/ ?( j( ^系统被分为两部分: STM32外部的模拟前端Σ-Δ模块和内置的数字部分DFSDM模块。
/ _$ b% R: x# O) D; [       DFSDM是STM32产品内部的一个新的数字外设,通常搭配外部的Σ-Δ器件使用,可根据相应的应用选择外部的模拟部分,如测量、马达控制等应用。模拟部分提供串行数据给DFSDM,DFSDM负责对数字信号进行处理。
% D, X7 N9 J2 s; Y% V       DFSDM数字部分集成了模拟看门狗、注入和常规转换、灵活的触发系统、中断信号生成、极值检测等。
& M) b8 Q. n# E, z  \• Σ-Δ模块
. F0 n0 Y- b& [& G/ S8 f. G$ F  · 输入模拟信号
" b4 g9 M0 G1 z5 J# w) X% f' u1 B  · 输出1位或2位的快速串行数字信号,可达20MHz速率。, P- _* d. R+ t
  · 广泛的厂商支持: ST, TI, Analog Devices
6 L7 R2 v8 j3 z) T/ V
+ t- p  x, i* o6 Q6 `( ?3 n8 @• DFSDM = Digital Filter for Sigma Delta Modulators:' {8 K: e* _# h: @% ]) p
  ·从Σ-Δ模块接收串行数据. z% y  i' C: P' T
  ·对接收到的Σ-Δ模块数据进行滤波- a7 u" f$ [0 d! |7 t' s2 Q3 R
  ·最大24位的输出精度
  H& Y7 l1 k4 x  N8 y/ D
- h8 c( S) _$ `. Z典型应用
$ u$ Z9 ]- I, m; C  T( K5 A•  电信号测量:电流、电压等。
% N* x+ D% h2 i+ h7 O  t6 u• 马达控制
; N0 O  ^( _2 A1 ]) ?: l( g) p• 医疗应用0 g: R" u5 }0 v, u' }* I, J/ S1 A
• 麦克风音频
0 }" n) g3 {+ H$ B! e" G# Q% H: ^# F% F! n' W
STM32 DFSDM架构图如下:9 B: C1 H1 J  j5 c; u5 ]
22.jpg . q7 G; z; X5 i- x: \

1 I% |0 ^& j0 L: l6 M3 [7 s1 E# |收发器: B) t& ^# A% t/ L+ q
• 快速串行输入(20MHz)) }  R9 M/ r1 Y2 x. c) Z
  · SPI或曼切斯特编码模式
' g  c2 P* ~( P, L( i2 _9 n7 |  · 时钟生成
2 r( z8 a7 k5 n8 b•  内部并行输入2 r' u8 {& u- x2 N  }; h2 A4 ]
  ·由CPU/DMA写入的16位寄存器数据输入
' l. t( H2 `% u* F! l: \  · 收发器提供串行连接到外部Σ-Δ模块,支持SPI、曼切斯特协议。收发器也支持通过CPU或DMA写入到DFSDM数据寄存器的内部16位并行数据输入,
& P, C& a8 E1 k1 r滤波器
7 E9 ?2 B0 \, F6 [% f. t$ O" @• Sinc1,Sinc2,Sinc3,Sinc4,Sinc5,FastSinc内插滤波器,过采样因子可达1024.
- `% E" B4 }+ p+ l( d; r$ A" `# Z+ p• 积分器过采样因子可达1024
9 }7 s" P2 U0 k  i) q2 Y% x4 O# H2 T0 U7 I
STM32 DFSDM应用框图如下:
, {$ ?! k) d& T8 E. B9 t- y
23.jpg 9 r" S8 J7 M1 Q8 j
整个DFSDM模块包含如下接口:! J( N- l( D$ w9 x5 J) C4 S2 `' W: \
•  8个串行收发器9 o/ {" k3 x" c/ x: |
• 4个Sinc滤波器和积分器
3 p) W2 m' ], u; |•  4个输出数据单元
1 V# u4 C8 `, p; \+ ?$ Y3 V5 S• 4个模拟看门狗
* G" A1 Q9 x& d6 l  l/ t, c+ ?1 L, l•  8个短路检测器/ s& [: {# |5 k' _9 ?, w
• 4个极值检测器
+ ~5 V. S; ~0 [4 F: s7 P) G; `# ^  N• 8个并行数据进入寄存器
' X/ y) Z) f4 l6 M, m6 U, g% n& d1 t! I% Q' [6 @' w) b
串行收发器: I3 m1 T. W- c$ B
24.jpg 3 m8 `! l9 n+ R/ V. H! J
功能' K5 c" ?2 m2 J0 x
• 从Σ-Δ模块接收1位的串行数据,提供时钟和数据给滤波阶段,最大支持8个输入串行通道。& V9 Y7 N8 U! j4 k% ~; ~
支持的协议
4 o' z6 E  C3 F0 O  u• 1线曼切斯特编码& K* D4 z' K" B) ]
• SPI模式(时钟和数据线)( {! ], B  d% h; ]- ^3 l
  · 上升沿、下降沿采样! P9 u5 x' x, j& P9 ?& j
  ·数据速率测量3 z; a) i9 B; D4 [; ~/ `0 r( C
  ·时钟缺失检测
7 {) s6 D& E6 o+ g2 f) l) [0 S8 ]  · 时钟速率高达20MHz/ l' u; l# i- ^5 c& s
• 串行输入(时钟和数据)通道的 DFSDM_DATINy和DFSDM_CKINy引脚可被重定向,通道重定向用于收集来自立体麦克风类型的PDM音频数据,PDM立体麦克风具有时钟和数据信号,数据通道提供左右声道信息,左声道进行时钟上升沿采样,右声道进行时钟下降沿采样。3 z2 K& n+ @7 f4 ]- r
$ w) w4 C$ b9 C, q7 @$ V; s
并行收发器. I# K* N& d9 M( l! y" s
25.jpg
8 p7 N0 E5 @3 V4 @1 g# h功能
8 _  E) E$ {0 a% H; k+ H. T3 B* B•从内部数据源接收16位的并行数据,并提供数据给滤波阶段。多达8个并行通道。
7 `2 K" M3 E$ E& X6 W内部并行输入数据源
/ S8 E2 b6 d. |3 [% M4 u' l! Q- L•RAM数据后期处理
, E  J  J' F8 L' g1 T' n' B) B, S  · 来自内部ADC的数据处理3 d4 X9 f, [* I8 p" Y
  ·来自被收集数据的后期处理数据' d3 j; z' b3 w
• CPU或者DMA提供数据到DFSDM输入寄存器
6 g3 J. A) Z& {5 `  o) ?# {
" }8 M4 `9 _) tSTM32 DFSDM温度测量应用原理图如下:3 _2 W/ ?8 @' O9 O2 t0 d
26.jpg
" a6 K  M4 \7 L# V
6 X6 l) b9 F" T5 WSTPMS2是一个双通道的二阶Σ-Δ模块,一个通道感知PT100的电压,另一个通道感知PT100的电流。使用1秒定时器来触发2个通道进行注入扫描转换。PC7(DFSDM1_DATIN3)是通道3,时钟为PC2(DFSDM1_CKOUT)。通道3测量PT100的电压,通道2测量PT100的电流。- H/ T% D" {; y: K. H7 z
27.jpg ; F' p+ G# y% H- R; c5 H6 C
PT100温度计算公式为:T = (PT100 – 100) / (0.385),只要通过能够测量出PT100的电压和电流,就能计算出PT100电阻值,进而得到温度值。
+ Z: o+ E' c" X* |5 A9 J; A8 Q% E" J  }
3 ~, L! t9 {. y0 E3 W+ n应用示例% F  p& M+ ^+ F; M. q! I
硬件平台基于STM32L476G-EVAL。
6 Z& M) ^; ^; i% F* ~" Q5 V/ _7 h; ~3 E. o' e- F2 e
CubeMX工程配置7 r  w6 h, a' m4 J4 u
选择STM32L476ZGTx,配置系统时钟为80MHz。
" b& Q; [" E9 l$ J  j
28.jpg
! Z" G7 C' z3 p2 P: l/ c9 Q5 y% o: X8 d/ g. D) D  J
将通道2配置为从通道3重定向输入,通道3则直接输入,两个通道使用相同的时钟源。
2 U# i0 w, @' f- ]9 m1 T
29.jpg
9 G, P! {/ I% y- z5 ]! R' a, y% g1 n9 w7 L" y1 v) U; N% \
对时钟进行80分频,设置DFSDM时钟为1MHz。% J$ ?( N/ ], a' ?9 B
30.jpg ) k5 {2 Q, t1 M8 g. d: ~
( t- {: X% `" y# r! @* ]7 T( _
将PC2(DFSDM1_CKOUT)、PC7(DFSDM1_DATIN3)配置为下拉,GPIO高速模式。
6 t8 V  `0 W; h' `  v& y4 p6 t) t# s/ {
31.jpg
1 i) `7 N6 Y8 J& N# i' X1 W" x: O* m0 o, @$ M% D2 e' B
通道2在时钟的上升沿采集数据,通道3在时钟的下降沿采集数据。
7 {6 H+ t# N5 Z: W6 H9 Y0 I9 u8 L
32.jpg 7 H9 {* \3 U+ O! a6 _$ Q
33.jpg
  Q) I! k7 e/ S# N2 y/ ^. a
34.jpg $ s8 E+ r9 X$ T+ D4 a3 p7 G
" _8 Q* m2 p. O
使能DFSDM1滤波器0全局中断。
5 R# x3 m4 t& z
35.jpg 2 J9 T. a" }5 J! @4 ]/ H$ z  Z
使能定时器1作为DFSDM转换的触发源,触发间隔为0.5秒。
* B+ j) M$ i+ }: D3 m
36.jpg
% `6 W8 l- a; o% J8 H
37.jpg 5 X! W/ ^5 W/ g1 `3 k/ R
$ M+ Q: [1 U2 f% ]$ f8 _
添加注入完成回调函数,获取通道2和通道3的转换值。
3 E" g2 x5 R* y) D3 V
38.jpg
* o* s& W& e. C/ J
39.jpg . U/ m: k# ^& z# B/ \
因为积分器过采样因子设置的是64,需要将转换结果除以64。
/ E  ]$ f, J* z7 M! _
40.jpg 7 S. E# |; z/ n" {* N
M就是过采样因子64,积分器输出的结果是代码中转换得到的通道2和通道3分别获取的电压和电流值。  i4 y" P! \) |+ G6 v" }

& z7 d! ?& G4 z" z. dmain.c中添加以下代码,启动DFSDM注入转换,启动定时器1来触发DFSDM注入转换。
9 l. y+ m- O0 A; h" m
41.png ! y& y4 E2 g4 s

) G. A8 q/ S: Q- e: a1 V8 Q
$ ^8 e: _4 k) V* T0 y4 h
+ v+ S) _/ q/ @7 D" T4 X* A+ V主循环中检测到有转换过的数据收到, 根据PT100温度计算公式计算温度。% [* q  ~* ?6 I! ~! K6 b+ k

1 ~  B  k& z& g0 l! Z/ \' X2 B3 B2 f结论
4 \% u3 C7 S1 L5 D% X8 nSTM32 DFSDM配合Σ-Δ模块,可对电压、电流、音频等信号进行高速串行采集,通过DFSDM对采集的数据进行滤波处理,并输出高精度24位的数据。在STM32 CubeMX工具中,可以方便的配置DFSDM模块,快速生成工程代码。
* u$ O! n7 m( y1 @$ y) w5 b* N% j4 E4 D5 \

. w" \9 ?9 x: R# q0 f0 l; r STM32 DFSDM测量温度应用.pdf (1.29 MB, 下载次数: 182)
收藏 2 评论3 发布时间:2017-4-5 17:18

举报

3个回答
jinglixixi 回答时间:2017-4-5 18:08:23
介绍详细,十分有用,值得收藏!多谢了!
abbit-1988 回答时间:2017-5-28 07:47:18
第二关失败
877562693 回答时间:2022-7-8 09:33:25
学习学习! u# ]! @* ?0 |# L
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版