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

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

[复制链接]
攻城狮Melo 发布时间:2024-7-2 17:28
01前言
& X6 Y$ m- s& o# @: D某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC 芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。 & p6 C3 O; b6 W: M" Q; v
; B* ]5 L3 i  R9 F0 O! g: C. M4 c
02现场调研与问题分析 % K- h6 O& G" j- ?! K
根据客户提供的信号采集板上使用的 ADC 数据手册及现场反馈:
! L$ `: u* [/ I# x% A1.该 ADC 转换芯片 DataSheet 提供的通信接口参考设计如下: , u$ i* z- G3 J$ G2 r- \

4 b* y% j& a) n6 E 微信图片_20240702172717.png 7 t, X  M: k4 g  l
0 o* b! k' J7 C- s; d. l3 S& H
2. 该 ADC 采样芯片工作于 Master 模式,DSP/FPGA 工作于 Slave 模式,其通信时序如下 图所示。7 q: D3 w) N. q7 B8 q8 `
在 DRDY 信号的下降沿通过 DOUT0~DOUT7 引脚将数据输出到 DSP/FPGA。客户使用 STM32H7 的 SPI Slave 模式与该 IC 进行通信,采用 Software NSS 工作模式来接收 Master 的数据。
6 \& S8 b, c/ x+ n% y2 e
( h5 i7 s% E+ E1 i/ Q0 C 微信图片_20240702172713.png 6 v) _% l% o) B+ g1 R
4 f4 V- N& g9 [8 I4 Q
在连续采样模式下(Master 不间断采样),STM32H7 接收数据正常,其通信时序如下图所示。1 i1 y: [# b7 }6 _) E" q4 V* `8 z

8 D0 H! c+ t  \; Z" A( {" Q 微信图片_20240702172710.png
& m+ d# `# i3 G) B0 e: A( a
0 x. q: h8 p# q* H( Q6 l
但是,当 Master 停止采样时,DCLK 仍然会一直工作发出工作时钟。此时,STM32H7 的 SPI 做 Slave 在 Stop 期间仍然会收到数据(无效干扰数据)。此数据会造成 Slave 端接收数据失序,如下图所示。
/ \6 a- Z& U$ r' t. l+ _1 W4 R
% `; c9 I2 v. `" |* Y 微信图片_20240702172707.png - u4 s9 j+ {3 \* K% t$ h$ Z
' r5 ~& Y# q7 M& c3 D9 E$ D$ P7 |
03问题分析与解决! {2 m7 j8 |/ l8 c6 Z
显然使用标准 SPI 与该芯片进行通信是行不通的,再次聚焦到客户 DRDY 信号并未使用和充分利用,能否利用 DRDY 信号来滤除 Stop 期间的干扰信号呢? 3 T# q, j! |1 ]4 y0 `

* e1 b# l% ~1 T! v
笔者也再次查阅 RM 后发现 STM32H7 的 SPI NSS 脉冲模式(RM 中称为 TI 模式)。在本文中统称为 NSS 脉冲模式,STM32H7 的 NSS 脉冲模式其核心要点如下:
6 Q- Z: D8 ]0 l# S, o$ x8 ^" p$ Y7 K; n8 {$ o
1. 通过设置 SPI_CFG2 寄存器的 SP[2:0]位来使能 SPI 工作在 NSS 脉冲模式,当 SPI 工作于 脉冲模式时,SCK 和 SS 引脚的信号极性、相位、字节序是固定的,不需要配置 CPOL, CPHA, LSBFRST, SSOM, SSOE, SSIOP 和 SSM 相关寄存器位。2 w2 K  K6 H3 ^- T0 ]
  X2 ?' D' n/ c1 V" F* H
2. SPI NSS 脉冲模式通信时序如下图,与标准 SPI 通信相比差异如下:5 J1 {: Q" Y0 T/ G

" [4 ^9 n7 q# Z/ N  y% C7 U6 j启动数据传输前,NSS 会被拉高并维持一个时钟周期(NSS 脉冲)。
! q( |; Z! y+ i3 I6 f9 n- x$ w1 g' l* n1 _- ~
数据帧的传输过程起止于 2 个 NSS 脉冲之间(前一帧 LSB 开始拉高 SS,前一帧 LSB 结束后 拉低 NSS 开始下一帧传输)。
8 j' X4 U( W3 H6 `, J7 m! G) E, s
在时钟 SCK 的上升沿开始发送数据,在时钟 SCK 的下降沿进行采样和接收。
% `  M( u1 \5 J2 h  H( W9 H! t/ n& P4 a
所以,STM32H7 的 SPI 的 NSS 脉冲模式时序刚好与该 ADC 芯片是匹配的。( M( \5 h; c* C. L" D) v( J
$ c9 T# D" i% m( p+ f6 _) S. j7 ?
微信图片_20240702172704.png 4 a+ X8 K" Q1 M5 S* s( F1 |
+ }  ?8 s7 p, h" U5 ~: S
那么我们将客户的接法进行改进,并配置 STM32H7 的 SPI 工作于 NSS 脉冲模式,经过客户反复验证工作正常。3 L& d4 t  x' e" u
) F2 E9 |0 G: C7 Y
微信图片_20240702172701.png 1 J' `2 _& g* U( \% A& h7 y
2 a9 c: Q+ r' f

" ]9 Z2 H  v8 m- D% Y0 c4 A* s转载自: STM322 h. c# y" H7 D0 J' A4 c4 |  o" Z
如有侵权请联系删除
; a! B' A4 A' q5 C- X& Z/ ?
. O  h% y' z0 e! C6 H& f* s
5 J* b+ ]& L4 ]4 |0 i
收藏 评论0 发布时间:2024-7-2 17:28

举报

0个回答

所属标签

相似分享

官网相关资源

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