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

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

[复制链接]
zero99 发布时间:2017-4-5 17:18
STM32 DFSDM测量温度应用
前言+ W* d9 S9 w# i1 i. N5 r
STM32L4集成了DFSDM数字滤波模块,配合Σ-Δ器件使用,可进行高精度、高速率的AD测量。
" V- A5 q8 {/ _3 t0 v
3 }: f$ D- [9 a) }8 L* J* D" G( l0 l模块框图- s) ?) `( }) l$ z4 T+ J2 w4 t
STM32 Σ-Δ转换器应用框图如下:
7 q9 T2 z) Q) k/ n8 ^
21.jpg
' Z) h+ X) b2 \9 h  [6 r8 S! B- {# w- q" q+ C; [7 F
系统被分为两部分: STM32外部的模拟前端Σ-Δ模块和内置的数字部分DFSDM模块。3 ~6 |! M9 f9 S1 s+ |
       DFSDM是STM32产品内部的一个新的数字外设,通常搭配外部的Σ-Δ器件使用,可根据相应的应用选择外部的模拟部分,如测量、马达控制等应用。模拟部分提供串行数据给DFSDM,DFSDM负责对数字信号进行处理。3 C6 ~3 n. X7 O. f. O- }* n
       DFSDM数字部分集成了模拟看门狗、注入和常规转换、灵活的触发系统、中断信号生成、极值检测等。
" E- W* T" K" H! s• Σ-Δ模块5 g( v; _0 c7 F) n7 q$ ?
  · 输入模拟信号
- d3 c$ f* U( R1 _- Q/ r. Y  · 输出1位或2位的快速串行数字信号,可达20MHz速率。
7 c. @& D( J: t9 r6 z  · 广泛的厂商支持: ST, TI, Analog Devices
7 w7 }, k% T) y5 V) S3 O
, ~3 @1 t$ \4 q  H. a• DFSDM = Digital Filter for Sigma Delta Modulators:
4 D/ b0 [3 U8 r* J0 ]  ·从Σ-Δ模块接收串行数据. Z/ I& o$ I' o: q* N# Z
  ·对接收到的Σ-Δ模块数据进行滤波
