【问题标题】:Problem using SPI2 on a Nucleo-H7 whereas SPI1 works fine在 Nucleo-H7 上使用 SPI2 时出现问题,而 SPI1 工作正常
【发布时间】:2020-08-03 21:58:36
【问题描述】:

我的设置如下:将 Nucleo 板(嵌入 STM32H743 的 Nucleo 144)配置为 SPI Master。另一个相同的板被配置为 SPI Slave。

对于 Master,我使用以下配置设置了 SPI1(引脚 GND、D11、D12 和 D13 - CN7 连接器的 PA5、6、7-):

  • GPIO:非常高速,备用功能 5
  • SPI:预分频器 DIV8,启用中断,单工通信,无从设备选择
  • 所有时钟都设置为最大值(CPU 400MHz 等...)

对于从设备,我也设置了 SPI1(相同的引脚),工作正常。

然后我尝试为从板切换到 SPI2 外设,但无法使其工作(没有更改主板)。 我为 SCK 选择了引脚 D18 (PB13),为 MISO 选择了 A7 (PC2),为 MOSI 选择了 A2 (PC3)。

我检查了以下几点:

  • SPI2 外设时钟已启用
  • GPIOB 和 C 时钟已启用,引脚 PB13、PC2 和 PC3 的设置方式与之前设置中的 PA5、6、7 相同。
  • 对于 GND,我在板上尝试了不同的 GND 引脚,不知道是否有所不同。
  • 用于 SPI2 的 GPIO 在我的代码中的其他地方没有使用。我从 STM32H743ZI 的数据表中得到了它们

我所看到的:

  • 我的从机仍在正确接收 SCK 信号:我得到了正确数量的 RXP 中断。
  • 从站接收的数据已损坏。
  • 但是slave发送给master的数据是正确的。

我认为 MOSI 信号配置不当,无论是物理上还是逻辑上。我尝试了其他 GPIO 引脚,其替代功能可以是 SPI2_MOSI 但行为相同。

SPI2 和/或此 GPIO 设置是否有特殊性?板上的 GND 位置重要吗?

【问题讨论】:

    标签: stm32 gpio spi nucleo


    【解决方案1】:

    我通过将下拉设置到从设备端的 SPI2 输入 GPIO 来“修复”(?)问题。我真的不明白为什么它在没有下拉 SPI1 的情况下工作,为什么在 Slave 上需要这个下拉?

    【讨论】:

    • 检查您的 SPI 实际运行的模式。时钟极性和相位可以解释问题。
    猜你喜欢
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 2019-12-11
    • 1970-01-01
    • 2021-09-20
    相关资源
    最近更新 更多