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

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

[复制链接]
zero99 发布时间:2017-4-5 17:18
STM32 DFSDM测量温度应用
前言
& I! }3 ^% {8 ~STM32L4集成了DFSDM数字滤波模块,配合Σ-Δ器件使用,可进行高精度、高速率的AD测量。' S; x- P: @, C) q4 u* H

# a( N' _, O' t' Q% p模块框图
/ ?- Z8 s0 X  j+ S0 JSTM32 Σ-Δ转换器应用框图如下:
/ q  g! H% N, n# u  f+ A
21.jpg
  B( I$ L/ ~' S: [1 G8 j+ l9 z( k# L9 C; s# {
系统被分为两部分: STM32外部的模拟前端Σ-Δ模块和内置的数字部分DFSDM模块。
5 V! ]; e0 L2 q       DFSDM是STM32产品内部的一个新的数字外设,通常搭配外部的Σ-Δ器件使用,可根据相应的应用选择外部的模拟部分,如测量、马达控制等应用。模拟部分提供串行数据给DFSDM,DFSDM负责对数字信号进行处理。* b9 S- i: _  f  I9 z+ {! n/ f8 ^
       DFSDM数字部分集成了模拟看门狗、注入和常规转换、灵活的触发系统、中断信号生成、极值检测等。
6 u) A" [0 k" R% G1 v) T• Σ-Δ模块
  Z, u7 g" G$ y" v- a  · 输入模拟信号, q& ?2 ?9 A- a' A: A/ C
  · 输出1位或2位的快速串行数字信号,可达20MHz速率。
3 t4 Z' _/ h6 r+ x5 w9 E( X7 h  · 广泛的厂商支持: ST, TI, Analog Devices6 i, \: E* a( Q
3 c6 Q8 H+ G5 Q$ E2 a4 r' W
• DFSDM = Digital Filter for Sigma Delta Modulators:
, S5 E* W5 g& |- T. C( I! q  G2 S  ·从Σ-Δ模块接收串行数据9 T: L  U( e/ Z: _/ i
  ·对接收到的Σ-Δ模块数据进行滤波2 f4 S5 f/ V% Z: c5 g% X# _
  ·最大24位的输出精度) M# |2 \, F& j9 }: e! x+ j
4 O& C# L9 P8 O  E. R4 Z6 A
典型应用
9 j# @- U% L' e3 K•  电信号测量:电流、电压等。
4 l# m3 [; N" N# \! G5 l% c• 马达控制
+ [5 P  |$ r& ^% K• 医疗应用
+ C1 U9 Z% b" d) k) L) N• 麦克风音频
% Z$ x7 ]' x! h: {4 y+ c3 y: F4 G5 n, _6 H3 l4 \
STM32 DFSDM架构图如下:! Y6 q* Y# P* D0 t
22.jpg
/ I( ?+ r" D6 d' n+ T1 p7 F( d3 t6 R0 ~, `/ p' m4 d
收发器$ ]- k; O6 Z% J% Y
• 快速串行输入(20MHz)" Y" a9 K( E" V9 d% F1 t  e! R
  · SPI或曼切斯特编码模式0 X: r  O: y. U
  · 时钟生成
& M% V2 n+ @" {; N" y! o•  内部并行输入
+ ^# R/ `" e$ I  ·由CPU/DMA写入的16位寄存器数据输入
& G' ?2 B6 K! @* p6 B0 |$ `; v$ G  · 收发器提供串行连接到外部Σ-Δ模块,支持SPI、曼切斯特协议。收发器也支持通过CPU或DMA写入到DFSDM数据寄存器的内部16位并行数据输入,  ]4 d1 ~4 e" E( h
滤波器" ~& V* ?- K$ i9 l( r: K2 I
• Sinc1,Sinc2,Sinc3,Sinc4,Sinc5,FastSinc内插滤波器,过采样因子可达1024.- L  x; y/ |9 v! l8 D
• 积分器过采样因子可达1024/ X# V2 d7 v, h& R

/ P2 h7 \2 ~) T. BSTM32 DFSDM应用框图如下:3 h3 @4 J+ z( A6 `( Q
23.jpg " t4 v! @  R; ]. z8 Q  [& a" a, {
整个DFSDM模块包含如下接口:9 F; h7 H5 |( P% w' a
•  8个串行收发器
+ s) z+ `7 N0 e/ [• 4个Sinc滤波器和积分器- y. H. P. p7 v0 Y" d
•  4个输出数据单元$ V  k7 B8 W) y3 i
• 4个模拟看门狗0 D6 ]  L) b3 h7 ?
•  8个短路检测器: |# L4 L) i1 }; g% {
• 4个极值检测器: J( E9 t7 Y) R  w
• 8个并行数据进入寄存器1 F& \" |4 z: v5 r
: ^* Y2 G, E* b. P/ P& n
串行收发器/ J, c! s0 j  V4 Y
24.jpg
) C' J: k7 g) C功能" L1 @/ O% T4 `7 b; X& n* q
• 从Σ-Δ模块接收1位的串行数据,提供时钟和数据给滤波阶段,最大支持8个输入串行通道。: W* V3 @0 w: R
支持的协议
9 X; r+ U4 p( ?: o% _• 1线曼切斯特编码& q! F, i. w$ ^3 h
• SPI模式(时钟和数据线)) Z3 g6 I$ r/ Y
  · 上升沿、下降沿采样
