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

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

[复制链接]
zero99 发布时间:2017-4-5 17:18
STM32 DFSDM测量温度应用
前言
& j5 }5 O% c$ q+ q/ P$ F% U- ]* ~STM32L4集成了DFSDM数字滤波模块,配合Σ-Δ器件使用,可进行高精度、高速率的AD测量。
( ]; U+ k, R. S8 Q
6 G6 j% D7 \! z+ h9 p! H模块框图5 p* Z  u- v2 _8 F3 R
STM32 Σ-Δ转换器应用框图如下:' S" w7 H3 p; Z, k- u
21.jpg
) c& D" g# p3 d) h6 d6 j( |! J; Q- Z$ x8 j( z
系统被分为两部分: STM32外部的模拟前端Σ-Δ模块和内置的数字部分DFSDM模块。
" o8 v7 J% ?& {; |6 a       DFSDM是STM32产品内部的一个新的数字外设,通常搭配外部的Σ-Δ器件使用,可根据相应的应用选择外部的模拟部分,如测量、马达控制等应用。模拟部分提供串行数据给DFSDM,DFSDM负责对数字信号进行处理。: _) J4 x/ L- g% D/ M2 ?
       DFSDM数字部分集成了模拟看门狗、注入和常规转换、灵活的触发系统、中断信号生成、极值检测等。1 B# }, G/ E& M7 s( k
• Σ-Δ模块+ D7 W& V* t+ Y  i6 }: \0 E' s* V5 v
  · 输入模拟信号
% ]5 M2 ]7 X7 }' Q; {1 l  · 输出1位或2位的快速串行数字信号,可达20MHz速率。$ i3 q( N7 c) X) M+ ^
  · 广泛的厂商支持: ST, TI, Analog Devices
5 e# Z( A5 K$ P# D7 Q) t9 ~2 H. e0 ^& O( B6 G
• DFSDM = Digital Filter for Sigma Delta Modulators:
" P( ?- i- A% I( K" l7 I  ·从Σ-Δ模块接收串行数据7 C( ]8 T5 Z4 t/ R- F. n
  ·对接收到的Σ-Δ模块数据进行滤波
