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

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

[复制链接]
攻城狮Melo 发布时间:2024-7-2 17:28
01前言: r/ W6 M. f) t4 Y9 l& }% b% M
某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC 芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。 5 r+ g( y/ t8 q3 b4 r$ `# a
' @& B& W; o6 |- ~" P% K
02现场调研与问题分析
1 E5 w  z! i! O! l- f根据客户提供的信号采集板上使用的 ADC 数据手册及现场反馈:
4 \3 B  W8 F7 r" m  R3 \$ u1.该 ADC 转换芯片 DataSheet 提供的通信接口参考设计如下: * B+ l9 K& k2 s& p' r' b

3 \; m, h4 ~1 n- N$ M8 O 微信图片_20240702172717.png
7 v7 [' |5 L9 ?8 ~
2 o8 y! f( ?' H  Q3 Z7 B2. 该 ADC 采样芯片工作于 Master 模式,DSP/FPGA 工作于 Slave 模式,其通信时序如下 图所示。6 c+ n$ f/ s% u" U% i5 }, B; k# D+ l3 G1 H
在 DRDY 信号的下降沿通过 DOUT0~DOUT7 引脚将数据输出到 DSP/FPGA。客户使用 STM32H7 的 SPI Slave 模式与该 IC 进行通信,采用 Software NSS 工作模式来接收 Master 的数据。& D5 b* m* N  y. I8 z" F

3 [8 E0 y' u1 W 微信图片_20240702172713.png 8 U* }/ o1 m& ]4 C1 W
4 |3 Q9 ~* a) T' T, g2 j! K
在连续采样模式下(Master 不间断采样),STM32H7 接收数据正常,其通信时序如下图所示。/ L6 [, v' F% t* x2 r

* t6 j! n0 C& r 微信图片_20240702172710.png
7 t0 L* n* Y! ]0 K8 \
/ P9 }4 ?, z; H& @6 i1 X
但是,当 Master 停止采样时,DCLK 仍然会一直工作发出工作时钟。此时,STM32H7 的 SPI 做 Slave 在 Stop 期间仍然会收到数据(无效干扰数据)。此数据会造成 Slave 端接收数据失序,如下图所示。
" b4 O" K- P" p5 Q+ M) t1 r* s/ d( @9 J+ `6 U
微信图片_20240702172707.png
$ x1 S" n+ x4 r2 ~" w* R2 K* _* x; Z& [
03问题分析与解决- x6 A- @4 r& M5 p4 o- `
显然使用标准 SPI 与该芯片进行通信是行不通的,再次聚焦到客户 DRDY 信号并未使用和充分利用,能否利用 DRDY 信号来滤除 Stop 期间的干扰信号呢? 4 K1 {, q& z- E
5 l4 [8 n3 Q$ u% \* C7 H. |
笔者也再次查阅 RM 后发现 STM32H7 的 SPI NSS 脉冲模式(RM 中称为 TI 模式)。在本文中统称为 NSS 脉冲模式,STM32H7 的 NSS 脉冲模式其核心要点如下:
( C8 @% B0 F. }: S/ A
( g+ @* J( X3 p, u" D, R" K' n1. 通过设置 SPI_CFG2 寄存器的 SP[2:0]位来使能 SPI 工作在 NSS 脉冲模式,当 SPI 工作于 脉冲模式时,SCK 和 SS 引脚的信号极性、相位、字节序是固定的,不需要配置 CPOL, CPHA, LSBFRST, SSOM, SSOE, SSIOP 和 SSM 相关寄存器位。
$ U/ S  V; C/ c& ^" N

7 h; o7 |: y* ]2. SPI NSS 脉冲模式通信时序如下图,与标准 SPI 通信相比差异如下:
' K) F  `1 f4 f; W7 O" n" P8 x6 A! h
启动数据传输前,NSS 会被拉高并维持一个时钟周期(NSS 脉冲)。
- i$ R+ v/ I+ p( X1 e2 q7 q1 s( D0 w, `! `- P( i. ]/ D
数据帧的传输过程起止于 2 个 NSS 脉冲之间(前一帧 LSB 开始拉高 SS,前一帧 LSB 结束后 拉低 NSS 开始下一帧传输)。
. O. w9 i  T  z" I; U! ^4 }/ I5 r) _# o0 s; T( ~& {, \; C$ p
在时钟 SCK 的上升沿开始发送数据,在时钟 SCK 的下降沿进行采样和接收。$ l' r4 S' T) L0 C

1 \+ A/ L! D: H/ Q5 x% B所以,STM32H7 的 SPI 的 NSS 脉冲模式时序刚好与该 ADC 芯片是匹配的。" V- |3 u* Y! a) p& p
0 n# z3 k, V8 c1 F( q* ?
微信图片_20240702172704.png 3 c, H5 h- B1 V

* R5 R! r/ c' G那么我们将客户的接法进行改进,并配置 STM32H7 的 SPI 工作于 NSS 脉冲模式,经过客户反复验证工作正常。
% g7 f5 M# \' n1 I6 H5 H
! N, _# d0 q7 K0 [, ^ 微信图片_20240702172701.png
2 a; l6 L* i$ m9 e; L! P
' I( u# ?) T# x! S- R& q
6 c0 T) i3 k& }6 i& \转载自: STM32
8 Z7 p5 z1 I+ e6 k* O如有侵权请联系删除5 t) |4 A0 R/ l, w

7 o. `8 z) ]% ?) M3 O1 A1 C4 l) G$ @3 w
赞 收藏 评论0 发布时间:2024-7-2 17:28

举报

0个回答

所属标签

相似技术帖

官网相关资源

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