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

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

[复制链接]
攻城狮Melo 发布时间:2024-7-2 17:28
01前言
- F) h; G+ F3 c某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC 芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。
7 s2 U( M  K& Y5 W5 y9 W* W  n5 _0 d( c
02现场调研与问题分析 ' F% T# N1 k, k" c, @$ `
根据客户提供的信号采集板上使用的 ADC 数据手册及现场反馈:
$ C* q% F  y' x/ ^! e4 v4 I1.该 ADC 转换芯片 DataSheet 提供的通信接口参考设计如下: 2 v9 B) b' G3 N- U

  D+ o+ }& w  {# e- i) Z8 U( J 微信图片_20240702172717.png ; ^3 D2 w/ E& a: ]6 D( E3 y0 P+ S2 q

! ?0 Y5 N5 v* o1 X2 j/ {) j* t2. 该 ADC 采样芯片工作于 Master 模式,DSP/FPGA 工作于 Slave 模式,其通信时序如下 图所示。1 Y5 O# Q1 `% Y! _+ [; M/ G
在 DRDY 信号的下降沿通过 DOUT0~DOUT7 引脚将数据输出到 DSP/FPGA。客户使用 STM32H7 的 SPI Slave 模式与该 IC 进行通信,采用 Software NSS 工作模式来接收 Master 的数据。
; {7 c8 w/ n# y  j% w
1 q$ |0 @' i% q1 n% P  s; x7 g 微信图片_20240702172713.png
" J& w8 A( b( J4 M. P
& w) n) j8 X1 Z. p
在连续采样模式下(Master 不间断采样),STM32H7 接收数据正常,其通信时序如下图所示。9 y, w- A# |7 {$ B2 v# ^, t4 L& z4 {
1 ?7 |4 Z6 v8 W5 H) a$ R
微信图片_20240702172710.png / u1 _0 V) l0 W% T
* G: d* ]' x# j3 `" ]( ^1 W3 B" p
但是,当 Master 停止采样时,DCLK 仍然会一直工作发出工作时钟。此时,STM32H7 的 SPI 做 Slave 在 Stop 期间仍然会收到数据(无效干扰数据)。此数据会造成 Slave 端接收数据失序,如下图所示。9 s, e  K3 ?9 |  w5 X

" x4 R9 @( @. t- b 微信图片_20240702172707.png
# k2 l6 P( g; O" b' V  t. Q$ O' w9 M' N. ~9 g$ k
03问题分析与解决4 q" }: p0 H9 W3 a1 J" X
显然使用标准 SPI 与该芯片进行通信是行不通的,再次聚焦到客户 DRDY 信号并未使用和充分利用,能否利用 DRDY 信号来滤除 Stop 期间的干扰信号呢?
0 _4 e" A) T' Z- d
7 H3 o% i: x. I
笔者也再次查阅 RM 后发现 STM32H7 的 SPI NSS 脉冲模式(RM 中称为 TI 模式)。在本文中统称为 NSS 脉冲模式,STM32H7 的 NSS 脉冲模式其核心要点如下:% d: H/ u: E5 X  b9 S

2 E! h% [! T5 z: D& \( b1. 通过设置 SPI_CFG2 寄存器的 SP[2:0]位来使能 SPI 工作在 NSS 脉冲模式,当 SPI 工作于 脉冲模式时,SCK 和 SS 引脚的信号极性、相位、字节序是固定的,不需要配置 CPOL, CPHA, LSBFRST, SSOM, SSOE, SSIOP 和 SSM 相关寄存器位。
# i  C. d4 R& R7 d

' Z# E1 V/ p$ W+ o- w) ]5 i) a! d$ w2. SPI NSS 脉冲模式通信时序如下图,与标准 SPI 通信相比差异如下:
! U0 B% t# b1 Y
* Z: ?- I# y- k启动数据传输前,NSS 会被拉高并维持一个时钟周期(NSS 脉冲)。
  v" t4 e2 {1 `3 S1 O$ a  D; K2 p8 F' v( W! a; X
数据帧的传输过程起止于 2 个 NSS 脉冲之间(前一帧 LSB 开始拉高 SS,前一帧 LSB 结束后 拉低 NSS 开始下一帧传输)。* b0 p! r0 ~# ~5 p1 i% K" ?
3 M' H) R0 D/ h+ [( X
在时钟 SCK 的上升沿开始发送数据,在时钟 SCK 的下降沿进行采样和接收。
, V, |& H: o5 g) ]7 V3 z( y# @) b" |0 R. I/ B8 l9 b* m
所以,STM32H7 的 SPI 的 NSS 脉冲模式时序刚好与该 ADC 芯片是匹配的。: Z2 T0 r% r5 I5 l
% Q- G6 R9 `( j
微信图片_20240702172704.png
. L- T; W1 ?' Y3 k! W8 q' W

+ F/ c# J. q+ O- M! P$ q1 L' |那么我们将客户的接法进行改进,并配置 STM32H7 的 SPI 工作于 NSS 脉冲模式,经过客户反复验证工作正常。
7 [  ~- X. `8 r$ m# c. }& a2 @/ G% |  a
0 o. C1 j* w, }( _/ u 微信图片_20240702172701.png
* h$ v0 B+ A! ~( ]5 o/ A4 L: v! U  m2 c# e# S
, B% J" t6 y2 A) V
转载自: STM32
+ @# Z+ U+ ^! [! Z5 o如有侵权请联系删除
! A% M% j# x% Y/ m3 c' x3 u. A# }4 w2 t' i4 ]

/ t- S% O2 X- i- P- X
收藏 评论0 发布时间:2024-7-2 17:28

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版