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

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

[复制链接]
攻城狮Melo 发布时间:2024-7-2 17:28
01前言
* t& M5 ~" s( P6 b  r某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC 芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。 0 [" `& E4 g3 h. a  v

% C. K. Y0 g# r; F0 g6 H' C5 t02现场调研与问题分析
+ Q" y+ |5 a# ?& \( a根据客户提供的信号采集板上使用的 ADC 数据手册及现场反馈:, z4 j# m, _  |% }7 `; y2 T0 h- w9 [
1.该 ADC 转换芯片 DataSheet 提供的通信接口参考设计如下:
: Q7 ?6 n" q( F$ E1 k; q  R( [) J# X
微信图片_20240702172717.png
+ o7 ]0 X# _  {
% k3 P8 r* |4 I1 J. B$ c& b2 B2. 该 ADC 采样芯片工作于 Master 模式,DSP/FPGA 工作于 Slave 模式,其通信时序如下 图所示。% |. z. L2 C  ?# R- C  g: T- {4 q
在 DRDY 信号的下降沿通过 DOUT0~DOUT7 引脚将数据输出到 DSP/FPGA。客户使用 STM32H7 的 SPI Slave 模式与该 IC 进行通信,采用 Software NSS 工作模式来接收 Master 的数据。3 ?# h. d: i5 G1 z

( J) g. q4 g+ a$ W 微信图片_20240702172713.png $ [: g6 J. G9 r  }+ l

8 D' j7 p* m1 I, ^$ T) z在连续采样模式下(Master 不间断采样),STM32H7 接收数据正常,其通信时序如下图所示。; b$ i$ e5 N5 s. v5 r" s+ J
4 I) t  U% d* b0 U
微信图片_20240702172710.png ! C- w4 I+ n! C0 A5 R. n* X

' L& _; y; Y( u) J8 d6 S但是,当 Master 停止采样时,DCLK 仍然会一直工作发出工作时钟。此时,STM32H7 的 SPI 做 Slave 在 Stop 期间仍然会收到数据(无效干扰数据)。此数据会造成 Slave 端接收数据失序,如下图所示。+ U$ O% V6 N8 N! U
4 x' y% z0 E$ N6 `: v
微信图片_20240702172707.png
9 _; g$ g" \1 z) J6 G9 `$ B! b0 j$ a1 o# U0 h" }+ E
03问题分析与解决
4 r6 p9 [% Q0 m6 q! j# n( s显然使用标准 SPI 与该芯片进行通信是行不通的,再次聚焦到客户 DRDY 信号并未使用和充分利用,能否利用 DRDY 信号来滤除 Stop 期间的干扰信号呢?
+ d, m/ A: x* ?
; ?3 e* b- n( I
笔者也再次查阅 RM 后发现 STM32H7 的 SPI NSS 脉冲模式(RM 中称为 TI 模式)。在本文中统称为 NSS 脉冲模式,STM32H7 的 NSS 脉冲模式其核心要点如下:& f9 o0 ]! r5 z  ~+ a9 G

* f7 \$ v, J; D+ Y1. 通过设置 SPI_CFG2 寄存器的 SP[2:0]位来使能 SPI 工作在 NSS 脉冲模式,当 SPI 工作于 脉冲模式时,SCK 和 SS 引脚的信号极性、相位、字节序是固定的,不需要配置 CPOL, CPHA, LSBFRST, SSOM, SSOE, SSIOP 和 SSM 相关寄存器位。' _) H! R. Y$ _+ z6 L& u$ x

- j* P, t8 ?" v# l$ B. e) ?2. SPI NSS 脉冲模式通信时序如下图,与标准 SPI 通信相比差异如下:- F, o& V  c3 y" `9 ]2 `

5 n. P/ Y5 ^6 g8 @( E启动数据传输前,NSS 会被拉高并维持一个时钟周期(NSS 脉冲)。" D8 ^0 l9 X5 J: _3 L: K' T. n
- Y9 c* l/ B1 s- u
数据帧的传输过程起止于 2 个 NSS 脉冲之间(前一帧 LSB 开始拉高 SS,前一帧 LSB 结束后 拉低 NSS 开始下一帧传输)。( X0 R! H/ z) |; x
# z! `. ]; t% e3 g+ j
在时钟 SCK 的上升沿开始发送数据,在时钟 SCK 的下降沿进行采样和接收。
  L5 z: o: s2 K! v
$ v" u4 L" x$ J所以,STM32H7 的 SPI 的 NSS 脉冲模式时序刚好与该 ADC 芯片是匹配的。/ c3 X; r- o  }

6 v( b- ]8 w% T4 U 微信图片_20240702172704.png
: x- F0 Y- Y0 y6 L$ B; y% Q/ V) p
$ c) c  G# e/ a$ M+ h
那么我们将客户的接法进行改进,并配置 STM32H7 的 SPI 工作于 NSS 脉冲模式,经过客户反复验证工作正常。
  q. o* _: p: a- i# F- M% }5 T: T; x+ J( s; R+ N0 j6 n8 r
微信图片_20240702172701.png 5 j2 G$ _1 T" v/ g
: _1 Z4 N3 @- X- w, E

  k. {4 @* V/ f- W4 ?, g转载自: STM320 s7 v  m/ a7 x
如有侵权请联系删除3 p& B! L- ?' h4 l5 I/ ?7 r

9 M- B( y8 r7 C3 W4 T, o
. b" L6 r1 W  h8 q& r# p( y
收藏 评论0 发布时间:2024-7-2 17:28

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版