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

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

[复制链接]
攻城狮Melo 发布时间:2024-7-2 17:28
01前言
1 r+ J. y5 Q$ n8 d  T某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC 芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。
2 k/ g- |: H. \' N; i- s, R, x* y4 F# _( F7 }9 K1 G
02现场调研与问题分析
- E# B1 h& [8 @7 h# z1 |根据客户提供的信号采集板上使用的 ADC 数据手册及现场反馈:, g) t7 u* J8 N% R" ^5 k' t' s3 d
1.该 ADC 转换芯片 DataSheet 提供的通信接口参考设计如下:
/ [" P& p4 j5 G# {9 y+ a2 U
8 d1 r5 G  T) [) O3 q; J 微信图片_20240702172717.png
1 G' Y! r9 H' t) u8 b7 [2 m/ I, I0 F# ^7 B5 b
2. 该 ADC 采样芯片工作于 Master 模式,DSP/FPGA 工作于 Slave 模式,其通信时序如下 图所示。: T, s0 ]! s! \
在 DRDY 信号的下降沿通过 DOUT0~DOUT7 引脚将数据输出到 DSP/FPGA。客户使用 STM32H7 的 SPI Slave 模式与该 IC 进行通信,采用 Software NSS 工作模式来接收 Master 的数据。; ]) ]/ T3 R$ n) C6 f) T
" x9 P. \, h( ^- T8 u
微信图片_20240702172713.png . d% I) y4 j+ ~+ M! A
( ?4 @" ]8 ?$ ^
在连续采样模式下(Master 不间断采样),STM32H7 接收数据正常,其通信时序如下图所示。
/ |% E2 H1 C: ?8 ]. I2 o7 R. L3 h' q9 t" n! X6 Z+ T$ u- Q
微信图片_20240702172710.png - C3 A, U( d$ a5 J
  o- w7 }/ j6 r9 f
但是,当 Master 停止采样时,DCLK 仍然会一直工作发出工作时钟。此时,STM32H7 的 SPI 做 Slave 在 Stop 期间仍然会收到数据(无效干扰数据)。此数据会造成 Slave 端接收数据失序,如下图所示。. J6 D7 g; Q4 I: |- B& _  D/ I

2 V1 k* ^/ r" r4 u. K 微信图片_20240702172707.png / l! r" ^2 t" l1 ]7 Y$ U! `- t/ n

: V6 ~$ b. k8 R- {03问题分析与解决
  ~7 [) H& L1 V: \0 T& ~* W显然使用标准 SPI 与该芯片进行通信是行不通的,再次聚焦到客户 DRDY 信号并未使用和充分利用,能否利用 DRDY 信号来滤除 Stop 期间的干扰信号呢?
; a* Q/ L* J6 [, x5 M- ?6 H( s5 [7 o: x2 Z0 L7 ~6 L+ w1 y
笔者也再次查阅 RM 后发现 STM32H7 的 SPI NSS 脉冲模式(RM 中称为 TI 模式)。在本文中统称为 NSS 脉冲模式,STM32H7 的 NSS 脉冲模式其核心要点如下:
$ c4 L' n: {" O9 R( {/ b8 L* c& H9 V! x/ h, H4 ~# p; K
1. 通过设置 SPI_CFG2 寄存器的 SP[2:0]位来使能 SPI 工作在 NSS 脉冲模式,当 SPI 工作于 脉冲模式时,SCK 和 SS 引脚的信号极性、相位、字节序是固定的,不需要配置 CPOL, CPHA, LSBFRST, SSOM, SSOE, SSIOP 和 SSM 相关寄存器位。
: z% q5 s/ `4 n

3 E2 }6 @" W- |4 ?) N* r2. SPI NSS 脉冲模式通信时序如下图,与标准 SPI 通信相比差异如下:- P! C2 b8 r, k, l* M# r

# G+ L8 o) N: ~! I启动数据传输前,NSS 会被拉高并维持一个时钟周期(NSS 脉冲)。
' W- j5 ~, d  W; g# C! ^' [
: T# X$ \# C+ d- I1 |数据帧的传输过程起止于 2 个 NSS 脉冲之间(前一帧 LSB 开始拉高 SS,前一帧 LSB 结束后 拉低 NSS 开始下一帧传输)。- |4 f2 x0 T& d8 E5 l
" s/ l+ R$ X/ k8 _
在时钟 SCK 的上升沿开始发送数据,在时钟 SCK 的下降沿进行采样和接收。
9 G5 C# g- i5 W* d" k. }8 [1 }9 U" v- P/ U! H; D& v, |
所以,STM32H7 的 SPI 的 NSS 脉冲模式时序刚好与该 ADC 芯片是匹配的。
7 N! e2 I, u9 Q+ T
6 j3 G/ N4 h8 O8 {& x+ N 微信图片_20240702172704.png
6 L6 A- k+ b1 Y+ q

+ k* W2 A% C8 a7 }那么我们将客户的接法进行改进,并配置 STM32H7 的 SPI 工作于 NSS 脉冲模式,经过客户反复验证工作正常。2 }- g3 u4 M4 ~0 P# K5 s

: |, z# _' N1 @& R* ? 微信图片_20240702172701.png
& n5 _+ H$ z6 b4 M9 z/ d. F3 y7 e. s0 m& p
( M: B* `& W4 e  b! D+ ^; Z- B
转载自: STM32
8 j+ |- F- d* }9 g4 D( Q如有侵权请联系删除* x. A/ F; A0 V* G7 |
; E' b3 `- {- O6 }5 f
# S' J' t% t* ^
收藏 评论0 发布时间:2024-7-2 17:28

举报

0个回答

所属标签

相似分享

官网相关资源

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