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

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

[复制链接]
攻城狮Melo 发布时间:2024-7-2 17:28
01前言( E3 J' U4 E7 n, k
某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC 芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。 ) n# p6 w; y% X9 ]) n( g

- O& \, b4 D, Z% f02现场调研与问题分析
( Z4 _3 y  o! z根据客户提供的信号采集板上使用的 ADC 数据手册及现场反馈:2 g( N2 z' C) v4 {$ Q3 Q/ M8 `4 m
1.该 ADC 转换芯片 DataSheet 提供的通信接口参考设计如下:
" {' F5 k1 O7 o8 s# q* t
" Z# A8 Y1 M, @: M, }4 H 微信图片_20240702172717.png ; Y8 h# F2 A8 I- T' T
% X5 u) D. M4 M# Y; Q! b6 h; L
2. 该 ADC 采样芯片工作于 Master 模式,DSP/FPGA 工作于 Slave 模式,其通信时序如下 图所示。
% l1 y9 e3 J0 T; w/ @8 U. W在 DRDY 信号的下降沿通过 DOUT0~DOUT7 引脚将数据输出到 DSP/FPGA。客户使用 STM32H7 的 SPI Slave 模式与该 IC 进行通信,采用 Software NSS 工作模式来接收 Master 的数据。
" E, |9 i, V/ H" B' i/ M0 \' G
' G0 T& C, p, V2 l# U+ _ 微信图片_20240702172713.png
, [) U  k' e! h# A# w! e

( v6 W6 `3 M2 h- t8 [在连续采样模式下(Master 不间断采样),STM32H7 接收数据正常,其通信时序如下图所示。4 a% z( [5 y, L6 \3 b7 ^
( I" V; K' M9 E  \7 \7 p2 Z
微信图片_20240702172710.png
/ z5 }7 S8 J! ?  t; n
' {$ O. r0 D  W4 W
但是,当 Master 停止采样时,DCLK 仍然会一直工作发出工作时钟。此时,STM32H7 的 SPI 做 Slave 在 Stop 期间仍然会收到数据(无效干扰数据)。此数据会造成 Slave 端接收数据失序,如下图所示。. B& T3 ~3 o+ d3 X
* J+ M, ^6 K$ p
微信图片_20240702172707.png & T; Y( h- G8 k" s+ z5 R+ w

7 G% D. i) u1 A. N; g! d03问题分析与解决) C  Z( i3 Y1 `) I- m
显然使用标准 SPI 与该芯片进行通信是行不通的,再次聚焦到客户 DRDY 信号并未使用和充分利用,能否利用 DRDY 信号来滤除 Stop 期间的干扰信号呢?
/ G' \& A& g* {% Z! P1 G: P6 v  S% Z. w! V; H& \! j  K- L& N1 v
笔者也再次查阅 RM 后发现 STM32H7 的 SPI NSS 脉冲模式(RM 中称为 TI 模式)。在本文中统称为 NSS 脉冲模式,STM32H7 的 NSS 脉冲模式其核心要点如下:1 I) ^' }$ q6 F8 F: e6 V7 Q$ J

; h* W0 T6 r% g0 ?1. 通过设置 SPI_CFG2 寄存器的 SP[2:0]位来使能 SPI 工作在 NSS 脉冲模式,当 SPI 工作于 脉冲模式时,SCK 和 SS 引脚的信号极性、相位、字节序是固定的,不需要配置 CPOL, CPHA, LSBFRST, SSOM, SSOE, SSIOP 和 SSM 相关寄存器位。" a$ u" }/ O  m: T4 J/ M# y

* W0 F6 b# Q8 U2. SPI NSS 脉冲模式通信时序如下图,与标准 SPI 通信相比差异如下:* e; _' I( k+ I( J3 R/ v
4 G, ~4 x2 `& D# J
启动数据传输前,NSS 会被拉高并维持一个时钟周期(NSS 脉冲)。' o% j9 ], N2 i5 x/ w9 f8 L

$ h/ Y) k. b# c! J9 J9 R数据帧的传输过程起止于 2 个 NSS 脉冲之间(前一帧 LSB 开始拉高 SS,前一帧 LSB 结束后 拉低 NSS 开始下一帧传输)。
$ s5 a. C% B0 `: A0 x& A( x% Z6 _! f- r; Y! B6 L- p
在时钟 SCK 的上升沿开始发送数据,在时钟 SCK 的下降沿进行采样和接收。5 _* C. G! I* s5 D& y  [% G
- Y* u1 I8 h. v5 Y0 _4 `! A
所以,STM32H7 的 SPI 的 NSS 脉冲模式时序刚好与该 ADC 芯片是匹配的。
: x  t1 }# Z, @! D% ]; T7 @& m$ q7 F7 d0 W$ k
微信图片_20240702172704.png
! L# n$ J, Y" ?+ J! c: r
/ D) w) }6 q; n; B# ^4 j
那么我们将客户的接法进行改进,并配置 STM32H7 的 SPI 工作于 NSS 脉冲模式,经过客户反复验证工作正常。
  t: e$ [2 z  e. v) F/ `, L. d- \8 M* z* N& l* e" @
微信图片_20240702172701.png 0 b- U- m$ _' a0 s2 L' U7 k

8 e/ S3 c& ]8 n. b) B
* k0 y2 M; A% X' e. U转载自: STM32& r4 j$ o' ]  _
如有侵权请联系删除
9 g& i3 V( J/ C7 Y3 a! w' C: t
- t6 W0 w; Q* z# Z0 L, C% m( `. Q& j; N& j
赞 收藏 评论0 发布时间:2024-7-2 17:28

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版