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

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

[复制链接]
zero99 发布时间:2017-4-5 17:18
STM32 DFSDM测量温度应用
前言
8 w3 S! ]+ I! C8 E$ CSTM32L4集成了DFSDM数字滤波模块,配合Σ-Δ器件使用,可进行高精度、高速率的AD测量。
" B! Q  W+ n, l: t3 Z
, r+ r, [# P) d! d模块框图
5 ]* o, E4 U2 B  aSTM32 Σ-Δ转换器应用框图如下:" O. }) _, Q% u1 E& T
21.jpg : F0 @: ^! Q0 _" m" Y9 X
% ~. h2 N! B! o, _
系统被分为两部分: STM32外部的模拟前端Σ-Δ模块和内置的数字部分DFSDM模块。
; ^' X6 u+ J. {, q) t       DFSDM是STM32产品内部的一个新的数字外设,通常搭配外部的Σ-Δ器件使用,可根据相应的应用选择外部的模拟部分,如测量、马达控制等应用。模拟部分提供串行数据给DFSDM,DFSDM负责对数字信号进行处理。
) {* e( H$ m4 r! W  k; p3 w       DFSDM数字部分集成了模拟看门狗、注入和常规转换、灵活的触发系统、中断信号生成、极值检测等。
. H$ H# D5 n9 S- ~# W& {• Σ-Δ模块
6 F* {  X8 Z( l  q" X/ s  s  · 输入模拟信号
; I) M2 r- W5 W  X: ^: M  · 输出1位或2位的快速串行数字信号,可达20MHz速率。
6 K$ W; }) t, _6 y  · 广泛的厂商支持: ST, TI, Analog Devices+ m1 ]9 B$ y5 ]* E/ F$ Y9 M

9 N/ ?; k4 |' C' O" v• DFSDM = Digital Filter for Sigma Delta Modulators:8 Z2 g# D9 |+ ]' V/ z* X
  ·从Σ-Δ模块接收串行数据
2 _" P" Z; {, t9 O, \6 w' r. f! O# P  ·对接收到的Σ-Δ模块数据进行滤波
) l0 Y4 }4 c  r0 q& t- `  ·最大24位的输出精度$ `0 E+ s# X# F2 X0 F

