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

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

[复制链接]
攻城狮Melo 发布时间:2024-7-2 17:28
01前言
8 Y- m2 p  b$ @" r: v& a% E某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC 芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。
  P7 k0 e& A  s' o& l5 }; G6 e
; Q- |$ w8 T) d1 e) v! }. i02现场调研与问题分析 % s8 P" i' H: E7 _9 U4 t) E7 T
根据客户提供的信号采集板上使用的 ADC 数据手册及现场反馈:( f6 K" e! j/ Z
1.该 ADC 转换芯片 DataSheet 提供的通信接口参考设计如下: 4 i3 t1 R# b2 f; ]( y5 j' p

( v$ r- m6 B5 O! {% s 微信图片_20240702172717.png
; q2 Q$ A, e5 ]! x- [
6 m/ P- f# w* x0 G2. 该 ADC 采样芯片工作于 Master 模式,DSP/FPGA 工作于 Slave 模式,其通信时序如下 图所示。2 y( X! l7 t1 R& _5 P; q3 {2 p
在 DRDY 信号的下降沿通过 DOUT0~DOUT7 引脚将数据输出到 DSP/FPGA。客户使用 STM32H7 的 SPI Slave 模式与该 IC 进行通信,采用 Software NSS 工作模式来接收 Master 的数据。
* a- u" j% Z) B8 G+ x3 p7 D2 e, |6 ~) s7 q9 ]
微信图片_20240702172713.png
7 I) p! b+ H" Y( G: }9 j/ v4 ~6 O& C
( A8 W4 q& s2 |1 K
在连续采样模式下(Master 不间断采样),STM32H7 接收数据正常,其通信时序如下图所示。. q0 j+ Q0 }( ?. `, G; m
9 I5 R4 w: {3 ^% T
微信图片_20240702172710.png ' L$ b$ Z- c% Z$ C, G) \2 v& U2 {
& M. G5 ^& Q$ ?5 S7 n
但是,当 Master 停止采样时,DCLK 仍然会一直工作发出工作时钟。此时,STM32H7 的 SPI 做 Slave 在 Stop 期间仍然会收到数据(无效干扰数据)。此数据会造成 Slave 端接收数据失序,如下图所示。8 u! u- s, E+ O* O' T
8 J" h6 R8 a( ]6 R/ h$ i
微信图片_20240702172707.png ! m6 O+ F! P9 f. j+ k
0 }, |8 l0 o7 @
03问题分析与解决
+ P) J( E, D' E) a$ }6 s显然使用标准 SPI 与该芯片进行通信是行不通的,再次聚焦到客户 DRDY 信号并未使用和充分利用,能否利用 DRDY 信号来滤除 Stop 期间的干扰信号呢?
/ N9 I8 ^4 I/ U; M- _. k
$ R' ^3 L  Y8 K" j2 z( G, |
笔者也再次查阅 RM 后发现 STM32H7 的 SPI NSS 脉冲模式(RM 中称为 TI 模式)。在本文中统称为 NSS 脉冲模式,STM32H7 的 NSS 脉冲模式其核心要点如下:" {, Y5 X+ w% S/ P7 A8 f6 O5 N. D

7 b$ d0 B: y$ T) R1 K$ q1. 通过设置 SPI_CFG2 寄存器的 SP[2:0]位来使能 SPI 工作在 NSS 脉冲模式,当 SPI 工作于 脉冲模式时,SCK 和 SS 引脚的信号极性、相位、字节序是固定的,不需要配置 CPOL, CPHA, LSBFRST, SSOM, SSOE, SSIOP 和 SSM 相关寄存器位。- w/ f+ [# M7 J0 @4 p( _

# w5 T* e4 i+ t1 Q# k/ i7 i1 P2 L2. SPI NSS 脉冲模式通信时序如下图,与标准 SPI 通信相比差异如下:: T! p& Y5 l! B4 D

8 J% @0 k$ g) l- f启动数据传输前,NSS 会被拉高并维持一个时钟周期(NSS 脉冲)。
* y; p! C! L- C2 F# W3 K) Y9 ^, e  {) }
数据帧的传输过程起止于 2 个 NSS 脉冲之间(前一帧 LSB 开始拉高 SS,前一帧 LSB 结束后 拉低 NSS 开始下一帧传输)。- n+ C2 |* l1 N$ f6 Y2 F% G- x) z
6 h* E0 f- n2 p& r
在时钟 SCK 的上升沿开始发送数据,在时钟 SCK 的下降沿进行采样和接收。
. @  M  {: U6 [- g7 _! e: ^$ \8 x) k5 g" O& f. Q# }% Y. j1 B+ h
所以,STM32H7 的 SPI 的 NSS 脉冲模式时序刚好与该 ADC 芯片是匹配的。
7 k3 o9 r. }, F
% x) _2 n2 d+ M9 P* F+ q' t) } 微信图片_20240702172704.png & t4 E# x! E2 v( J

# r4 b5 T% }4 N8 [, h5 S那么我们将客户的接法进行改进,并配置 STM32H7 的 SPI 工作于 NSS 脉冲模式,经过客户反复验证工作正常。0 X9 t0 Y: |# b& T7 C% m

( A$ y" y/ m$ o" j 微信图片_20240702172701.png ! y$ T2 ^% `7 d0 R. F/ [$ i& Y

; H2 @4 k" ~- ~" v
9 ^1 a3 A# o2 }  O转载自: STM322 @2 w. Z  |! S
如有侵权请联系删除9 \& L, g% N3 S: Y
; E5 A8 _9 ^  b$ R8 o  {
* k4 a. O7 w3 ]  A4 d2 \
收藏 评论0 发布时间:2024-7-2 17:28

举报

0个回答

所属标签

相似分享

官网相关资源

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