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

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

[复制链接]
攻城狮Melo 发布时间:2024-7-2 17:28
01前言
1 M" y+ {& u. d) _3 j: [某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC 芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。 8 r& R' F4 [. A; m
* f2 P! u- w6 S. k7 v7 p9 ~; K- u
02现场调研与问题分析 ) _: |  k1 D- a6 f2 h4 b' X
根据客户提供的信号采集板上使用的 ADC 数据手册及现场反馈:
) R8 l+ p7 h* n$ }2 ~2 I1.该 ADC 转换芯片 DataSheet 提供的通信接口参考设计如下:
( ]$ d/ B1 W7 J
( N* o, O. [9 F6 h 微信图片_20240702172717.png ! I$ i) A0 ~4 o& A$ C9 i( y
$ x* z& Q1 u# `8 |5 ~
2. 该 ADC 采样芯片工作于 Master 模式,DSP/FPGA 工作于 Slave 模式,其通信时序如下 图所示。
1 [* T1 J+ ?5 [. n( G/ _' x在 DRDY 信号的下降沿通过 DOUT0~DOUT7 引脚将数据输出到 DSP/FPGA。客户使用 STM32H7 的 SPI Slave 模式与该 IC 进行通信,采用 Software NSS 工作模式来接收 Master 的数据。
0 f9 Z7 u1 e9 Z  v8 Z# C; d" m6 S* |) s' }$ B- m9 P9 ?
微信图片_20240702172713.png & x, U' N$ M3 E: V" z9 W% x9 t

! `' u& }  q5 |& {- x在连续采样模式下(Master 不间断采样),STM32H7 接收数据正常,其通信时序如下图所示。$ G5 e! N7 [2 P- I5 D1 f- {4 p
' {$ m* C! P  M% F8 u; U, u0 T: P
微信图片_20240702172710.png , O6 u  i* w  D5 A' |4 @7 D" f4 ]

& Z( m' b$ F( n2 T4 ~8 y但是,当 Master 停止采样时,DCLK 仍然会一直工作发出工作时钟。此时,STM32H7 的 SPI 做 Slave 在 Stop 期间仍然会收到数据(无效干扰数据)。此数据会造成 Slave 端接收数据失序,如下图所示。
9 l  x4 |9 p; O' E  [; k3 Q
7 q7 h0 C3 @) e8 h0 G 微信图片_20240702172707.png ' ^$ A) @: P; F# r6 k0 a5 @% y
9 D( C6 K# g$ O& n! E4 z  x
03问题分析与解决5 n5 L' C9 R1 n3 g: f
显然使用标准 SPI 与该芯片进行通信是行不通的,再次聚焦到客户 DRDY 信号并未使用和充分利用,能否利用 DRDY 信号来滤除 Stop 期间的干扰信号呢? # B# {" g# I8 X4 `

$ @' i  I% y5 L+ Z9 n) O
笔者也再次查阅 RM 后发现 STM32H7 的 SPI NSS 脉冲模式(RM 中称为 TI 模式)。在本文中统称为 NSS 脉冲模式,STM32H7 的 NSS 脉冲模式其核心要点如下:
/ g0 p, y$ u! W" @" |
2 C' x) R; n* w0 G; O1 t# f2 @* F1. 通过设置 SPI_CFG2 寄存器的 SP[2:0]位来使能 SPI 工作在 NSS 脉冲模式,当 SPI 工作于 脉冲模式时,SCK 和 SS 引脚的信号极性、相位、字节序是固定的,不需要配置 CPOL, CPHA, LSBFRST, SSOM, SSOE, SSIOP 和 SSM 相关寄存器位。
7 {$ r. ~" l7 M. L% ]- c" |5 B9 I

5 b6 f1 _' K) w3 ]2 ^4 U# ]2. SPI NSS 脉冲模式通信时序如下图,与标准 SPI 通信相比差异如下:
' C( q# t8 J/ J7 B% g. o- X  C, M4 J% ?
启动数据传输前,NSS 会被拉高并维持一个时钟周期(NSS 脉冲)。+ N% S: K4 _4 x! i  e! `

8 `/ _( Z  }$ d9 t  L9 \- Z; k数据帧的传输过程起止于 2 个 NSS 脉冲之间(前一帧 LSB 开始拉高 SS,前一帧 LSB 结束后 拉低 NSS 开始下一帧传输)。
) T5 Z) T4 [7 w0 D. G
- p5 |! N- E' L) p
在时钟 SCK 的上升沿开始发送数据,在时钟 SCK 的下降沿进行采样和接收。' B9 m9 T7 P) Q6 y

4 d2 A$ I' G$ r- j- d所以,STM32H7 的 SPI 的 NSS 脉冲模式时序刚好与该 ADC 芯片是匹配的。$ z. M: W( u0 [7 H; I

2 Z# D3 D0 h3 p7 B1 T7 U' p5 E. y 微信图片_20240702172704.png
. [* c0 u: o, H0 T" A( q
4 p( |$ p( `" l8 V: X; o3 t; k
那么我们将客户的接法进行改进,并配置 STM32H7 的 SPI 工作于 NSS 脉冲模式,经过客户反复验证工作正常。
; m  U5 L3 B: ?% h3 |
2 G/ U7 p7 G2 }" k: w, Y* b, s 微信图片_20240702172701.png 6 B" J! f* R& B
1 q8 l; P8 ?7 s) L1 @5 V8 ]
9 j  a0 Y1 y& }1 o0 W
转载自: STM32
, H9 N. S) ]" g6 J, B如有侵权请联系删除4 G' l! [) K' t% s% O. i2 \

& T5 y3 W* s, Z. B
) C' U5 s7 m* h' S
收藏 评论0 发布时间:2024-7-2 17:28

举报

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