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

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

[复制链接]
攻城狮Melo 发布时间:2024-7-2 17:28
01前言2 x, X! l$ o1 U" a, D7 O
某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC 芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。
4 H7 K7 k( @, ~; Y+ d/ }+ [) U% M" F/ u( [' L( i& ]. g; R
02现场调研与问题分析
) Y; j+ C7 _) X3 k. v根据客户提供的信号采集板上使用的 ADC 数据手册及现场反馈:
4 d* x- A$ m! L: W6 H, U8 q9 e1.该 ADC 转换芯片 DataSheet 提供的通信接口参考设计如下:
7 B- X& b' o  @9 |
! R( ], ?$ W2 N% g7 a 微信图片_20240702172717.png
) M3 X. G; L, G4 E, D+ q* i; ]( K& j; j1 [1 y( ~; y5 w4 p0 e1 |
2. 该 ADC 采样芯片工作于 Master 模式,DSP/FPGA 工作于 Slave 模式,其通信时序如下 图所示。
! M) ]7 K# \/ O8 ~在 DRDY 信号的下降沿通过 DOUT0~DOUT7 引脚将数据输出到 DSP/FPGA。客户使用 STM32H7 的 SPI Slave 模式与该 IC 进行通信,采用 Software NSS 工作模式来接收 Master 的数据。
0 g4 J$ X' ^$ z# V2 E0 \
# i3 W$ ^. x$ ]' I 微信图片_20240702172713.png   @7 R1 K% D# I
/ P* ^% y3 x7 N& e% X9 {
在连续采样模式下(Master 不间断采样),STM32H7 接收数据正常,其通信时序如下图所示。4 ^1 t4 z0 D/ i* [% S+ W

0 y& Z; J- |8 K9 ]- ]& M& `& v 微信图片_20240702172710.png
7 y& n% }! C) D3 O; y: i2 I3 x9 M
( Y' d. x$ t  F* e( d
但是,当 Master 停止采样时,DCLK 仍然会一直工作发出工作时钟。此时,STM32H7 的 SPI 做 Slave 在 Stop 期间仍然会收到数据(无效干扰数据)。此数据会造成 Slave 端接收数据失序,如下图所示。
( G# F3 F0 O8 {# t7 R5 L1 Q
( ^3 J: O; a  t- m7 E- E% L+ W; X 微信图片_20240702172707.png 7 {. q: E5 x6 r, z6 q

2 q2 U# d4 s  N. A3 P3 P3 o; c03问题分析与解决; }8 N; i: M% A& h/ r
显然使用标准 SPI 与该芯片进行通信是行不通的,再次聚焦到客户 DRDY 信号并未使用和充分利用,能否利用 DRDY 信号来滤除 Stop 期间的干扰信号呢?
6 H8 z* b7 q8 m  ^( ~) F6 y: [' K7 ^% V3 ~  X3 W
笔者也再次查阅 RM 后发现 STM32H7 的 SPI NSS 脉冲模式(RM 中称为 TI 模式)。在本文中统称为 NSS 脉冲模式,STM32H7 的 NSS 脉冲模式其核心要点如下:3 g1 E" W& c$ ?8 c0 h9 e( @" S
2 v7 |$ A, T, L( Q. V( V# p+ T
1. 通过设置 SPI_CFG2 寄存器的 SP[2:0]位来使能 SPI 工作在 NSS 脉冲模式,当 SPI 工作于 脉冲模式时,SCK 和 SS 引脚的信号极性、相位、字节序是固定的,不需要配置 CPOL, CPHA, LSBFRST, SSOM, SSOE, SSIOP 和 SSM 相关寄存器位。
4 ?0 `) D. o) x2 f# q; d- B
' |# J6 D: z  p, o/ E9 S/ E
2. SPI NSS 脉冲模式通信时序如下图,与标准 SPI 通信相比差异如下:. o/ s% j5 @) L2 I; V" x) @

% u# W9 z0 E. T启动数据传输前,NSS 会被拉高并维持一个时钟周期(NSS 脉冲)。
. D# m$ `, d7 f  \+ i: x! K. X- u9 I; N, j  e# D! V$ V( k
数据帧的传输过程起止于 2 个 NSS 脉冲之间(前一帧 LSB 开始拉高 SS,前一帧 LSB 结束后 拉低 NSS 开始下一帧传输)。7 G9 O0 T5 n3 p" Z. c  F) h9 a

5 V% ]! r- P! K3 [' e
在时钟 SCK 的上升沿开始发送数据,在时钟 SCK 的下降沿进行采样和接收。
, r, r; q5 k* e. v; V8 o$ b1 {# |9 |* J! M9 t
所以,STM32H7 的 SPI 的 NSS 脉冲模式时序刚好与该 ADC 芯片是匹配的。
6 U3 V; P8 y  B  q1 t
# }& u+ r) A$ Z8 M9 L5 w/ W 微信图片_20240702172704.png # L: E) M" t% n7 E' Y$ ?
3 n2 p9 V$ Y) c1 \; n. D* J
那么我们将客户的接法进行改进,并配置 STM32H7 的 SPI 工作于 NSS 脉冲模式,经过客户反复验证工作正常。
8 M% X/ x+ j2 B: `6 ~* K1 Y4 B. Q, I5 D* R* o( N. Y" S
微信图片_20240702172701.png
% w' n0 j2 Z0 P$ |( V* ^$ R
# `5 w& i" z  j8 \7 D/ ?2 ^' A6 {. X6 N0 n' q! K
转载自: STM32
6 Y4 l9 p0 M# D1 e$ p如有侵权请联系删除
5 u0 A( L' e$ Z% u
/ X: d8 |0 w  M1 }) y7 g$ e4 i4 H
% s; k! ?$ |! ?' x, \- o2 B3 h
赞 收藏 评论0 发布时间:2024-7-2 17:28

举报

0个回答

所属标签

相似技术帖

官网相关资源

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