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

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

[复制链接]
攻城狮Melo 发布时间:2024-7-2 17:28
01前言
9 m# [% H0 X' }5 u6 n某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC 芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。 $ B1 R# ], t2 O" S% w
+ \/ D/ T% a/ J' D) {
02现场调研与问题分析 . N. N' K8 T% q3 u# O" f
根据客户提供的信号采集板上使用的 ADC 数据手册及现场反馈:
. n" j4 T; ~, a) P0 P: O1.该 ADC 转换芯片 DataSheet 提供的通信接口参考设计如下: 7 |# j! U& Z) R2 w2 U2 ^# t3 E

( r" g- C9 e5 R# z/ E 微信图片_20240702172717.png
% u) ?8 N4 v( S$ V2 A; `% O9 L3 P
% ?9 o; b, V, K& ~$ i) A7 s2. 该 ADC 采样芯片工作于 Master 模式,DSP/FPGA 工作于 Slave 模式,其通信时序如下 图所示。# y5 Z" l; t7 ]# ~8 J- J
在 DRDY 信号的下降沿通过 DOUT0~DOUT7 引脚将数据输出到 DSP/FPGA。客户使用 STM32H7 的 SPI Slave 模式与该 IC 进行通信,采用 Software NSS 工作模式来接收 Master 的数据。5 f& @  Q' P6 U& T) i+ L" X

0 z* ?; [8 ]. u5 E 微信图片_20240702172713.png 8 z' @) x% K  n: [% _0 A9 Z

/ M2 k  v# k' Z. ?& ~0 V/ s在连续采样模式下(Master 不间断采样),STM32H7 接收数据正常,其通信时序如下图所示。
7 {# @. d1 A# ?: u3 e0 @$ W" w# a
微信图片_20240702172710.png ; d( X- z& l9 i: d
4 c. I* N2 z; z& u) z: b' E
但是,当 Master 停止采样时,DCLK 仍然会一直工作发出工作时钟。此时,STM32H7 的 SPI 做 Slave 在 Stop 期间仍然会收到数据(无效干扰数据)。此数据会造成 Slave 端接收数据失序,如下图所示。
3 ?, p  w2 ^' E+ c3 e( F- Y& ?- s! H: s
微信图片_20240702172707.png ! A9 p- S% \6 S( F8 F- ]# @& W

) O2 g$ p; m4 G! q  l$ g03问题分析与解决  K/ `6 Y4 U$ p
显然使用标准 SPI 与该芯片进行通信是行不通的,再次聚焦到客户 DRDY 信号并未使用和充分利用,能否利用 DRDY 信号来滤除 Stop 期间的干扰信号呢? , J$ h) O$ m8 _$ R+ w
* C# g( B7 ]6 F4 b7 G" z
笔者也再次查阅 RM 后发现 STM32H7 的 SPI NSS 脉冲模式(RM 中称为 TI 模式)。在本文中统称为 NSS 脉冲模式,STM32H7 的 NSS 脉冲模式其核心要点如下:2 C3 T' q- ?* }4 {4 Q0 ~3 ^
7 x9 P( y3 ^+ Z6 `
1. 通过设置 SPI_CFG2 寄存器的 SP[2:0]位来使能 SPI 工作在 NSS 脉冲模式,当 SPI 工作于 脉冲模式时,SCK 和 SS 引脚的信号极性、相位、字节序是固定的,不需要配置 CPOL, CPHA, LSBFRST, SSOM, SSOE, SSIOP 和 SSM 相关寄存器位。7 P; A3 S4 ^7 u: s
' c0 w5 j& Z5 L8 G4 i
2. SPI NSS 脉冲模式通信时序如下图,与标准 SPI 通信相比差异如下:" g/ H2 H9 m' r9 A0 x
+ \2 ?, Y6 I" p
启动数据传输前,NSS 会被拉高并维持一个时钟周期(NSS 脉冲)。
% V4 F; w+ @6 w7 o, \
3 g3 M# c% ]+ ]: N# p# H数据帧的传输过程起止于 2 个 NSS 脉冲之间(前一帧 LSB 开始拉高 SS,前一帧 LSB 结束后 拉低 NSS 开始下一帧传输)。
7 G2 a1 }  J8 U$ z- x
+ {# h) O- }+ W
在时钟 SCK 的上升沿开始发送数据,在时钟 SCK 的下降沿进行采样和接收。
  v0 t# t8 Y) S. t  @7 c( R
* A: I/ F. W% B. Y, {所以,STM32H7 的 SPI 的 NSS 脉冲模式时序刚好与该 ADC 芯片是匹配的。
( ^2 P5 X# y, ?. F4 ~0 G9 M7 w- b. y
微信图片_20240702172704.png . R4 g0 B! b6 n6 ^5 d$ I

* W! U  s2 w% P$ C5 F3 J- A那么我们将客户的接法进行改进,并配置 STM32H7 的 SPI 工作于 NSS 脉冲模式,经过客户反复验证工作正常。/ Q8 ^6 Q9 K8 M& h/ Y' \% B$ G8 n4 j

: Y5 {! U# @6 |. T. Q, X+ f 微信图片_20240702172701.png
- K8 K# r, I% r/ h+ ]
- P4 V4 m* t8 K  V2 Z; p( _/ }  Z1 u3 y9 P$ i. m
转载自: STM32; C: |+ M. m! ]$ W+ G# n# G
如有侵权请联系删除$ x# ~7 N# q, [# E

& i9 ~, s& Y: M. w
: ^( A2 P- K0 @, x4 D' T4 g
赞 收藏 评论0 发布时间:2024-7-2 17:28

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版