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

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

[复制链接]
zero99 发布时间:2017-4-5 17:18
STM32 DFSDM测量温度应用
前言) F& j1 q; I! e! H+ h
STM32L4集成了DFSDM数字滤波模块,配合Σ-Δ器件使用,可进行高精度、高速率的AD测量。9 P8 {" o/ P8 M

0 o$ y) `2 e& a$ J模块框图
1 ~# t! T! D) B1 I' V: ASTM32 Σ-Δ转换器应用框图如下:
1 _/ i3 ?4 N3 l1 g8 _1 O- E1 O! v
21.jpg
7 G, y( z  t, J) H/ i
- X- W  F. R3 k0 K  M; G系统被分为两部分: STM32外部的模拟前端Σ-Δ模块和内置的数字部分DFSDM模块。
; F& I3 R% @! x: P6 R7 d3 }& y       DFSDM是STM32产品内部的一个新的数字外设,通常搭配外部的Σ-Δ器件使用,可根据相应的应用选择外部的模拟部分,如测量、马达控制等应用。模拟部分提供串行数据给DFSDM,DFSDM负责对数字信号进行处理。
# C" m) b  ?6 ?! k' ~$ D& e( t       DFSDM数字部分集成了模拟看门狗、注入和常规转换、灵活的触发系统、中断信号生成、极值检测等。
  P( z/ G9 x( ^7 v* M• Σ-Δ模块4 B5 i: j# I" v6 K5 |1 J8 N# `
  · 输入模拟信号
* j# U. H+ |6 l; @9 \  g  · 输出1位或2位的快速串行数字信号,可达20MHz速率。
! L9 p* q+ l5 W1 J$ T  · 广泛的厂商支持: ST, TI, Analog Devices. L( D* T: h# z" M1 @- l

% ?# ?4 Y2 P! E5 D, S• DFSDM = Digital Filter for Sigma Delta Modulators:- |7 Q) {6 z, j" d
  ·从Σ-Δ模块接收串行数据
. p% ~4 h3 X* |+ z, X( y5 ]) E- j  ·对接收到的Σ-Δ模块数据进行滤波0 f$ u- F& ?' x3 g8 J: }% Y
  ·最大24位的输出精度
/ Y; s4 l$ L: V- L0 p$ k& ~$ C& ]4 ^. U
典型应用6 o/ |9 l, }- G! c) }2 f; ~' X
•  电信号测量:电流、电压等。
8 I+ e% M8 s1 r' q+ _• 马达控制
  Y3 r8 P' X+ n1 n• 医疗应用