% f2 W8 q' W+ s典型应用! U( i, t/ E( r8 F( S
•  电信号测量:电流、电压等。
" r  v; g0 B7 o, N& d' D& {• 马达控制
, C# w7 u! J8 L: _+ G* u- W• 医疗应用; D* \+ Y; u  [9 P, k- \
• 麦克风音频
7 V6 r6 u  F. x9 i/ l$ y! @, {3 S. \  H5 R  f6 g
STM32 DFSDM架构图如下:: X" I! t- `( E0 s% ?
22.jpg , b- n! v9 H. [! Q

* }3 R0 `) I' Z  H* ]5 U" _' d& a) Q收发器
3 a' P  w& L; V1 B' p1 b) U% T• 快速串行输入(20MHz)% ]/ `" F: V, `/ t2 H6 A
  · SPI或曼切斯特编码模式
$ A+ x$ i0 B& z! D/ r8 v  · 时钟生成/ @: a' ^! A$ H9 s& p$ q# X
•  内部并行输入! c( `1 M- x5 @) x+ [7 {
  ·由CPU/DMA写入的16位寄存器数据输入" l& x2 v8 ?8 v1 T! v
  · 收发器提供串行连接到外部Σ-Δ模块,支持SPI、曼切斯特协议。收发器也支持通过CPU或DMA写入到DFSDM数据寄存器的内部16位并行数据输入,
% o1 Q& V* ~  \滤波器
% A8 K3 F7 ~9 P9 f5 h• Sinc1,Sinc2,Sinc3,Sinc4,Sinc5,FastSinc内插滤波器,过采样因子可达1024.4 Z: |$ e7 p+ r$ m! n2 x+ v
• 积分器过采样因子可达1024* z+ ?& p+ t  Y( m4 j# j6 M

0 d5 N( H0 \, G1 wSTM32 DFSDM应用框图如下:( q, r5 [, ^9 j: \
23.jpg
8 w+ [, K. P' `: C整个DFSDM模块包含如下接口:. ~& ^- O0 X- A
•  8个串行收发器
( t. D5 S# m! _4 I1 P' l4 q1 S4 e' `$ |• 4个Sinc滤波器和积分器  o% ^. [$ y6 E- S9 g% U; M0 P4 i
•  4个输出数据单元
# [7 B& O9 o! }• 4个模拟看门狗
: u: ^' C( v/ G+ r& t) B•  8个短路检测器
/ Y6 o( L3 e: L% }5 ^• 4个极值检测器
! K# s! I" H8 M- T+ N• 8个并行数据进入寄存器" ^) G* F8 r2 S

9 A" q1 F3 L- g1 C2 D串行收发器; w6 I( J* H" T6 h% E3 w
24.jpg
* s- X6 X# O4 n  K: [, i功能% ]% ~2 l" M, ~/ E* T' F
• 从Σ-Δ模块接收1位的串行数据,提供时钟和数据给滤波阶段,最大支持8个输入串行通道。
& X: {  W, I$ M/ H5 @支持的协议
' g$ K' ?: g3 c/ U1 L/ R& I5 o, g• 1线曼切斯特编码) d3 Z5 ]! C2 R$ M5 T9 C9 Y9 a
• SPI模式(时钟和数据线)6 p  `# t. {: L$ j4 N% p1 l, K3 u5 U
  · 上升沿、下降沿采样
; ^' d& b8 p3 N4 y! U  ·数据速率测量
! T& n6 r* g! D  ·时钟缺失检测
) }1 F" \+ j0 x2 N2 v, z  · 时钟速率高达20MHz: m% P" S; i- i' s
• 串行输入(时钟和数据)通道的 DFSDM_DATINy和DFSDM_CKINy引脚可被重定向,通道重定向用于收集来自立体麦克风类型的PDM音频数据,PDM立体麦克风具有时钟和数据信号,数据通道提供左右声道信息,左声道进行时钟上升沿采样,右声道进行时钟下降沿采样。
1 \3 j# _+ R3 `3 n( F
/ }- X$ d+ Z, {. `+ _! H3 m并行收发器
5 v1 H7 c9 o+ Y8 G
25.jpg
9 i  g% l7 u1 _4 O功能
0 \2 v: v# \  [5 Y" j•从内部数据源接收16位的并行数据,并提供数据给滤波阶段。多达8个并行通道。% K2 k, P% E% T4 r9 Q. v7 F& O2 ^0 V
内部并行输入数据源& U1 m7 w9 k6 [$ r1 [; i" ?! A
•RAM数据后期处理
* `+ a, R2 l$ a6 _  · 来自内部ADC的数据处理
- W: k$ _  I  N) g/ q% p# r, W! J  ·来自被收集数据的后期处理数据
" H3 F: x/ U! F6 Y7 [• CPU或者DMA提供数据到DFSDM输入寄存器
  ^0 G3 U6 D; A' i
& [9 c8 [+ E: z" W( ^- r- Y; U/ ~STM32 DFSDM温度测量应用原理图如下:4 H0 Y4 F% L  i, |( \
26.jpg ) A, |' G+ X: M+ w0 ?

$ r' v# A/ ^7 Q. _STPMS2是一个双通道的二阶Σ-Δ模块,一个通道感知PT100的电压,另一个通道感知PT100的电流。使用1秒定时器来触发2个通道进行注入扫描转换。PC7(DFSDM1_DATIN3)是通道3,时钟为PC2(DFSDM1_CKOUT)。通道3测量PT100的电压,通道2测量PT100的电流。' a  h. g" j9 W- i* @. u
27.jpg
7 A6 W0 z# Y4 W; b" f$ cPT100温度计算公式为:T = (PT100 – 100) / (0.385),只要通过能够测量出PT100的电压和电流,就能计算出PT100电阻值,进而得到温度值。
; v) K8 A! G; {. H4 K2 t' a6 ~
4 K. N8 B0 \( V; C' K1 y% I1 a应用示例7 r, [4 j7 ]! P7 k: x/ d
硬件平台基于STM32L476G-EVAL。
1 M7 l) u# K' ~* u9 N
) H3 [7 B+ a1 v1 }1 M+ Q* C7 a) sCubeMX工程配置  ?7 h; d& C% E  d+ x
选择STM32L476ZGTx,配置系统时钟为80MHz。
* ]" N: f) C% v3 R
28.jpg
3 T4 o9 F$ n" q- ^% i; K4 P! z% [  m& |  C) ?* l. C# N
将通道2配置为从通道3重定向输入,通道3则直接输入,两个通道使用相同的时钟源。0 ]* p: k+ C2 [! e( L( O! j' R. b
29.jpg
4 \1 M( D0 K$ _- `9 w% c3 q! I( U3 w
对时钟进行80分频,设置DFSDM时钟为1MHz。
. J4 n4 w  C/ Q2 x+ V
30.jpg
. E+ J% M8 q  y, n/ E" L6 c  y, a: }% O' D7 P' V9 Q; _3 R
将PC2(DFSDM1_CKOUT)、PC7(DFSDM1_DATIN3)配置为下拉,GPIO高速模式。1 O( w* F- E7 f" J0 i# O
31.jpg
# S& U6 A$ E) l4 c" ]& x& A& q1 F8 {5 ]/ j
通道2在时钟的上升沿采集数据,通道3在时钟的下降沿采集数据。9 Q8 {: x8 D* G2 w1 I) V0 P
32.jpg 9 l$ q4 c2 c1 B) i
33.jpg
3 X3 Q: A  V) j* b( W! m
34.jpg
9 K/ x0 x" ^$ i4 }; E7 H% T, ]# G( \  H
使能DFSDM1滤波器0全局中断。
- j" A  G' Z) |0 E0 x$ [
35.jpg
2 K2 e# w: M6 V" K( F9 ]/ n" O使能定时器1作为DFSDM转换的触发源,触发间隔为0.5秒。$ y# j; I! v7 S3 f8 r/ E
36.jpg
2 M& o! S8 h3 c
37.jpg
5 D- L9 _+ h. W. v) F
$ @2 e8 \8 M2 }. Y) s9 ~& r添加注入完成回调函数,获取通道2和通道3的转换值。
( I$ z9 i% Y# b( y1 |- i- r
38.jpg
7 O. M& m/ o( s8 Z  w7 n1 K
39.jpg 3 n/ @. c2 C( O
因为积分器过采样因子设置的是64,需要将转换结果除以64。
0 Z) d7 z) T$ x( ~5 z
40.jpg & ?" q5 ]8 W* Q' f3 \
M就是过采样因子64,积分器输出的结果是代码中转换得到的通道2和通道3分别获取的电压和电流值。
1 s- Q0 ~  j" }# G  v* Q! ]# M( M- G  x) G, Y0 T
main.c中添加以下代码,启动DFSDM注入转换,启动定时器1来触发DFSDM注入转换。* f; |6 |( x+ ?
41.png
7 ~' \1 G7 {% F1 V% U0 f' u
+ u, ]! U4 l, A; A

! X& r* M4 i# ]$ Q$ Y% }3 d1 n; f' s7 F8 ?! u
主循环中检测到有转换过的数据收到, 根据PT100温度计算公式计算温度。4 o& S1 s6 G0 }$ X# E2 v

* _' v- p  L# h. J- l结论
% ]8 d5 u  U8 ~# ]4 Y5 nSTM32 DFSDM配合Σ-Δ模块,可对电压、电流、音频等信号进行高速串行采集,通过DFSDM对采集的数据进行滤波处理,并输出高精度24位的数据。在STM32 CubeMX工具中,可以方便的配置DFSDM模块,快速生成工程代码。
: I, y; R9 a( C" v
  {( t) \1 V' l3 [! g- q' F9 H) B7 k; R5 v' Q
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
学习学习, F6 L+ m: x( c9 F# k
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版