' h( O* J8 g! u8 Y6 e/ @: y0 h. F: \  ·数据速率测量. t3 l$ ~8 S: W" C; E9 ]. c
  ·时钟缺失检测; ~! Z, [5 Q9 Q% {
  · 时钟速率高达20MHz
0 w$ B# {  `/ t$ e• 串行输入(时钟和数据)通道的 DFSDM_DATINy和DFSDM_CKINy引脚可被重定向,通道重定向用于收集来自立体麦克风类型的PDM音频数据,PDM立体麦克风具有时钟和数据信号,数据通道提供左右声道信息,左声道进行时钟上升沿采样,右声道进行时钟下降沿采样。
; [9 y9 r4 R! d- A
$ Y" F: J- n; j# T, k3 k并行收发器
! U6 u  j. k; a, K
25.jpg
, q8 h" j$ ^6 q4 T9 j4 ]6 V$ l功能
, H6 G. b) A- {: k•从内部数据源接收16位的并行数据,并提供数据给滤波阶段。多达8个并行通道。& C# ?8 p: F& U- Z  a1 F
内部并行输入数据源
: a) `# t! [  I9 G7 g•RAM数据后期处理6 S' W! u3 u# U1 e0 o
  · 来自内部ADC的数据处理( b; m6 h$ Q7 q% w* @
  ·来自被收集数据的后期处理数据
% [: |. V2 ], P' W, z8 M• CPU或者DMA提供数据到DFSDM输入寄存器
. _& _& P- o/ e3 |- n. p( b' F9 @+ h5 n- v& N, b) M
STM32 DFSDM温度测量应用原理图如下:
$ s! i) m5 ], p- m) \9 W
26.jpg % A( q8 }7 m1 ^  T! ~

& q6 z; n/ p. [7 \- `  W# S$ q- QSTPMS2是一个双通道的二阶Σ-Δ模块,一个通道感知PT100的电压,另一个通道感知PT100的电流。使用1秒定时器来触发2个通道进行注入扫描转换。PC7(DFSDM1_DATIN3)是通道3,时钟为PC2(DFSDM1_CKOUT)。通道3测量PT100的电压,通道2测量PT100的电流。
  }  t: |( z5 v0 }  t9 p+ ^
27.jpg   w6 ^6 @/ ?2 I2 h- i2 c9 l% |
PT100温度计算公式为:T = (PT100 – 100) / (0.385),只要通过能够测量出PT100的电压和电流,就能计算出PT100电阻值,进而得到温度值。
" Z0 e4 W; D5 s% |# D2 z( l1 J+ D
应用示例* J9 D' z! W) `! c
硬件平台基于STM32L476G-EVAL。9 e8 h$ g5 `! C, V

7 i5 }$ ~  e  M# X# c( cCubeMX工程配置! i, [1 M) Q) r/ K8 \; F" Q# w. L
选择STM32L476ZGTx,配置系统时钟为80MHz。
2 n( k3 K7 d7 L4 L- Y
28.jpg ' b% O; f! `9 c
: S# k! o. D+ K- P0 `# j0 s+ G1 d
将通道2配置为从通道3重定向输入,通道3则直接输入,两个通道使用相同的时钟源。
/ M. b; o9 d0 [' c' G6 A
29.jpg
. J- |0 f9 n) T; `6 S1 L, e# o$ j! |$ \+ o, @; f
对时钟进行80分频,设置DFSDM时钟为1MHz。, X- u4 G' L4 d; n' F
30.jpg 1 y/ P+ k- ]& [# u& q" Y3 j
& K+ B' R4 m6 f
将PC2(DFSDM1_CKOUT)、PC7(DFSDM1_DATIN3)配置为下拉,GPIO高速模式。
: T8 z4 H2 _7 X- {" h0 g, F
31.jpg
" z. R/ }9 \3 }& y! L9 Y2 o
1 O4 A/ Q( |* [/ C3 o4 g通道2在时钟的上升沿采集数据,通道3在时钟的下降沿采集数据。$ l3 q) W1 v9 z4 @4 q
32.jpg # b4 `& H5 A* x% Q7 h
33.jpg : x' S) S/ |6 X" D
34.jpg 9 l4 v1 V% E; U8 S4 f2 t
+ x" W/ v: b' q) j5 D& h/ m+ ?
使能DFSDM1滤波器0全局中断。( V6 G# s, @% r
35.jpg / i' r% a6 |3 |7 m8 p( s6 U
使能定时器1作为DFSDM转换的触发源,触发间隔为0.5秒。8 |0 B7 U+ j6 e' {% g
36.jpg ; b  u) z  T; ]& O- D( x
37.jpg
: z  L' q" ~( T5 C/ z5 {% _/ Y" V: a) G0 {% P$ e/ `
添加注入完成回调函数,获取通道2和通道3的转换值。- g  D7 A( s, b1 ?! {( w
38.jpg 1 K( H) [# ?3 N* @
39.jpg
# f9 ^) q; A2 c/ t3 t: _# h因为积分器过采样因子设置的是64,需要将转换结果除以64。
1 L4 Q! r' q4 E0 W4 A. i
40.jpg # L$ s% [: B: D4 _+ s+ R1 l
M就是过采样因子64,积分器输出的结果是代码中转换得到的通道2和通道3分别获取的电压和电流值。" W7 Q8 B. P% j9 \- k, d+ m
5 z& P. i& i- I
main.c中添加以下代码,启动DFSDM注入转换,启动定时器1来触发DFSDM注入转换。' Q0 S) N3 _+ ^- g, f( o& _
41.png
  g' j- S9 N+ T& y# x% g+ k2 S

: B' a% o2 s! |6 ^! I# d9 d; Z9 K
- [& D# Y' b' R& Z  n2 w
  k# l' f3 _- w, V" w8 r- ?9 d  e0 L主循环中检测到有转换过的数据收到, 根据PT100温度计算公式计算温度。
, {6 P/ E5 Z. D6 w1 ?7 c4 ?% U5 v) b% y( D
结论& \0 `$ T( I. h3 i+ o
STM32 DFSDM配合Σ-Δ模块,可对电压、电流、音频等信号进行高速串行采集,通过DFSDM对采集的数据进行滤波处理,并输出高精度24位的数据。在STM32 CubeMX工具中,可以方便的配置DFSDM模块,快速生成工程代码。
+ F  y7 w* y% B; V4 h. @
4 N2 p; ]  T. Z6 R  q/ U( n4 n- h7 ~
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
学习学习
4 x2 S( Q2 O; h5 r  n$ m9 }
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版