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

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

[复制链接]
攻城狮Melo 发布时间:2024-7-2 17:28
01前言
7 V) @! {+ A# j8 C/ i某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC 芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。
7 D) v7 z0 i, I$ I; S
3 n' q0 O: x% y1 Y% t02现场调研与问题分析
- {2 ~1 U+ O. Y  o( W; d. Z根据客户提供的信号采集板上使用的 ADC 数据手册及现场反馈:
. C3 S$ ^% t6 Z! y; w1.该 ADC 转换芯片 DataSheet 提供的通信接口参考设计如下: 3 g; |$ Z% I, }" R

. @/ Q& E% S5 P 微信图片_20240702172717.png
8 n9 f) j# J1 a, ?$ c* I1 E( s* K' p( j+ U4 o* G% D  @& k
2. 该 ADC 采样芯片工作于 Master 模式,DSP/FPGA 工作于 Slave 模式,其通信时序如下 图所示。
5 m1 g' l8 V9 F在 DRDY 信号的下降沿通过 DOUT0~DOUT7 引脚将数据输出到 DSP/FPGA。客户使用 STM32H7 的 SPI Slave 模式与该 IC 进行通信,采用 Software NSS 工作模式来接收 Master 的数据。
0 M6 ?1 M$ ?4 _+ w) t; y6 t5 ^& [, B4 o
微信图片_20240702172713.png
5 u" z/ [- j' g

( p# B8 Y- \9 \7 k2 J  G0 x在连续采样模式下(Master 不间断采样),STM32H7 接收数据正常,其通信时序如下图所示。/ D9 @0 b# C2 I

) h3 U5 ^: V8 Y8 B7 L 微信图片_20240702172710.png
4 D  c/ D+ w3 I" Y% L) s
* V8 {1 [! p- S
但是,当 Master 停止采样时,DCLK 仍然会一直工作发出工作时钟。此时,STM32H7 的 SPI 做 Slave 在 Stop 期间仍然会收到数据(无效干扰数据)。此数据会造成 Slave 端接收数据失序,如下图所示。
0 V1 t: `0 ?* v; _% S
" a9 x; l  l0 v  P 微信图片_20240702172707.png + P2 }  u# y8 L9 t  O  e2 J( O
9 O- @( H& M) G/ q4 x
03问题分析与解决
. T- G9 M# j6 O+ S# R4 S2 q. Y显然使用标准 SPI 与该芯片进行通信是行不通的,再次聚焦到客户 DRDY 信号并未使用和充分利用,能否利用 DRDY 信号来滤除 Stop 期间的干扰信号呢? 3 ~9 T% e5 }5 f. N5 u2 x/ I

. H- E  ^4 k8 }
笔者也再次查阅 RM 后发现 STM32H7 的 SPI NSS 脉冲模式(RM 中称为 TI 模式)。在本文中统称为 NSS 脉冲模式,STM32H7 的 NSS 脉冲模式其核心要点如下:
, C+ s" p9 \4 A8 m5 P/ G% z* {, v0 L0 C5 c
1. 通过设置 SPI_CFG2 寄存器的 SP[2:0]位来使能 SPI 工作在 NSS 脉冲模式,当 SPI 工作于 脉冲模式时,SCK 和 SS 引脚的信号极性、相位、字节序是固定的,不需要配置 CPOL, CPHA, LSBFRST, SSOM, SSOE, SSIOP 和 SSM 相关寄存器位。- i8 h1 U' c, K, E, C0 u9 B0 M. K6 A
( d0 W  Y% r' C7 o! q  x* H% Q
2. SPI NSS 脉冲模式通信时序如下图,与标准 SPI 通信相比差异如下:$ F- J1 v5 O1 m% B
1 D; M. ]" F+ Z, W7 q4 N* e- v
启动数据传输前,NSS 会被拉高并维持一个时钟周期(NSS 脉冲)。! g. M8 x3 z0 ~. u6 A7 O7 f
( m  T; n4 f! F$ R% W$ J
数据帧的传输过程起止于 2 个 NSS 脉冲之间(前一帧 LSB 开始拉高 SS,前一帧 LSB 结束后 拉低 NSS 开始下一帧传输)。
+ {( f- U( B$ r  L. A9 P% v% }& w: k- P, a4 r: b7 t
在时钟 SCK 的上升沿开始发送数据,在时钟 SCK 的下降沿进行采样和接收。# e# [  B+ V& y
' ]: m5 m1 _, K2 ?2 l3 |! A
所以,STM32H7 的 SPI 的 NSS 脉冲模式时序刚好与该 ADC 芯片是匹配的。- B# A* `1 O; {. \/ q

% Y3 e4 h9 ~2 }) i7 z% f  \( W' U 微信图片_20240702172704.png
+ N* U% d- {4 Q2 q- c6 S; T; Z

  X* Z+ h0 f: f$ d那么我们将客户的接法进行改进,并配置 STM32H7 的 SPI 工作于 NSS 脉冲模式,经过客户反复验证工作正常。
3 H0 U- K- k0 S$ e% Z, o; G4 s( f5 T  k2 s! E" l& p- M
微信图片_20240702172701.png
" h# @4 _: ]$ g5 H3 ?5 a( j% H+ k- D) f2 k: p/ C. f

  K$ @, R1 j, N- v  |& {转载自: STM329 F9 B5 B# d1 B, O8 o- |  g- h6 [0 f
如有侵权请联系删除' U  P7 r( n8 ~
  o) R+ Q+ ^1 _. p
# x7 ?4 e6 Z. j/ X& R5 F
收藏 评论0 发布时间:2024-7-2 17:28

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版