|
01前言( E3 J' U4 E7 n, k 某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC 芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。 ) n# p6 w; y% X9 ]) n( g 02现场调研与问题分析 根据客户提供的信号采集板上使用的 ADC 数据手册及现场反馈:2 g( N2 z' C) v4 {$ Q3 Q/ M8 `4 m 1.该 ADC 转换芯片 DataSheet 提供的通信接口参考设计如下:
% X5 u) D. M4 M# Y; Q! b6 h; L 2. 该 ADC 采样芯片工作于 Master 模式,DSP/FPGA 工作于 Slave 模式,其通信时序如下 图所示。 在 DRDY 信号的下降沿通过 DOUT0~DOUT7 引脚将数据输出到 DSP/FPGA。客户使用 STM32H7 的 SPI Slave 模式与该 IC 进行通信,采用 Software NSS 工作模式来接收 Master 的数据。
在连续采样模式下(Master 不间断采样),STM32H7 接收数据正常,其通信时序如下图所示。4 a% z( [5 y, L6 \3 b7 ^ ( I" V; K' M9 E \7 \7 p2 Z
' {$ O. r0 D W4 W 但是,当 Master 停止采样时,DCLK 仍然会一直工作发出工作时钟。此时,STM32H7 的 SPI 做 Slave 在 Stop 期间仍然会收到数据(无效干扰数据)。此数据会造成 Slave 端接收数据失序,如下图所示。. B& T3 ~3 o+ d3 X * J+ M, ^6 K$ p
03问题分析与解决) C Z( i3 Y1 `) I- m 显然使用标准 SPI 与该芯片进行通信是行不通的,再次聚焦到客户 DRDY 信号并未使用和充分利用,能否利用 DRDY 信号来滤除 Stop 期间的干扰信号呢? . w! V; H& \! j K- L& N1 v 笔者也再次查阅 RM 后发现 STM32H7 的 SPI NSS 脉冲模式(RM 中称为 TI 模式)。在本文中统称为 NSS 脉冲模式,STM32H7 的 NSS 脉冲模式其核心要点如下:1 I) ^' }$ q6 F8 F: e6 V7 Q$ J 1. 通过设置 SPI_CFG2 寄存器的 SP[2:0]位来使能 SPI 工作在 NSS 脉冲模式,当 SPI 工作于 脉冲模式时,SCK 和 SS 引脚的信号极性、相位、字节序是固定的,不需要配置 CPOL, CPHA, LSBFRST, SSOM, SSOE, SSIOP 和 SSM 相关寄存器位。" a$ u" }/ O m: T4 J/ M# y 2. SPI NSS 脉冲模式通信时序如下图,与标准 SPI 通信相比差异如下:* e; _' I( k+ I( J3 R/ v 4 G, ~4 x2 `& D# J 启动数据传输前,NSS 会被拉高并维持一个时钟周期(NSS 脉冲)。' o% j9 ], N2 i5 x/ w9 f8 L 数据帧的传输过程起止于 2 个 NSS 脉冲之间(前一帧 LSB 开始拉高 SS,前一帧 LSB 结束后 拉低 NSS 开始下一帧传输)。 6 _! f- r; Y! B6 L- p 在时钟 SCK 的上升沿开始发送数据,在时钟 SCK 的下降沿进行采样和接收。5 _* C. G! I* s5 D& y [% G - Y* u1 I8 h. v5 Y0 _4 `! A 所以,STM32H7 的 SPI 的 NSS 脉冲模式时序刚好与该 ADC 芯片是匹配的。 ; T7 @& m$ q7 F7 d0 W$ k
/ D) w) }6 q; n; B# ^4 j 那么我们将客户的接法进行改进,并配置 STM32H7 的 SPI 工作于 NSS 脉冲模式,经过客户反复验证工作正常。 ) F/ `, L. d- \8 M* z* N& l* e" @
转载自: STM32& r4 j$ o' ] _ 如有侵权请联系删除 0 L, C% m( `. Q& j; N& j |
【STM32H5 评测】1、开发板资源和程序开发
NUCLEO-H5E5ZJ 以太网(Ethernet)移植记录
【STM32H5 评测】1、移植记录(LED / Shell)
H5E5开发板评测-1
H5E5评测-4
H5E5评测-3
H5E5评测-2
【 逢7发帖赢大礼】1、利用CubeMX生成正点原子H7R7开发板的STM32CubeIDE工程
【STM32H735G-DK测评】ADC3+TIMER1+DMA 采样模拟信号
【STM32H735DK测评】Ethernet+lwip DHCP获取IP地址
微信公众号
手机版