, R" v8 i  i4 Z  ·最大24位的输出精度
7 {# ]! C4 ]* `* @# ~+ D& E/ a. W# X4 h
典型应用
" j" E2 N% C0 e1 Z1 z( v5 W•  电信号测量:电流、电压等。: A: @8 o. |; H: D1 a0 q
• 马达控制
$ K$ S# i3 c' ^* [) b4 m1 p8 }, o. _+ a• 医疗应用
" `* W( @/ _7 ^. Q8 s• 麦克风音频/ _' {; {* y( M' C1 _

7 N7 s2 `5 N: y2 F, r8 dSTM32 DFSDM架构图如下:
0 x9 _5 T" D& g3 l
22.jpg 5 ^/ H1 v/ E0 N4 l& I0 ?
# z! B( v8 e8 _1 y1 v+ n: w
收发器
- M3 z" {9 z  Q3 d# p• 快速串行输入(20MHz)
. Y- `4 e5 g$ G/ w. K  · SPI或曼切斯特编码模式
9 ^/ U( ^) e/ k: k# ^. b  · 时钟生成
2 R. N) ?# d  v: I* V•  内部并行输入/ H& e1 C: O! v$ M* D
  ·由CPU/DMA写入的16位寄存器数据输入- F# r! _' v: B
  · 收发器提供串行连接到外部Σ-Δ模块,支持SPI、曼切斯特协议。收发器也支持通过CPU或DMA写入到DFSDM数据寄存器的内部16位并行数据输入,
/ h+ z% [, D: E滤波器5 Q2 X# \! K0 ~
• Sinc1,Sinc2,Sinc3,Sinc4,Sinc5,FastSinc内插滤波器,过采样因子可达1024.
9 e7 E7 ^0 C& u• 积分器过采样因子可达1024
; D% G; R6 @# z, c6 S7 o7 F+ b1 Z0 [: _" _! r9 d) I) ~
STM32 DFSDM应用框图如下:: s# w8 _, p" \( V2 a7 \6 i  M
23.jpg
# Y# J( {  J3 w整个DFSDM模块包含如下接口:
2 b9 G* c! G) o& E% Y0 ?•  8个串行收发器8 x2 _, Z  F) e
• 4个Sinc滤波器和积分器
3 u% o9 L9 a' L# r•  4个输出数据单元' i) ~+ {" ~- p- L/ K
• 4个模拟看门狗
. H- Z5 e# M% B) z  {•  8个短路检测器. O; M6 P5 T+ L/ G9 {, n' @% I
• 4个极值检测器3 k) Q) V7 t* i( X
• 8个并行数据进入寄存器' E$ A9 g: [! ?8 Y4 z

; d# f, Z- q  e% L串行收发器
. `% P5 R0 k0 H" x( ^+ [
24.jpg
. e5 |$ q/ N- q- V* B功能; i1 c! k* _# ?- C' B5 ?
• 从Σ-Δ模块接收1位的串行数据,提供时钟和数据给滤波阶段,最大支持8个输入串行通道。- @9 ~. g  f2 ?6 U/ A! l2 Z
支持的协议
8 `2 C1 |, `* F' @, F: r• 1线曼切斯特编码: \" x) ], {6 @" |: v
• SPI模式(时钟和数据线)
- m; s& ~" v2 e4 f: V7 u' Y  · 上升沿、下降沿采样
( O4 N6 h: @+ y8 ^: h+ m  ·数据速率测量
! K. E% u' D# o# ^5 R  ·时钟缺失检测
5 I" y" E: b* l, S( C( [& D  · 时钟速率高达20MHz2 Y. s  a9 |3 y3 ^/ \( o2 m1 v
• 串行输入(时钟和数据)通道的 DFSDM_DATINy和DFSDM_CKINy引脚可被重定向,通道重定向用于收集来自立体麦克风类型的PDM音频数据,PDM立体麦克风具有时钟和数据信号,数据通道提供左右声道信息,左声道进行时钟上升沿采样,右声道进行时钟下降沿采样。
3 j' P$ R# e3 g( K$ F) k! V4 g# V' I8 n9 G$ s
并行收发器
( p+ n- ~6 Z, c& E+ T' D0 o
25.jpg
. H/ w3 o3 l% D9 y. d功能, K: X+ _; i! Q+ G. u9 F
•从内部数据源接收16位的并行数据,并提供数据给滤波阶段。多达8个并行通道。- i4 \) E5 ]% @$ P
内部并行输入数据源
$ F' ?/ J8 }$ K! W. O. y8 W! K2 I( e: W•RAM数据后期处理9 u  P" |/ F+ F$ {+ S, R* D# i
  · 来自内部ADC的数据处理
) Y3 f( j/ a5 s% r  ·来自被收集数据的后期处理数据2 B% V  f+ q% a( y' a7 s! i4 [0 e
• CPU或者DMA提供数据到DFSDM输入寄存器
7 F, p# L7 f1 ]. f9 ?% _" `7 ]: X7 l- i. S
STM32 DFSDM温度测量应用原理图如下:. F. i& E/ s3 F6 }8 c1 K
26.jpg
4 \1 ^3 G% T* Q* F4 r% p+ E' t5 q# I) ^7 e# S; c
STPMS2是一个双通道的二阶Σ-Δ模块,一个通道感知PT100的电压,另一个通道感知PT100的电流。使用1秒定时器来触发2个通道进行注入扫描转换。PC7(DFSDM1_DATIN3)是通道3,时钟为PC2(DFSDM1_CKOUT)。通道3测量PT100的电压,通道2测量PT100的电流。) \' z8 t$ Y3 F! h$ \
27.jpg
: _1 B+ C9 U% GPT100温度计算公式为:T = (PT100 – 100) / (0.385),只要通过能够测量出PT100的电压和电流,就能计算出PT100电阻值,进而得到温度值。  T  J. L0 s' t2 ~) o" {
. b$ h+ P( C/ e$ p* }8 y! o6 Z9 b
应用示例$ |; Z& g/ X  W! R
硬件平台基于STM32L476G-EVAL。: ^% c4 L! `- C( f+ c2 i
# x( @0 R* k( U
CubeMX工程配置5 ?0 q& L( S/ T' P& R
选择STM32L476ZGTx,配置系统时钟为80MHz。# H6 F3 i: H9 P5 r) P
28.jpg
. c/ B5 T! y( i2 n- \+ O* |- h9 g6 J6 B$ s  Q  ]1 K
将通道2配置为从通道3重定向输入,通道3则直接输入,两个通道使用相同的时钟源。4 }) n$ G  H: |9 O( F
29.jpg . ]1 }3 N. y' i/ v& i" L

$ J! D9 [9 J  }$ B对时钟进行80分频,设置DFSDM时钟为1MHz。
. G% k; H, O; O. d3 E
30.jpg ' M; c! Q) f. f, m; H  O

7 z; N  [6 C5 d0 g将PC2(DFSDM1_CKOUT)、PC7(DFSDM1_DATIN3)配置为下拉,GPIO高速模式。5 m* H) K+ @* m0 r, E! ]
31.jpg 7 z- a$ @/ E! ?) A3 g3 l/ O
' Y1 @! C8 h3 Q: \! S8 Z7 a1 O
通道2在时钟的上升沿采集数据,通道3在时钟的下降沿采集数据。
. u& H2 j5 |6 X7 c
32.jpg
. x/ @  B  X+ S
33.jpg   x( ?, p4 W! ^; i8 i8 [. _
34.jpg
4 s/ {7 v0 y- H. D) w2 D4 p0 q2 n3 R. V
使能DFSDM1滤波器0全局中断。
: E% }2 q+ k- r/ M2 h1 s% ^0 r
35.jpg
! P2 q$ @) Y0 y& _/ `使能定时器1作为DFSDM转换的触发源,触发间隔为0.5秒。
; N# y' U& n3 `4 Y9 E# D
36.jpg 7 ^# _7 F5 d/ U8 R( ]
37.jpg * u- U7 j) q3 d/ ], m( _7 {
/ V! ?5 m, K% T3 o' R( T2 {& B4 u
添加注入完成回调函数,获取通道2和通道3的转换值。6 F4 Z* s/ D* U! w* `
38.jpg % r4 c5 q4 ]) T& G* x7 U
39.jpg
& a" A3 y7 s; B' U! }' g因为积分器过采样因子设置的是64,需要将转换结果除以64。* m; k. a9 a7 N. j$ e
40.jpg 0 `, x  X+ s  f; `- n% M
M就是过采样因子64,积分器输出的结果是代码中转换得到的通道2和通道3分别获取的电压和电流值。
( ?% Y/ ?& h8 m
  n* d. Q4 z. Q: w# t& o, }main.c中添加以下代码,启动DFSDM注入转换,启动定时器1来触发DFSDM注入转换。
" Z8 b: r  s, ^0 ]% w; ]
41.png
7 v8 S0 s/ P+ }

8 f; p6 b( l" S! K7 k
" z  m/ [2 {8 a% T6 ^) u
8 c" F/ y0 r! g. N% h6 h主循环中检测到有转换过的数据收到, 根据PT100温度计算公式计算温度。: c3 e6 D3 b% \$ `7 }5 {
* v9 M' \" E  d: n
结论
  ]8 ]) q' |9 W" O! z3 vSTM32 DFSDM配合Σ-Δ模块,可对电压、电流、音频等信号进行高速串行采集,通过DFSDM对采集的数据进行滤波处理,并输出高精度24位的数据。在STM32 CubeMX工具中,可以方便的配置DFSDM模块,快速生成工程代码。$ }; y. P4 J% W# G7 h1 u

3 j$ s* |& f, C7 C
7 @) M5 U0 C/ S- q8 n! N/ ]& W+ ? 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
学习学习
# Q. t+ N; g- V
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版