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

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

[复制链接]
zero99 发布时间:2017-4-5 17:18
STM32 DFSDM测量温度应用
前言
+ f! L% P  C+ K; S% I: h7 |STM32L4集成了DFSDM数字滤波模块,配合Σ-Δ器件使用,可进行高精度、高速率的AD测量。! i5 z3 ^8 y, g

. X6 z2 |5 m* d9 J& i& q4 ^模块框图. L' ~* y$ n. W3 y. l9 z
STM32 Σ-Δ转换器应用框图如下:+ u' ~# \- {. Y+ @/ k
21.jpg
) a% O" @/ x- M$ [- l# K
- B: U2 i2 C2 G9 \" k" o7 {6 {系统被分为两部分: STM32外部的模拟前端Σ-Δ模块和内置的数字部分DFSDM模块。
+ @1 I( K  {) o& Q6 V3 y% I) x       DFSDM是STM32产品内部的一个新的数字外设,通常搭配外部的Σ-Δ器件使用,可根据相应的应用选择外部的模拟部分,如测量、马达控制等应用。模拟部分提供串行数据给DFSDM,DFSDM负责对数字信号进行处理。6 L" z+ g8 e) d* t0 _
       DFSDM数字部分集成了模拟看门狗、注入和常规转换、灵活的触发系统、中断信号生成、极值检测等。/ f# S) R3 ^4 ?* i
• Σ-Δ模块
8 r3 {! Z# D& A" C  · 输入模拟信号
' _8 W9 v* y0 k  d7 u/ A" x& L. \  · 输出1位或2位的快速串行数字信号,可达20MHz速率。. D" \& [3 z; Z; h/ i2 w# ^
  · 广泛的厂商支持: ST, TI, Analog Devices
  n; s0 p5 T2 D& K4 p9 I8 b
4 ]! t$ g, _4 ^, z3 ^  k( \  e• DFSDM = Digital Filter for Sigma Delta Modulators:5 K+ L& n% ~1 ^' ~$ t
  ·从Σ-Δ模块接收串行数据! t( B( J. w. T( e4 ]6 E
  ·对接收到的Σ-Δ模块数据进行滤波
# B' p9 C" \/ ]; q  ·最大24位的输出精度
& W; J0 ?5 Z% z3 Z( ^! U: x2 L
3 H8 l1 m4 e3 ?4 E5 z! N( F: o8 ~典型应用
3 _, K: X" p* @& W0 d•  电信号测量:电流、电压等。
5 x+ @  O7 }1 X0 v• 马达控制
) s. {# I: ^( b2 l2 }• 医疗应用# j4 d6 V- ~1 I6 r
• 麦克风音频3 a/ J: ~2 `! Z/ j
$ q3 e& }5 [0 \! z# R1 \& r
STM32 DFSDM架构图如下:
: F! L; E- }5 @! Q/ h9 \, Q
22.jpg
) L  X! Z% ^& }( k7 ?5 @5 g6 X9 y; Y% G. Z6 J
收发器* D# A& L  U" O& a4 |2 u
• 快速串行输入(20MHz)
7 k4 c( M# P0 U  [+ y! p  · SPI或曼切斯特编码模式: |0 c9 s4 p: p/ L5 F" o
  · 时钟生成3 V0 C0 F0 T3 Q8 R: @, g
•  内部并行输入2 F# w' _  R) W: b: W
  ·由CPU/DMA写入的16位寄存器数据输入1 R+ K5 S7 y  Y- O' M& C% g
  · 收发器提供串行连接到外部Σ-Δ模块,支持SPI、曼切斯特协议。收发器也支持通过CPU或DMA写入到DFSDM数据寄存器的内部16位并行数据输入,
5 {- w% r( [/ B6 @1 v滤波器4 I* W5 ]$ \3 N! o3 ^. _, c4 r
• Sinc1,Sinc2,Sinc3,Sinc4,Sinc5,FastSinc内插滤波器,过采样因子可达1024.
" V& _9 r" n& f) j4 d& u* a• 积分器过采样因子可达1024
! n$ Z% k+ d) B1 c  m. D2 ?/ L' f% ]) n* k
STM32 DFSDM应用框图如下:
8 l7 ~* ?7 i: d' ?0 f
23.jpg
* e& N! I" S; J- w8 a  D整个DFSDM模块包含如下接口:& H5 M! }- Q3 e) O- f
•  8个串行收发器
/ E& ?5 l* s! }4 A& F) z• 4个Sinc滤波器和积分器! S3 s. }/ B2 ]5 H% ^. }7 _  M, P
•  4个输出数据单元
4 v) A" r" l4 l• 4个模拟看门狗# h/ G* i4 {' w) {+ N. c- z
•  8个短路检测器# \: H9 Y! h8 S$ |( k
• 4个极值检测器+ M. D0 p  k# G5 g2 a2 u
• 8个并行数据进入寄存器
! T. D+ Y% O) ]5 ~: y- L0 |; x0 k3 V- U
串行收发器4 m, c; _+ s$ Y3 m( ?) o6 z
24.jpg 5 p" q. i5 a) j8 F5 f' m* t
功能
6 y( `' l8 w0 U+ @# [& }• 从Σ-Δ模块接收1位的串行数据,提供时钟和数据给滤波阶段,最大支持8个输入串行通道。7 s) R! z7 t6 y! Q! O7 t
支持的协议/ P5 v$ X5 D2 M% }1 `+ [0 s
• 1线曼切斯特编码
, ?1 ?( R; T9 x/ ?& ]: r• SPI模式(时钟和数据线)# |9 \$ L' J7 K, U, P
  · 上升沿、下降沿采样
5 x* W  E$ D" Y9 v' E' p  ·数据速率测量, S' o% _6 z; a& ^9 [; U) \' h2 ^7 R
  ·时钟缺失检测$ b) ~5 k$ E5 g
  · 时钟速率高达20MHz
. H" O7 d$ i- x! F• 串行输入(时钟和数据)通道的 DFSDM_DATINy和DFSDM_CKINy引脚可被重定向,通道重定向用于收集来自立体麦克风类型的PDM音频数据,PDM立体麦克风具有时钟和数据信号,数据通道提供左右声道信息,左声道进行时钟上升沿采样,右声道进行时钟下降沿采样。
- s5 ]1 L9 c% b5 l0 L/ C1 A2 z; v3 @$ q+ ?- u5 J
并行收发器2 M, ]+ i- {6 w; o# g8 i8 {
25.jpg
. p3 @- N9 y& }, F. w$ Z% x9 ^; i6 k功能4 f# X6 e, t' A
•从内部数据源接收16位的并行数据,并提供数据给滤波阶段。多达8个并行通道。0 ^/ C% M: [7 s0 c5 I4 L1 X
内部并行输入数据源- w  p3 g2 b3 l1 T- P
•RAM数据后期处理: G/ b: N% a6 }" T
  · 来自内部ADC的数据处理
$ k% \9 h  Q+ E  ·来自被收集数据的后期处理数据
3 d" |; `: q/ y5 n$ D% v' w+ V& k• CPU或者DMA提供数据到DFSDM输入寄存器
9 X2 Z! v0 F7 u2 m% [& k0 E4 u/ |, r; w$ K0 ]
STM32 DFSDM温度测量应用原理图如下:
5 O, |" T& }5 i- }9 d1 k: [% [
26.jpg
, M0 L6 y$ R2 @( f/ t  A% p" {
. H1 N% E2 d( a& H: x- oSTPMS2是一个双通道的二阶Σ-Δ模块,一个通道感知PT100的电压,另一个通道感知PT100的电流。使用1秒定时器来触发2个通道进行注入扫描转换。PC7(DFSDM1_DATIN3)是通道3,时钟为PC2(DFSDM1_CKOUT)。通道3测量PT100的电压,通道2测量PT100的电流。) H2 B( e& B6 z5 j) Q; E
27.jpg " m% b6 C% X% n5 e9 D! |7 D
PT100温度计算公式为:T = (PT100 – 100) / (0.385),只要通过能够测量出PT100的电压和电流,就能计算出PT100电阻值,进而得到温度值。% b: [# r  e# X; Z( O$ K

9 G$ `" m2 W- l) G) F应用示例$ D. v; X+ r9 b  ^( q9 c
硬件平台基于STM32L476G-EVAL。* Z+ w, l% W0 r  j# l
. Z' x- v3 ^3 S) b
CubeMX工程配置) k! q( f6 N8 \4 A3 ]1 U
选择STM32L476ZGTx,配置系统时钟为80MHz。, m% U1 L& @8 u
28.jpg
" d0 ^# d2 e6 u' _0 l7 |1 r1 ^+ I2 e0 O) P% K0 C' n  f
将通道2配置为从通道3重定向输入,通道3则直接输入,两个通道使用相同的时钟源。1 V9 |7 S1 L1 [! o% U. x
29.jpg
( S" U$ ~/ ?" w; a2 ^) S+ C" f! T" f. `7 o4 |0 ~5 J" Q" D) B
对时钟进行80分频,设置DFSDM时钟为1MHz。0 h8 W8 {8 q* U% r/ e, B# l  x
30.jpg ; H* J/ P% ?/ p& S6 H6 H- c

3 X5 ?; k: b4 l* V将PC2(DFSDM1_CKOUT)、PC7(DFSDM1_DATIN3)配置为下拉,GPIO高速模式。5 f% c7 M2 c6 w$ o- X2 p
31.jpg
$ ?& i4 j% G: w, O, l, `* u6 r$ W; i6 P6 m- _3 y5 H
通道2在时钟的上升沿采集数据,通道3在时钟的下降沿采集数据。" |  ?! w- T& T" F# r! h+ e  i+ h
32.jpg . `+ @8 D! d$ E% j9 G
33.jpg + n( E# @' T  \% S
34.jpg . k5 o7 Z% N7 r/ y) v3 C

, \( ^7 K. L/ E使能DFSDM1滤波器0全局中断。: Z+ b5 r" `% K2 r& O3 T  {9 [( x$ u
35.jpg
3 E: q, `4 f2 V, E4 M, A5 ]使能定时器1作为DFSDM转换的触发源,触发间隔为0.5秒。7 ^5 S' z# n: ]5 e; J! v) ?0 I) c* U
36.jpg 4 _, x: t1 ~3 g- F/ c
37.jpg : H$ s" j7 }1 K
( F0 R  M, O3 t' o6 p3 w  ?/ p6 N5 ]
添加注入完成回调函数,获取通道2和通道3的转换值。& n+ E; i/ r6 q9 H2 [: b- c
38.jpg
6 k7 r' d; o* l
39.jpg
9 k+ V+ K/ n; C" k( o因为积分器过采样因子设置的是64,需要将转换结果除以64。
: C* h& z3 Z8 @! N
40.jpg
7 Y- a/ {' s6 [* G% S$ L/ EM就是过采样因子64,积分器输出的结果是代码中转换得到的通道2和通道3分别获取的电压和电流值。
& o0 |5 i$ L% W) P, J2 p/ W" O7 L+ w( [' L& i: _
main.c中添加以下代码,启动DFSDM注入转换,启动定时器1来触发DFSDM注入转换。
5 b) m' |  g# Z  A6 y
41.png ! E% A/ \3 z/ Y5 _
2 c. Z9 E* s5 R" f
- u* r" d3 W2 d7 R4 p

% H- l. c. y# A0 V4 B8 N5 b4 ~主循环中检测到有转换过的数据收到, 根据PT100温度计算公式计算温度。! i: o! ^/ o+ U8 i( Q! d

% L8 f0 Q6 ~# p结论
2 b- b8 r9 k# l1 a1 W7 n# K7 }STM32 DFSDM配合Σ-Δ模块,可对电压、电流、音频等信号进行高速串行采集,通过DFSDM对采集的数据进行滤波处理,并输出高精度24位的数据。在STM32 CubeMX工具中,可以方便的配置DFSDM模块,快速生成工程代码。
) i' l9 V/ D+ t1 o2 y$ m: t+ @: ?7 z: B' V6 Y) p

* ^% r' e+ Z! X6 i6 N% m STM32 DFSDM测量温度应用.pdf (1.29 MB, 下载次数: 168)
收藏 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
学习学习, }' T! e! m+ z" \" e4 _
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版