" k. b# h- G( v: X2 i9 ~  ·最大24位的输出精度
8 B: m% ]: A5 q1 p; N, `0 h1 H; }7 B" J/ ]2 D1 }
典型应用
- M) v  ?1 X1 d2 I( s•  电信号测量:电流、电压等。
+ z1 h5 R0 D+ Q: N- P3 x" ^• 马达控制
, S' e# O% G$ e. @• 医疗应用- w- O5 f. r& ]7 }8 q1 p5 ^! D; E
• 麦克风音频
, r# Q, n; \9 }. H  p& X+ z: B2 a0 X% J- |0 S6 A* `
STM32 DFSDM架构图如下:
( M. z0 a9 t1 {6 y
22.jpg
0 \, O  d% D- h% e, B3 R$ C, v2 L" E
3 F$ W5 f$ o" a2 @收发器
7 S8 p( ?( G6 M& g! I7 G' i• 快速串行输入(20MHz)# ^% L& l+ Q; q& D' e
  · SPI或曼切斯特编码模式
8 ?" A0 @' g5 u% d+ P: q  · 时钟生成/ e9 B' ?, C6 F; T* G; ?' E5 s
•  内部并行输入/ q- _$ a7 p" ~) t  d8 G- G% K# ]
  ·由CPU/DMA写入的16位寄存器数据输入
- m2 }; ^% E5 s! W  · 收发器提供串行连接到外部Σ-Δ模块,支持SPI、曼切斯特协议。收发器也支持通过CPU或DMA写入到DFSDM数据寄存器的内部16位并行数据输入,. X% K, h" v( ]$ O% p8 y1 g
滤波器' d: d3 h1 X& b2 Q$ I
• Sinc1,Sinc2,Sinc3,Sinc4,Sinc5,FastSinc内插滤波器,过采样因子可达1024.( D! J0 P: f% g
• 积分器过采样因子可达1024
9 t) J3 z3 g4 ~, t
2 V# B6 `' w8 ~1 X6 C: R* u2 W) QSTM32 DFSDM应用框图如下:' C+ @5 _  E% I
23.jpg
6 Q9 k2 {8 P- n' _/ c; a" Z5 y整个DFSDM模块包含如下接口:9 d! I$ h* N$ V$ J
•  8个串行收发器; I& O: d8 E/ p- ^1 @1 d  ]/ u7 s- f
• 4个Sinc滤波器和积分器0 @' L- \# p# M; ^- c
•  4个输出数据单元
* P; D  q+ e  F" F0 S• 4个模拟看门狗
# d' Z4 u. e* t/ m' r+ q% S•  8个短路检测器
6 J; z# r; G5 s, M& i- ~• 4个极值检测器
0 b) |: c, f' s! `* `# ?9 {• 8个并行数据进入寄存器3 ~% U( U3 o7 e+ m; W0 l

; |& B: n7 y2 B& h串行收发器
2 E, U  s* m. y" ^
24.jpg
5 g! R( h7 T4 j/ w2 P) C5 j功能; A& n, L9 G* ]6 B* n: j: g
• 从Σ-Δ模块接收1位的串行数据,提供时钟和数据给滤波阶段,最大支持8个输入串行通道。4 m, T2 j/ E! z( r9 x( r2 |' }
支持的协议
1 v9 n9 A6 \) c9 d' Y4 g7 I8 Q) Z) R• 1线曼切斯特编码+ I/ [( J& O% \8 ?$ X% M& {
• SPI模式(时钟和数据线)2 l2 L' ]# E& m
  · 上升沿、下降沿采样
! e4 R9 `5 `$ [& t: x  ·数据速率测量
- h( u. g2 m" S$ n5 h8 s2 `  ·时钟缺失检测' C9 K( S& K/ P' h0 v+ U1 G
  · 时钟速率高达20MHz
/ T9 `' K! Y2 C  ~6 f* |; T• 串行输入(时钟和数据)通道的 DFSDM_DATINy和DFSDM_CKINy引脚可被重定向,通道重定向用于收集来自立体麦克风类型的PDM音频数据,PDM立体麦克风具有时钟和数据信号,数据通道提供左右声道信息,左声道进行时钟上升沿采样,右声道进行时钟下降沿采样。
3 x6 k3 \! g# Z
, h0 K% C& ]) z( A8 x9 \并行收发器2 ?$ U0 A: A2 g, |! \4 X& ^/ h; T
25.jpg
* y/ ]  e# u% `: }3 E功能" D, }; l: [- s4 W- U
•从内部数据源接收16位的并行数据,并提供数据给滤波阶段。多达8个并行通道。
5 X! }& e, o( S8 R5 p% M内部并行输入数据源$ M0 J9 V" p* v
•RAM数据后期处理
$ g. }1 _& P6 D) {1 S# Q: [  · 来自内部ADC的数据处理3 D: @& p/ W" s
  ·来自被收集数据的后期处理数据
  S& Y( T. e, T• CPU或者DMA提供数据到DFSDM输入寄存器
1 q0 R9 K+ n2 e. K2 m$ g6 u
$ u! b) D4 ]0 S  E0 kSTM32 DFSDM温度测量应用原理图如下:7 J5 y- f7 m; q5 V
26.jpg   Z( |! Q! p, }) a& h/ ^
! _0 c: D6 m* X0 D6 s
STPMS2是一个双通道的二阶Σ-Δ模块,一个通道感知PT100的电压,另一个通道感知PT100的电流。使用1秒定时器来触发2个通道进行注入扫描转换。PC7(DFSDM1_DATIN3)是通道3,时钟为PC2(DFSDM1_CKOUT)。通道3测量PT100的电压,通道2测量PT100的电流。
0 d4 ^0 B9 f1 k
27.jpg
$ e* E3 O, v4 H* r: e" pPT100温度计算公式为:T = (PT100 – 100) / (0.385),只要通过能够测量出PT100的电压和电流,就能计算出PT100电阻值,进而得到温度值。
+ I' Z  y5 Y' F
% o; ~! ]: I/ T0 N6 @% T7 L应用示例  Z. f! Q6 ~6 X1 q3 G; u2 J* A
硬件平台基于STM32L476G-EVAL。% n. b6 f1 D, m0 ?+ n& \
2 _# {4 B- f" ?, U
CubeMX工程配置
- C  Z* q$ d6 A2 s选择STM32L476ZGTx,配置系统时钟为80MHz。; l' _, T  I' w# D
28.jpg   r' J, L' d$ R

