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

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

[复制链接]
攻城狮Melo 发布时间:2024-7-2 17:28
01前言8 k; Z3 R' R3 S0 [- V) }
某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC 芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。
4 Y+ k! |. O% E/ `
4 |8 M/ k" L- {9 J" g. j" ^5 S. c* k7 x02现场调研与问题分析 . v/ y3 G7 x0 @
根据客户提供的信号采集板上使用的 ADC 数据手册及现场反馈:
" g4 H: u* o% o- W7 Z& I1.该 ADC 转换芯片 DataSheet 提供的通信接口参考设计如下:   B# n, {3 I/ }# s
# C$ G) C+ i' |8 g. {; W' k
微信图片_20240702172717.png 7 v2 y$ B" _% q

9 V" B# _2 T* ?$ G2. 该 ADC 采样芯片工作于 Master 模式,DSP/FPGA 工作于 Slave 模式,其通信时序如下 图所示。! m* O. I! {) C
在 DRDY 信号的下降沿通过 DOUT0~DOUT7 引脚将数据输出到 DSP/FPGA。客户使用 STM32H7 的 SPI Slave 模式与该 IC 进行通信,采用 Software NSS 工作模式来接收 Master 的数据。# F- H0 F$ A9 _4 H5 j0 x- A1 T0 h8 H

; g- w" m0 s  @' p# D; _ 微信图片_20240702172713.png * N3 L# N+ u6 {6 H+ E  ?
' d. ?3 n  P7 S/ e& `
在连续采样模式下(Master 不间断采样),STM32H7 接收数据正常,其通信时序如下图所示。1 W2 _0 M- }( |0 q' j6 n; w& ~# a

4 [! ]- j, X2 b1 d" D 微信图片_20240702172710.png 4 w* T/ G0 D1 S: ?$ T0 r  e

; k2 v1 S% [) B9 n. \但是,当 Master 停止采样时,DCLK 仍然会一直工作发出工作时钟。此时,STM32H7 的 SPI 做 Slave 在 Stop 期间仍然会收到数据(无效干扰数据)。此数据会造成 Slave 端接收数据失序,如下图所示。5 O8 N8 @8 Y0 ~/ x0 A9 y. D
. U; ^9 o: e* {7 `; z/ F
微信图片_20240702172707.png
( i) Q5 {  z6 I$ Q! f
) c1 A# `  \& d03问题分析与解决
4 u- @3 J8 C8 c$ t; e" z- H9 X9 z显然使用标准 SPI 与该芯片进行通信是行不通的,再次聚焦到客户 DRDY 信号并未使用和充分利用,能否利用 DRDY 信号来滤除 Stop 期间的干扰信号呢?
3 e* j3 d2 p; M: Q5 t2 G: w- F# M
& f. Q3 I/ U' h( R1 h
笔者也再次查阅 RM 后发现 STM32H7 的 SPI NSS 脉冲模式(RM 中称为 TI 模式)。在本文中统称为 NSS 脉冲模式,STM32H7 的 NSS 脉冲模式其核心要点如下:
, S2 q+ ~1 G3 J: X: ?# N  a
6 F' w' n, c+ A+ D9 V; ?7 @! ~1. 通过设置 SPI_CFG2 寄存器的 SP[2:0]位来使能 SPI 工作在 NSS 脉冲模式,当 SPI 工作于 脉冲模式时,SCK 和 SS 引脚的信号极性、相位、字节序是固定的,不需要配置 CPOL, CPHA, LSBFRST, SSOM, SSOE, SSIOP 和 SSM 相关寄存器位。
9 H3 G3 [5 w; U' V3 e" z, g
3 q) b$ f* }' E
2. SPI NSS 脉冲模式通信时序如下图,与标准 SPI 通信相比差异如下:
& D$ w6 h4 r" Q" w( m6 \! A. j+ u5 I; P0 ]. W1 W" }, l
启动数据传输前,NSS 会被拉高并维持一个时钟周期(NSS 脉冲)。
* b4 a9 I( h- G7 d4 ?% W& W- B3 v6 S* r, B
数据帧的传输过程起止于 2 个 NSS 脉冲之间(前一帧 LSB 开始拉高 SS,前一帧 LSB 结束后 拉低 NSS 开始下一帧传输)。+ i, c5 Y& w: y2 L7 H+ a' w% }
. x, ^( c- j6 Y- m3 s8 ?
在时钟 SCK 的上升沿开始发送数据,在时钟 SCK 的下降沿进行采样和接收。4 p6 s) ^% F; Y' d" E5 w1 ~

$ b. r& O  y( u0 k4 ]+ Z所以,STM32H7 的 SPI 的 NSS 脉冲模式时序刚好与该 ADC 芯片是匹配的。
9 D( `. I) B$ s
3 I1 h9 p; E' J% T 微信图片_20240702172704.png
0 g2 K% U* o- p9 q: C  g
3 ^/ ]- R1 L) w% ?+ t! A
那么我们将客户的接法进行改进,并配置 STM32H7 的 SPI 工作于 NSS 脉冲模式,经过客户反复验证工作正常。0 e2 I- V( R5 ~2 _8 d
; x+ c. g# G/ v8 g" A1 W$ v. S- \
微信图片_20240702172701.png
" M# Q7 q' G; }3 d$ ~: s. Q7 ]; y, ]+ \' H5 x' U  u1 \: S3 C- G

2 ]( h7 s& @1 V7 L: N) d转载自: STM32
# W) T  B0 d, h- k3 q8 e+ s, t/ L如有侵权请联系删除- |4 q/ B/ E7 {2 c+ Y$ r

+ S- b8 n6 M6 g  _- o
  h% C5 B8 h0 _* U3 G
收藏 评论0 发布时间:2024-7-2 17:28

举报

0个回答

所属标签

相似技术帖

官网相关资源

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