请选择 进入手机版 | 继续访问电脑版

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

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

[复制链接]
zero99 发布时间:2017-4-5 17:18
STM32 DFSDM测量温度应用
前言
8 a7 P3 g% T% e) S0 OSTM32L4集成了DFSDM数字滤波模块,配合Σ-Δ器件使用,可进行高精度、高速率的AD测量。
1 `( K$ L6 M/ e2 b# w" W) y' w+ a
9 c& ^& \4 J. ?( f模块框图
$ `7 T6 [' l- USTM32 Σ-Δ转换器应用框图如下:
7 D8 S- \4 W9 T5 ?
21.jpg
4 K4 f/ I" [) c0 x- |
) k- h: T3 B- c3 G! ^- u4 L系统被分为两部分: STM32外部的模拟前端Σ-Δ模块和内置的数字部分DFSDM模块。" {1 F  H/ b( d$ Z4 O- M, z1 @
       DFSDM是STM32产品内部的一个新的数字外设,通常搭配外部的Σ-Δ器件使用,可根据相应的应用选择外部的模拟部分,如测量、马达控制等应用。模拟部分提供串行数据给DFSDM,DFSDM负责对数字信号进行处理。
/ A' H5 D; u" D       DFSDM数字部分集成了模拟看门狗、注入和常规转换、灵活的触发系统、中断信号生成、极值检测等。0 ]1 X4 k" X% p" w9 v  Y) J
• Σ-Δ模块6 E9 z) c& k: V8 Y" G
  · 输入模拟信号
1 C. u7 h( z6 d! k9 Z  · 输出1位或2位的快速串行数字信号,可达20MHz速率。
7 O. p6 E" S2 y" L% [- v* r  · 广泛的厂商支持: ST, TI, Analog Devices: ^/ c6 n$ H; X1 v! r
* }8 D+ c" n, k3 r% q2 Z
• DFSDM = Digital Filter for Sigma Delta Modulators:* y2 g6 j$ f+ X! h* i4 E) E% o
  ·从Σ-Δ模块接收串行数据' M' m( E" z6 n0 }* z9 m1 m1 k
  ·对接收到的Σ-Δ模块数据进行滤波$ J: _2 Q. A# g; o3 v
  ·最大24位的输出精度
" ?* x: o" P  q4 W8 S. {. P( V2 M2 {( Z: _% o
典型应用
' c3 S& t. D9 B3 {% t7 D•  电信号测量:电流、电压等。
5 A1 g6 H7 _+ Y9 f! ^3 p4 e• 马达控制. U/ X$ ~, M  {; ]
• 医疗应用8 z9 s: _1 u" b1 G2 ^* u
• 麦克风音频# q) F  ~# N3 O# k' a/ s, Z. p
  O/ E) ~9 T  V" M7 b+ q
STM32 DFSDM架构图如下:* l+ I: |) D" {0 J
22.jpg 0 }: t& w8 \5 J- }) b1 j

" k& X$ R; H7 L; k' W收发器" [* {8 a1 b) T0 D# [5 G
• 快速串行输入(20MHz)
# \; y, v: }6 c. W& \$ X  · SPI或曼切斯特编码模式
  q) d8 \% ~* O9 a$ n" b4 F8 |) p* X  · 时钟生成" U- H5 ~  R3 X& l" j
•  内部并行输入
! d" {9 b" y7 @) D: j$ b' x9 t  ·由CPU/DMA写入的16位寄存器数据输入: x+ I2 C& h) Y  X% _6 P1 Z) Y+ P
  · 收发器提供串行连接到外部Σ-Δ模块,支持SPI、曼切斯特协议。收发器也支持通过CPU或DMA写入到DFSDM数据寄存器的内部16位并行数据输入,
