STM32 SPI寄存器中的CPOL设置导致波形中出现奇怪的脉冲

问题描述 投票:0回答:1

我使用的是STM32H75。我们注意到,在传输每个字大小后,在时钟线上(参考波形)会生成额外的脉冲/尖峰。我特别说 CPOL 是因为当 CPOL 为 0 且不是由 CPHA 触发时,这个问题不会持续存在。

造成这种行为的可能原因是什么? CPOL 1 and CPHA 1 CPOL 0 and CPHA 1

这里我正在探测CLK线。如果您看到,当 CPOL 为 1 时,我在 8 个时钟脉冲之后得到了额外的尖峰

预计不会有额外的尖峰

传输代码:

template<typename T>
bool HardSPI::spiWrite(T data)
{
  _spi->CR1 |= SPI_CR1_CSTART;
  *((T *)&_spi->TXDR) = data;
  while (!_isTXFIFOEmpty())
    ;
  return true;
}

上面的驱动函数是写SPI TX寄存器。连续传输多个字时,SPI 总线上的避免冲突添加了阻塞延迟

stm32 spi nucleo stm32h7
1个回答
0
投票

所以峰值背后的原因是因为 GPIO 在 GPIO 寄存器上配置为高速(请参阅 STM TRM 了解更多信息)。删除那行代码,似乎解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.