* g& w; f/ e3 y8 K9 k$ d! t将通道2配置为从通道3重定向输入,通道3则直接输入,两个通道使用相同的时钟源。
4 E. n5 J3 E5 B8 v
29.jpg - \7 n; f1 s6 i0 c

) f% T! [/ O: M1 I. j对时钟进行80分频,设置DFSDM时钟为1MHz。( y/ j, ]  U3 j+ D( b3 N9 D0 t* |: S
30.jpg
  z3 b- N( N9 ~7 f
( F0 S: c4 }- `( |6 A% f8 k将PC2(DFSDM1_CKOUT)、PC7(DFSDM1_DATIN3)配置为下拉,GPIO高速模式。5 z! P9 Y: Y) t! y2 ?! x7 Y4 c
31.jpg 5 {! s. n) X! g$ t3 k: P
3 Q( l; h5 }# ]% P5 r8 v
通道2在时钟的上升沿采集数据,通道3在时钟的下降沿采集数据。
' \/ X  b- ~" s) B+ f% [6 ^
32.jpg
6 L. s# j+ \  X4 M2 s5 b1 k
33.jpg " a. G, l8 H8 Y" K+ }/ C, E
34.jpg " X5 i/ \. _0 b: r. g9 A

0 T0 t. O" a$ |* J# S; `; U7 x使能DFSDM1滤波器0全局中断。. R- j! F' s, I" p  }
35.jpg
* T9 Z, Q* C* V& K使能定时器1作为DFSDM转换的触发源,触发间隔为0.5秒。
) a6 }$ X8 t" z- v3 T/ i/ a0 k  f
36.jpg * E3 [9 e0 t" Q9 r0 h
37.jpg
# a' K* L/ P+ R* {/ d3 O; Z1 l/ K7 e& h0 S
添加注入完成回调函数,获取通道2和通道3的转换值。
2 F, j" ~6 ]* X) x$ m
38.jpg $ ~- i8 U% E3 H* v5 d6 `
39.jpg * [, W$ u& A# b: s
因为积分器过采样因子设置的是64,需要将转换结果除以64。
+ m+ D# i' t* E7 D
40.jpg
' W  G7 z* ~" h  I: EM就是过采样因子64,积分器输出的结果是代码中转换得到的通道2和通道3分别获取的电压和电流值。
- u  E6 d% l# U3 K5 M3 S7 t8 E3 x4 z% A% V
main.c中添加以下代码,启动DFSDM注入转换,启动定时器1来触发DFSDM注入转换。( g" V1 r' @% F- x- j, ?# O# i
41.png
* H& o6 z- @9 V
. n2 e4 }) |& @0 o' L2 P: d7 p( l
- B& h& x0 @  j& S

; L* X7 e3 ~3 j0 I) Y; ]- k主循环中检测到有转换过的数据收到, 根据PT100温度计算公式计算温度。6 A. j' o+ Z# V4 V! T4 b

+ N, F& f, v' y* K结论, s1 X* Q* m7 |/ l
STM32 DFSDM配合Σ-Δ模块,可对电压、电流、音频等信号进行高速串行采集,通过DFSDM对采集的数据进行滤波处理,并输出高精度24位的数据。在STM32 CubeMX工具中,可以方便的配置DFSDM模块,快速生成工程代码。4 u- r# B1 f& L, C& o
6 [! {" R* F( K1 G: g7 O; B+ @
9 |3 z* w2 {. z. N- x! e
STM32 DFSDM测量温度应用.pdf (1.29 MB, 下载次数: 184)
收藏 3 评论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
学习学习. k. }) ]  r/ k/ n0 Q: Z$ c* d: z
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版