01前言/ C9 k2 |1 M' v( D9 U$ h+ p1 I( v 某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC 芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。 02现场调研与问题分析 5 N7 d$ _+ x) k8 H) d/ R 根据客户提供的信号采集板上使用的 ADC 数据手册及现场反馈:8 H. ?5 Y% S y; p 1.该 ADC 转换芯片 DataSheet 提供的通信接口参考设计如下: 0 y5 f s# k7 Y9 y& j, z + W; q& P$ }8 C" }8 b4 T& o 2. 该 ADC 采样芯片工作于 Master 模式,DSP/FPGA 工作于 Slave 模式,其通信时序如下 图所示。- I" B# ~+ ` o. k3 _8 V 在 DRDY 信号的下降沿通过 DOUT0~DOUT7 引脚将数据输出到 DSP/FPGA。客户使用 STM32H7 的 SPI Slave 模式与该 IC 进行通信,采用 Software NSS 工作模式来接收 Master 的数据。 ; w# |' p6 ^# y, S& \ 在连续采样模式下(Master 不间断采样),STM32H7 接收数据正常,其通信时序如下图所示。 % m$ W0 v: @0 t" ?. E9 S+ Z 但是,当 Master 停止采样时,DCLK 仍然会一直工作发出工作时钟。此时,STM32H7 的 SPI 做 Slave 在 Stop 期间仍然会收到数据(无效干扰数据)。此数据会造成 Slave 端接收数据失序,如下图所示。4 j' f8 \6 w2 V; G3 u 5 X* |+ T5 `( [: x$ F# C 03问题分析与解决3 E9 K- S/ ]" F' b) `& z 显然使用标准 SPI 与该芯片进行通信是行不通的,再次聚焦到客户 DRDY 信号并未使用和充分利用,能否利用 DRDY 信号来滤除 Stop 期间的干扰信号呢? 笔者也再次查阅 RM 后发现 STM32H7 的 SPI NSS 脉冲模式(RM 中称为 TI 模式)。在本文中统称为 NSS 脉冲模式,STM32H7 的 NSS 脉冲模式其核心要点如下: 1. 通过设置 SPI_CFG2 寄存器的 SP[2:0]位来使能 SPI 工作在 NSS 脉冲模式,当 SPI 工作于 脉冲模式时,SCK 和 SS 引脚的信号极性、相位、字节序是固定的,不需要配置 CPOL, CPHA, LSBFRST, SSOM, SSOE, SSIOP 和 SSM 相关寄存器位。9 C% |& B/ {2 `! Q1 H 7 A$ W9 V1 F0 K" w6 C0 p5 @ 2. SPI NSS 脉冲模式通信时序如下图,与标准 SPI 通信相比差异如下:0 w! b( R4 T" n5 M9 R2 Q V- K 启动数据传输前,NSS 会被拉高并维持一个时钟周期(NSS 脉冲)。 数据帧的传输过程起止于 2 个 NSS 脉冲之间(前一帧 LSB 开始拉高 SS,前一帧 LSB 结束后 拉低 NSS 开始下一帧传输)。 4 H6 f- w- C, B! ^; E$ x$ W/ s9 j 在时钟 SCK 的上升沿开始发送数据,在时钟 SCK 的下降沿进行采样和接收。+ {: _ }' ? ?) m7 S # p) O( t8 ]' @ 所以,STM32H7 的 SPI 的 NSS 脉冲模式时序刚好与该 ADC 芯片是匹配的。% K$ r, p6 r1 z4 P# Y; i# H L: g 那么我们将客户的接法进行改进,并配置 STM32H7 的 SPI 工作于 NSS 脉冲模式,经过客户反复验证工作正常。 y3 Q7 ~! B# @ T; c- q: T) H3 \" B5 } . N8 I g7 `8 k/ o4 h& N 4 n* A0 ^* G% o! n1 d. k6 n 转载自: STM32 如有侵权请联系删除 T/ @( H" @, ^) } # Y, }+ O7 C9 a) F/ V$ n |
兔哥的杂谈【002】——如何性价比更高地去编译STM32
【Wio Lite AI视觉开发套件】+简单刷个屏
工程师笔记 | STM32H7 RAMECC功能及应用
stm32使用定时器触发dma传输,启动dma没反应的几种情况的解决方法
【Wio Lite AI视觉开发套件】+cube.ai与食物识别
【STM32H7S78-DK】汽车仪表系统
【STM32H7S78-DK】基于 rtthread 适配 lcd 驱动移植 lvgl
【STM32H7S78-DK评测】TouchGFX (QR Code)二维码生成器
【STM32H7S78-DK】rtthread 增加 psram 内存管理
【STM32H7S78-DK】开箱与rtthread工程初体验