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

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

[复制链接]
攻城狮Melo 发布时间:2024-7-2 17:28
01前言
; p- h$ }: W# _1 T' a& j9 f某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC 芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。
9 A+ M. I) K3 U( h6 ~2 N( n) z% N) {( h( a% r
02现场调研与问题分析 9 D. l) y% f0 |% }+ t7 |
根据客户提供的信号采集板上使用的 ADC 数据手册及现场反馈:
/ d" H4 Q3 O! K$ z, r1.该 ADC 转换芯片 DataSheet 提供的通信接口参考设计如下: % p8 d1 a  n2 I1 t* f. F- F

. I  s9 }3 u# d- n( k: L 微信图片_20240702172717.png   C. B9 u6 ~7 l& {- F6 {* u
# R% G$ g# N' ?; N4 K0 {
2. 该 ADC 采样芯片工作于 Master 模式,DSP/FPGA 工作于 Slave 模式,其通信时序如下 图所示。
3 M* Y1 Z4 w0 O  M2 A在 DRDY 信号的下降沿通过 DOUT0~DOUT7 引脚将数据输出到 DSP/FPGA。客户使用 STM32H7 的 SPI Slave 模式与该 IC 进行通信,采用 Software NSS 工作模式来接收 Master 的数据。
; E# ~1 R% ]% }8 N2 S1 N3 i6 g2 z. n  i" D8 p: t# e; Y& l' r, y
微信图片_20240702172713.png
* h4 U, P" X2 u8 e1 V

' v$ Q6 B9 Y8 V+ l. s) X/ E; T' r在连续采样模式下(Master 不间断采样),STM32H7 接收数据正常,其通信时序如下图所示。7 S2 ~7 A0 m& x7 m, X' c

* ?! Z9 }( N2 @; r0 K0 a- V 微信图片_20240702172710.png
+ r) _0 H% a+ L4 }+ t1 F
/ K3 u$ O1 W+ E& _! I
但是,当 Master 停止采样时,DCLK 仍然会一直工作发出工作时钟。此时,STM32H7 的 SPI 做 Slave 在 Stop 期间仍然会收到数据(无效干扰数据)。此数据会造成 Slave 端接收数据失序,如下图所示。
8 G" Z! S3 I3 y/ I; Z  ]" A  h7 y& _
微信图片_20240702172707.png 2 @$ o7 d8 _$ V
; t' ]# Y0 F# N' o
03问题分析与解决
% N. j: |* D( P. F9 h2 M显然使用标准 SPI 与该芯片进行通信是行不通的,再次聚焦到客户 DRDY 信号并未使用和充分利用,能否利用 DRDY 信号来滤除 Stop 期间的干扰信号呢?
8 ]' ]1 U( \) S/ S# d
. C  f" u" g. x  |* p( F* H& q
笔者也再次查阅 RM 后发现 STM32H7 的 SPI NSS 脉冲模式(RM 中称为 TI 模式)。在本文中统称为 NSS 脉冲模式,STM32H7 的 NSS 脉冲模式其核心要点如下:( v* M) ?; ?8 ?' s7 N) }5 w2 w

" P3 ^- F/ P  s: C1. 通过设置 SPI_CFG2 寄存器的 SP[2:0]位来使能 SPI 工作在 NSS 脉冲模式,当 SPI 工作于 脉冲模式时,SCK 和 SS 引脚的信号极性、相位、字节序是固定的,不需要配置 CPOL, CPHA, LSBFRST, SSOM, SSOE, SSIOP 和 SSM 相关寄存器位。" m& i4 t8 o* a
3 S' S6 J6 i( y
2. SPI NSS 脉冲模式通信时序如下图,与标准 SPI 通信相比差异如下:3 n4 U2 h/ {* n* _8 K' X  T5 ?* R

' e0 ^' |% U: K启动数据传输前,NSS 会被拉高并维持一个时钟周期(NSS 脉冲)。) G! q2 w9 m+ j6 e- F# j, b

4 Q) o* M% g" I数据帧的传输过程起止于 2 个 NSS 脉冲之间(前一帧 LSB 开始拉高 SS,前一帧 LSB 结束后 拉低 NSS 开始下一帧传输)。
; M* c/ e2 m2 U9 D) ~6 \, A7 ]' N! g8 B% M2 a! [" G
在时钟 SCK 的上升沿开始发送数据,在时钟 SCK 的下降沿进行采样和接收。
/ I* K4 F( B$ ]; L  \
) S0 `7 ~; H  D所以,STM32H7 的 SPI 的 NSS 脉冲模式时序刚好与该 ADC 芯片是匹配的。
; u& E7 D( `  ^( t: P4 m2 r* C6 @# h2 D6 }; x+ a7 g, q& R
微信图片_20240702172704.png
0 X  z% z2 P  h+ t4 ]
4 \0 }2 D. V' [6 Y# g
那么我们将客户的接法进行改进,并配置 STM32H7 的 SPI 工作于 NSS 脉冲模式,经过客户反复验证工作正常。
% R: U$ D( }+ v0 c
) P' {7 }$ E2 p3 [ 微信图片_20240702172701.png + a# C. \; [1 r) q- M7 ^0 |

/ N" q7 w0 R6 \
4 r# d* E. Y; f/ w3 N0 d3 z转载自: STM32- }5 m8 L7 J# }( U
如有侵权请联系删除
5 V6 k% C* Y- T: g3 ?5 d1 l; P8 q  [1 X& Q1 S! ?

7 v) L0 }( M" R
收藏 评论0 发布时间:2024-7-2 17:28

举报

0个回答

所属标签

相似分享

官网相关资源

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