( Z8 x6 e0 A  k) G滤波器
$ _4 B6 f) ~2 `• Sinc1,Sinc2,Sinc3,Sinc4,Sinc5,FastSinc内插滤波器,过采样因子可达1024.- N2 G% R1 q0 N" Q' l
• 积分器过采样因子可达1024
2 R# J1 r) b( ?& s5 O: q5 _( P/ \# O7 O5 @6 _7 b  R" J( t( `/ _  F5 ~
STM32 DFSDM应用框图如下:
: Z* M' d- ~; o+ d  O9 V$ m
23.jpg : k, }9 t# n: G0 M- |1 F5 R8 |
整个DFSDM模块包含如下接口:
1 D! g2 e; C- r, m0 K5 C# X•  8个串行收发器
" z/ r" a& H( g- F3 d5 _7 ~• 4个Sinc滤波器和积分器) e0 b; I& @% b4 Z2 @* i$ _
•  4个输出数据单元, q1 q4 Z( g; n- j) W+ z" D$ D
• 4个模拟看门狗) O7 D# v6 B. q2 D$ \2 C1 F# n
•  8个短路检测器
; F- f  J+ e4 t8 S2 R( V& }2 u• 4个极值检测器9 R7 ^! `- P# ^6 x' y
• 8个并行数据进入寄存器8 H9 r* b7 F# c2 m" }9 v
8 m. V9 Y) ^+ r- m. y
串行收发器3 q8 h$ X+ z; I0 j0 U' P( R( k. V
24.jpg 4 P$ S1 o+ b; y" [( e; D/ e
功能! \! v. R) v' [4 |0 v+ ^0 u. H# _2 b
• 从Σ-Δ模块接收1位的串行数据,提供时钟和数据给滤波阶段,最大支持8个输入串行通道。) a3 X4 N' L) p" Z
支持的协议
0 E. \6 Y3 J& C, D: `• 1线曼切斯特编码
, N' Q# P/ K. V% i) ^• SPI模式(时钟和数据线)" ^& [; o1 o' c7 \- X7 }
  · 上升沿、下降沿采样$ l- _: i7 h1 P- h' m
  ·数据速率测量9 ]& {) K' n, ^. {1 M1 c
  ·时钟缺失检测
