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

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

[复制链接]
攻城狮Melo 发布时间:2024-7-2 17:28
01前言5 j+ {- h- a: Y) q% G! G3 Y5 e
某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC 芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。 # y, M7 M9 R  u/ F  i; T+ }

3 `# r# C7 t# Y/ U5 g/ B02现场调研与问题分析
) g" B1 Q8 W3 I! F+ L6 ]$ t根据客户提供的信号采集板上使用的 ADC 数据手册及现场反馈:+ N8 U: |: `* {. C( k% B
1.该 ADC 转换芯片 DataSheet 提供的通信接口参考设计如下: ! _# b8 E$ {) H: T+ K; g

) q+ g0 X1 z, J 微信图片_20240702172717.png 8 ~: p/ @1 X6 C$ i7 ]# c* h
9 `- l2 p* R$ V3 P, j! c9 H% f8 i! a
2. 该 ADC 采样芯片工作于 Master 模式,DSP/FPGA 工作于 Slave 模式,其通信时序如下 图所示。1 a0 D: R" i) G( Z: u7 m
在 DRDY 信号的下降沿通过 DOUT0~DOUT7 引脚将数据输出到 DSP/FPGA。客户使用 STM32H7 的 SPI Slave 模式与该 IC 进行通信,采用 Software NSS 工作模式来接收 Master 的数据。
) K3 u3 a5 |/ O! P* W) J; z; g9 i% ~, x% ^8 B
微信图片_20240702172713.png 7 j. N- S; V9 Z
$ |" H4 y; v, Y# m" m9 k$ Y
在连续采样模式下(Master 不间断采样),STM32H7 接收数据正常,其通信时序如下图所示。) ?8 P, n3 m1 h, i
* }5 `6 M1 Y9 o1 k
微信图片_20240702172710.png 7 ~& K6 y( k& }- }( Y* S

/ `3 r1 d# P: v, K% `* D; w3 h5 z% I: L但是,当 Master 停止采样时,DCLK 仍然会一直工作发出工作时钟。此时,STM32H7 的 SPI 做 Slave 在 Stop 期间仍然会收到数据(无效干扰数据)。此数据会造成 Slave 端接收数据失序,如下图所示。
$ S0 v% Q1 \& }7 M6 h- }" ]
% E4 G; ?: D% W" h2 a/ m! B# b 微信图片_20240702172707.png 3 b) e' `  w* ]/ a! F8 B7 y

' N# s  F& D7 o: T03问题分析与解决
6 D% j4 B) j! {: y显然使用标准 SPI 与该芯片进行通信是行不通的,再次聚焦到客户 DRDY 信号并未使用和充分利用,能否利用 DRDY 信号来滤除 Stop 期间的干扰信号呢?
2 L% C  |8 ~. w6 x1 Y& D2 h; \, K% g  r8 ]' A- ~
笔者也再次查阅 RM 后发现 STM32H7 的 SPI NSS 脉冲模式(RM 中称为 TI 模式)。在本文中统称为 NSS 脉冲模式,STM32H7 的 NSS 脉冲模式其核心要点如下:
: [+ P* Q; h1 h+ t7 n9 K5 N# [) L( R" X
1. 通过设置 SPI_CFG2 寄存器的 SP[2:0]位来使能 SPI 工作在 NSS 脉冲模式,当 SPI 工作于 脉冲模式时,SCK 和 SS 引脚的信号极性、相位、字节序是固定的,不需要配置 CPOL, CPHA, LSBFRST, SSOM, SSOE, SSIOP 和 SSM 相关寄存器位。# L" q: D9 e8 E8 x* F

+ x3 P1 W1 y/ L2 A8 b2. SPI NSS 脉冲模式通信时序如下图,与标准 SPI 通信相比差异如下:  Q2 Z1 m- V2 f1 q+ f

7 R& `( Q( A6 b. l. \. e启动数据传输前,NSS 会被拉高并维持一个时钟周期(NSS 脉冲)。# ^  h4 @2 E$ ]- J

6 @: E; z* m2 c数据帧的传输过程起止于 2 个 NSS 脉冲之间(前一帧 LSB 开始拉高 SS,前一帧 LSB 结束后 拉低 NSS 开始下一帧传输)。- R  z* C" h. p, s# v5 R

% x2 H4 L, Y1 Z' ~4 C; d
在时钟 SCK 的上升沿开始发送数据,在时钟 SCK 的下降沿进行采样和接收。! \* |! d6 l6 Q. W; z& t

& A5 x/ g) ^1 Z. H0 Z所以,STM32H7 的 SPI 的 NSS 脉冲模式时序刚好与该 ADC 芯片是匹配的。
7 s3 C5 @" u+ H
: V3 f; g4 P; D. ]) L' c. N 微信图片_20240702172704.png . @. G  a* ?5 \

4 I& H  `3 O# y: ?那么我们将客户的接法进行改进,并配置 STM32H7 的 SPI 工作于 NSS 脉冲模式,经过客户反复验证工作正常。7 Y. ~& P' s- P+ f+ P$ y4 X

0 e3 ~# I# e$ d1 C' \ 微信图片_20240702172701.png
2 n. n! d& _/ h& `
0 L6 l7 w5 I6 \9 J; C3 X6 [7 h! u" [  s- G" C
转载自: STM32
9 N" H+ h0 {2 ~- u1 D如有侵权请联系删除+ f2 p6 ~1 ~& f- W
* s8 q  q& U0 o+ t( A7 [
+ M+ `) n  U3 g( {
收藏 评论0 发布时间:2024-7-2 17:28

举报

0个回答

所属标签

相似分享

官网相关资源

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