% o* ~9 M3 N/ x# _• 麦克风音频0 f7 X+ a% R. g, h9 A, B
- r) \; p6 w" ^6 b
STM32 DFSDM架构图如下:- I+ f4 l7 C: S( @. z
22.jpg
% h! O) U; V( s( r5 s5 H' |$ o! \3 l+ d, E, d- E2 a& T
收发器
# I( G5 A& W6 _$ }6 Z  ^6 p• 快速串行输入(20MHz)
7 e8 d; h) q& V- t+ w  · SPI或曼切斯特编码模式
+ a8 y3 g& S$ d! [3 H8 k  · 时钟生成
- B  \8 S$ Q! U$ C& Q•  内部并行输入! s* b1 p' i  N1 \
  ·由CPU/DMA写入的16位寄存器数据输入5 M6 Y+ _" `" ~" p! X# I
  · 收发器提供串行连接到外部Σ-Δ模块,支持SPI、曼切斯特协议。收发器也支持通过CPU或DMA写入到DFSDM数据寄存器的内部16位并行数据输入,
) g8 l9 j7 B, X2 G滤波器9 Q% k3 l0 E7 v
• Sinc1,Sinc2,Sinc3,Sinc4,Sinc5,FastSinc内插滤波器,过采样因子可达1024.! W- D- i$ ]( G7 _0 d
• 积分器过采样因子可达1024! [! j4 P" p, Z

+ C, Q  o" ]6 n" H7 }% d( E7 VSTM32 DFSDM应用框图如下:
! G& M8 i6 A4 q0 t" [5 j) d, T
23.jpg
& p( U4 g) y+ e整个DFSDM模块包含如下接口:' v9 S# D- K4 a( @8 T
•  8个串行收发器
; G/ N/ S# x, S$ U$ l! m( z6 \• 4个Sinc滤波器和积分器
: |9 |! j1 f4 c! {( P. }•  4个输出数据单元
$ }) K. G1 x5 v• 4个模拟看门狗
9 Z' |" F7 l" M# l% {% n# h+ X( E•  8个短路检测器- |* {8 b9 t4 F& @
• 4个极值检测器
: t( Y0 S. O. c; W/ M. o; M• 8个并行数据进入寄存器! S# L3 {7 s; D& _
! ]8 r* {7 Z$ p$ P8 v
串行收发器
# N4 h- Z# _+ u4 W
24.jpg
  I& \( V$ ^/ A0 O+ v功能) z1 x( [- f" K) T7 D
• 从Σ-Δ模块接收1位的串行数据,提供时钟和数据给滤波阶段,最大支持8个输入串行通道。
. W+ w& s2 h- ~7 X3 r支持的协议
6 f. P) c0 C( b" r5 p* z" i• 1线曼切斯特编码, \: Y5 i" e: R- p' ~7 T1 _% a7 j
• SPI模式(时钟和数据线)
6 a" \4 K0 @4 M, Z7 c  · 上升沿、下降沿采样
0 p5 T8 O9 r0 c  ·数据速率测量
# a5 o7 f6 [! D9 @8 b: |. I! Q6 [  ·时钟缺失检测7 Q3 q  U- C; N
  · 时钟速率高达20MHz, U" c  R0 x; }6 J$ G9 O$ D
• 串行输入(时钟和数据)通道的 DFSDM_DATINy和DFSDM_CKINy引脚可被重定向,通道重定向用于收集来自立体麦克风类型的PDM音频数据,PDM立体麦克风具有时钟和数据信号,数据通道提供左右声道信息,左声道进行时钟上升沿采样,右声道进行时钟下降沿采样。
+ U  R$ X: f4 C  r/ [. V( Z, A6 Z/ D2 a4 i% N
并行收发器
# I% i1 K' R1 a; Z* Y5 a: E
25.jpg
5 x6 r( I% `  F) ~4 A# B/ `功能, b/ Q8 j; y# j) ?1 l
•从内部数据源接收16位的并行数据,并提供数据给滤波阶段。多达8个并行通道。
/ Q1 ?+ X6 K  Z5 Y8 z( W内部并行输入数据源+ z# M$ p0 Y. Y4 |
•RAM数据后期处理2 x: }, ]: }( l! J! F
  · 来自内部ADC的数据处理. t% T( Z0 r) X
  ·来自被收集数据的后期处理数据
- k9 X: b4 N7 N" t5 @• CPU或者DMA提供数据到DFSDM输入寄存器
, N" Y; {3 W* \5 s3 O" [: O* A0 x$ N, g5 ~
STM32 DFSDM温度测量应用原理图如下:4 J1 X, d7 `4 X5 `- t% V
26.jpg
  g+ v# W1 t! w
& [: @: c% w1 rSTPMS2是一个双通道的二阶Σ-Δ模块,一个通道感知PT100的电压,另一个通道感知PT100的电流。使用1秒定时器来触发2个通道进行注入扫描转换。PC7(DFSDM1_DATIN3)是通道3,时钟为PC2(DFSDM1_CKOUT)。通道3测量PT100的电压,通道2测量PT100的电流。( Y: K% S! `1 R3 j: |. n3 Q
27.jpg
  Y/ k* F9 y7 x8 h$ YPT100温度计算公式为:T = (PT100 – 100) / (0.385),只要通过能够测量出PT100的电压和电流,就能计算出PT100电阻值,进而得到温度值。+ P  p- K5 [6 s$ x1 }2 T# f; J

% M* U* |) T* }应用示例
* _% ~0 X# s, k% E$ u2 i硬件平台基于STM32L476G-EVAL。
2 [) I" K4 p$ [. }) w4 ~( N) L1 G( ~5 y3 x5 x
CubeMX工程配置  ?5 m7 [/ ^7 ?* b$ C
选择STM32L476ZGTx,配置系统时钟为80MHz。
( g! h( G( n8 Y7 P
28.jpg
7 ^$ f% d& N) Z2 j& e: @" A: ~' w/ C! [& L
将通道2配置为从通道3重定向输入,通道3则直接输入,两个通道使用相同的时钟源。
- R& b: |6 ~$ V
29.jpg
+ C7 z3 g: `4 \0 ^. s' `4 B- J8 K; R7 m0 p7 W4 x) r  j
对时钟进行80分频,设置DFSDM时钟为1MHz。  [( _! ~" Y6 V5 ^2 y: M& e7 H
30.jpg
% x; j: b  `( E6 h2 A& [4 I/ O$ t: L& r' {$ q7 W
将PC2(DFSDM1_CKOUT)、PC7(DFSDM1_DATIN3)配置为下拉,GPIO高速模式。6 c( o0 p6 V0 L& _0 F( }
31.jpg
3 ], Y6 I0 ^) ?! [- M0 b8 G
0 `6 I$ @8 q2 C& B7 w" V2 S通道2在时钟的上升沿采集数据,通道3在时钟的下降沿采集数据。
3 v8 @' d. Y& `/ s% s5 @
32.jpg
' t, M$ O( Z" Y! z) W
33.jpg : J+ t4 D0 ?7 V1 B8 c6 k0 \
34.jpg ( [* d8 h2 v+ s& s3 m- g6 |

! ?2 F; `( D" X$ s使能DFSDM1滤波器0全局中断。
3 R( ~( p7 u7 h0 s; w. L0 d
35.jpg / H* }1 `  Y/ V! ?& ~* W* q
使能定时器1作为DFSDM转换的触发源,触发间隔为0.5秒。1 _' a, A: Z& F; N0 x* K$ l0 [
36.jpg
. ]. Q9 O; Z3 S7 Q
37.jpg 4 U) o; W( T( a: @: ?# R
+ I# a- a, h+ Z0 w/ H$ Z
添加注入完成回调函数,获取通道2和通道3的转换值。! ]$ p" l" B3 N' ^: k
38.jpg
3 R& {( i6 T% t: X( v9 f* z1 \% Z- t' K) u
39.jpg
. J& Z: n) q' S8 Y" z因为积分器过采样因子设置的是64,需要将转换结果除以64。1 [3 f# k+ _3 M* a3 B" O4 M
40.jpg
( @2 T* |6 L4 x4 t3 DM就是过采样因子64,积分器输出的结果是代码中转换得到的通道2和通道3分别获取的电压和电流值。, }+ D" L% J7 L

; f0 D$ u/ F, X$ u; tmain.c中添加以下代码,启动DFSDM注入转换,启动定时器1来触发DFSDM注入转换。
- k# ^4 u0 `$ m2 U' V
41.png
1 X$ \; p' Q. [7 \% x+ M

( T6 T2 q: o! B1 F( t3 }1 T
4 w0 w+ A  q) L
: C0 n! Q4 t" B, Z! e# ?主循环中检测到有转换过的数据收到, 根据PT100温度计算公式计算温度。
: J% N, i5 P) B( t( N4 a2 R8 y8 C$ R8 w) m7 ~8 j
结论3 G0 Q' n/ k8 f' p3 q$ [% r
STM32 DFSDM配合Σ-Δ模块,可对电压、电流、音频等信号进行高速串行采集,通过DFSDM对采集的数据进行滤波处理,并输出高精度24位的数据。在STM32 CubeMX工具中,可以方便的配置DFSDM模块,快速生成工程代码。
# c& @/ b3 w1 e& ^4 A( I+ [5 a# D* ~. W5 s' J' E
! D) k2 K9 u$ ~  D; _. \
STM32 DFSDM测量温度应用.pdf (1.29 MB, 下载次数: 183)
收藏 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
学习学习$ U" t/ A2 m! D1 H5 y5 s3 m
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版