; s6 M: ~7 [& h: l/ A  · 时钟速率高达20MHz
; \/ E8 ~: A5 A$ j0 V• 串行输入(时钟和数据)通道的 DFSDM_DATINy和DFSDM_CKINy引脚可被重定向,通道重定向用于收集来自立体麦克风类型的PDM音频数据,PDM立体麦克风具有时钟和数据信号,数据通道提供左右声道信息,左声道进行时钟上升沿采样,右声道进行时钟下降沿采样。
8 E+ S2 [: E, l# i& c. }8 _9 [1 I) U( B7 k+ G! K; j0 o
并行收发器
5 v5 o/ o5 p  P+ M1 Z! s
25.jpg
; G6 B: p$ T( e+ E$ ]8 x$ {' d. L功能
% R# r2 i, ^5 {! `/ ]$ }7 J7 K& B•从内部数据源接收16位的并行数据,并提供数据给滤波阶段。多达8个并行通道。3 `" }% ?9 _, Y- v7 |2 @; r' V
内部并行输入数据源
) A9 C; }7 H! A8 b•RAM数据后期处理
5 O2 U4 T% t& q# N$ E4 I  ^  · 来自内部ADC的数据处理
* b4 n" I) \# K6 I7 m! j. \  ·来自被收集数据的后期处理数据
* i1 g, w1 i+ L9 l• CPU或者DMA提供数据到DFSDM输入寄存器
, M+ [/ C, b4 P6 R5 j0 Z" U6 l* x7 h' M8 j$ l/ O
STM32 DFSDM温度测量应用原理图如下:5 V) J" [- T; ]* `# t6 y5 y
26.jpg
  a2 Z" N3 }: j' @. e: @
; U8 F; {0 R& x: HSTPMS2是一个双通道的二阶Σ-Δ模块,一个通道感知PT100的电压,另一个通道感知PT100的电流。使用1秒定时器来触发2个通道进行注入扫描转换。PC7(DFSDM1_DATIN3)是通道3,时钟为PC2(DFSDM1_CKOUT)。通道3测量PT100的电压,通道2测量PT100的电流。
3 Z8 u6 `& ^# u; g: [
27.jpg * h1 x9 `' L7 J/ w# @# d, i6 e* e
PT100温度计算公式为:T = (PT100 – 100) / (0.385),只要通过能够测量出PT100的电压和电流,就能计算出PT100电阻值,进而得到温度值。
) R3 D7 o* N* T& R4 A1 S8 K1 R
2 a% I. F& R: s9 c: V应用示例# K, n9 T" p* b- i4 Z1 j, u4 z
硬件平台基于STM32L476G-EVAL。
" G9 C' g% X* e$ o& b1 `* O( w8 |2 V. F
CubeMX工程配置
8 q9 m1 `9 t" N选择STM32L476ZGTx,配置系统时钟为80MHz。$ A5 b  V! ]: ~7 W1 ~& |% H: _% O
28.jpg
6 ]0 r! B, v# C) n4 w/ C8 z, _  q; U: Q0 e$ ^- n: [1 u
将通道2配置为从通道3重定向输入,通道3则直接输入,两个通道使用相同的时钟源。/ P. f  [8 P6 k& Y" g; n
29.jpg . p- u5 B- z: h$ p& n1 Y$ C
9 ^" g; O+ Q- p7 H2 n
对时钟进行80分频,设置DFSDM时钟为1MHz。! f3 u( K( i( [9 D; r, t
30.jpg ; s1 k# y: Y- t, u/ ?, m
- o+ ?; z: t" {5 H
将PC2(DFSDM1_CKOUT)、PC7(DFSDM1_DATIN3)配置为下拉,GPIO高速模式。4 B6 b/ K3 l8 ^0 g& w$ B: M
31.jpg
4 \, z' }0 j6 Y
6 _2 W; M, e7 i' R通道2在时钟的上升沿采集数据,通道3在时钟的下降沿采集数据。
& a8 R6 X  ?% T: T( ]/ j* Q! P
32.jpg 7 d6 t& V5 i) t5 t* z; |& q
33.jpg 0 W* l$ _# i/ B9 J: h6 v0 |9 Y( x
34.jpg
# x: y1 k3 F9 e/ `0 G: g5 ?( y/ a9 G1 k; ?3 m* k# E
使能DFSDM1滤波器0全局中断。
# n; t2 }7 ^# A
35.jpg 7 k' Q, R, a% i/ X) J: V
使能定时器1作为DFSDM转换的触发源,触发间隔为0.5秒。
! ~; u( \9 ]- i$ c- Y+ p: `1 E% d
36.jpg ; o7 R% ]0 i, H* _4 V
37.jpg
; m) _( c- U* D2 I3 ?) i6 X) r" C8 L3 ?% T& Z# f
添加注入完成回调函数,获取通道2和通道3的转换值。! F2 M' a% U2 H/ [: G& P+ x5 @
38.jpg
' M  U# S5 y+ D/ _: `; H
39.jpg
9 E4 {- i/ J$ n. D4 F因为积分器过采样因子设置的是64,需要将转换结果除以64。9 W3 ~( }+ m/ n" x8 t" V# g* z: {
40.jpg 9 [6 S; D$ S( M& w+ f
M就是过采样因子64,积分器输出的结果是代码中转换得到的通道2和通道3分别获取的电压和电流值。
& C. M# k3 k7 H1 Z
$ F; Z7 ~9 s& ~6 wmain.c中添加以下代码,启动DFSDM注入转换,启动定时器1来触发DFSDM注入转换。7 K/ z: @7 G/ a: N& _+ @% B" ^
41.png 2 W, N3 b; [) c8 W: W  `

* X( }, W9 b+ E2 k; N' y% E6 c$ m4 N
0 |; D2 M+ [8 G6 J) e
主循环中检测到有转换过的数据收到, 根据PT100温度计算公式计算温度。# _, o: v$ j" ]0 Y/ X) i

' k9 R. Z! G. D8 N% G1 D5 b4 s结论1 j' q. h( o) z
STM32 DFSDM配合Σ-Δ模块,可对电压、电流、音频等信号进行高速串行采集,通过DFSDM对采集的数据进行滤波处理,并输出高精度24位的数据。在STM32 CubeMX工具中,可以方便的配置DFSDM模块,快速生成工程代码。* h6 B3 ?) m1 O8 N
0 o0 B! Q+ E, B* z

3 S5 Y7 b0 k) E, [, H  P% q 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
学习学习
0 g& G7 S# M' i/ [  L" b
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版