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

基于STM32H7 SPI NSS 功能的灵活应用经验分享

[复制链接]
攻城狮Melo 发布时间:2024-7-2 17:28
01前言/ C9 k2 |1 M' v( D9 U$ h+ p1 I( v
某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC 芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。
2 v! s# }( q, |
: @& C7 I9 n  r( w- o, O02现场调研与问题分析 5 N7 d$ _+ x) k8 H) d/ R
根据客户提供的信号采集板上使用的 ADC 数据手册及现场反馈:8 H. ?5 Y% S  y; p
1.该 ADC 转换芯片 DataSheet 提供的通信接口参考设计如下: 0 y5 f  s# k7 Y9 y& j, z

" Z' _8 ]3 D- f, O. y- R7 N 微信图片_20240702172717.png
0 ?! f$ X( K; m% N7 A0 `* g0 p0 Z+ W; q& P$ }8 C" }8 b4 T& o
2. 该 ADC 采样芯片工作于 Master 模式,DSP/FPGA 工作于 Slave 模式,其通信时序如下 图所示。- I" B# ~+ `  o. k3 _8 V
在 DRDY 信号的下降沿通过 DOUT0~DOUT7 引脚将数据输出到 DSP/FPGA。客户使用 STM32H7 的 SPI Slave 模式与该 IC 进行通信,采用 Software NSS 工作模式来接收 Master 的数据。
9 X% s7 u" g" w+ H; w# |' p6 ^# y, S& \
微信图片_20240702172713.png 0 h, v- f% X* v5 F- C

2 i7 O7 p# t$ n# g! h/ U在连续采样模式下(Master 不间断采样),STM32H7 接收数据正常,其通信时序如下图所示。
* \3 X7 u6 p; t
9 K9 \% I( k& h 微信图片_20240702172710.png ( {8 K2 [( w* \/ O5 E
% m$ W0 v: @0 t" ?. E9 S+ Z
但是,当 Master 停止采样时,DCLK 仍然会一直工作发出工作时钟。此时,STM32H7 的 SPI 做 Slave 在 Stop 期间仍然会收到数据(无效干扰数据)。此数据会造成 Slave 端接收数据失序,如下图所示。4 j' f8 \6 w2 V; G3 u

( ^3 d$ |4 c4 p/ Q. @5 E 微信图片_20240702172707.png $ h) e$ \( y& S
5 X* |+ T5 `( [: x$ F# C
03问题分析与解决3 E9 K- S/ ]" F' b) `& z
显然使用标准 SPI 与该芯片进行通信是行不通的,再次聚焦到客户 DRDY 信号并未使用和充分利用,能否利用 DRDY 信号来滤除 Stop 期间的干扰信号呢?
5 U8 r9 w6 w+ w/ f* _
7 v' `* J3 H+ _; A. ~  [+ ?
笔者也再次查阅 RM 后发现 STM32H7 的 SPI NSS 脉冲模式(RM 中称为 TI 模式)。在本文中统称为 NSS 脉冲模式,STM32H7 的 NSS 脉冲模式其核心要点如下:
6 l8 t% I  c2 u2 G1 J& C. @) G4 k
! P) \. p* Q9 b) [1. 通过设置 SPI_CFG2 寄存器的 SP[2:0]位来使能 SPI 工作在 NSS 脉冲模式,当 SPI 工作于 脉冲模式时,SCK 和 SS 引脚的信号极性、相位、字节序是固定的,不需要配置 CPOL, CPHA, LSBFRST, SSOM, SSOE, SSIOP 和 SSM 相关寄存器位。9 C% |& B/ {2 `! Q1 H
7 A$ W9 V1 F0 K" w6 C0 p5 @
2. SPI NSS 脉冲模式通信时序如下图,与标准 SPI 通信相比差异如下:0 w! b( R4 T" n5 M9 R2 Q  V- K

: a# _9 Z" p) x& N. k启动数据传输前,NSS 会被拉高并维持一个时钟周期(NSS 脉冲)。
2 V9 D6 r& H: r* M/ }
: i% `1 x" X- U, n: _; ?2 p数据帧的传输过程起止于 2 个 NSS 脉冲之间(前一帧 LSB 开始拉高 SS,前一帧 LSB 结束后 拉低 NSS 开始下一帧传输)。
; G* F# e3 l2 b7 `+ U2 l* B& l" F4 H6 f- w- C, B! ^; E$ x$ W/ s9 j
在时钟 SCK 的上升沿开始发送数据,在时钟 SCK 的下降沿进行采样和接收。+ {: _  }' ?  ?) m7 S
# p) O( t8 ]' @
所以,STM32H7 的 SPI 的 NSS 脉冲模式时序刚好与该 ADC 芯片是匹配的。% K$ r, p6 r1 z4 P# Y; i# H  L: g

) Z) D& ~' A3 a: Z7 s' n1 S/ f 微信图片_20240702172704.png 3 b: J% s- n! W5 n" t; Z

6 ?2 [. K3 E" g& ^/ i% u8 ?6 \那么我们将客户的接法进行改进,并配置 STM32H7 的 SPI 工作于 NSS 脉冲模式,经过客户反复验证工作正常。
# _. [1 M; p6 S4 i  y3 Q7 ~! B# @  T; c- q: T) H3 \" B5 }
微信图片_20240702172701.png
3 j3 X: X; f' M( p. N8 I  g7 `8 k/ o4 h& N
4 n* A0 ^* G% o! n1 d. k6 n
转载自: STM32
% F" I( E, A6 L" h* z4 e如有侵权请联系删除  T/ @( H" @, ^) }
# Y, }+ O7 C9 a) F/ V$ n

7 _% T! P; L" ]$ d" ]: m/ o
收藏 评论0 发布时间:2024-7-2 17:28

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版