在Nucleo-H7上使用SPI2的问题,而SPI1工作正常



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

对于主I,设置SPI1(引脚GND、D11、D12和D13-CN7连接器的PA5、6、7-(,配置如下:

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

对于从设备I也设置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中断
  • 从设备接收的数据被破坏
  • 但是从设备发送给主设备的数据是正确的

我认为MOSI信号在物理或逻辑上配置不好。我尝试了其他GPIO引脚,它们的替代功能可以是SPI2_MOSI,但行为相同。

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

I通过在从端设置SPI2输入GPIO下拉菜单来"修复"(?(该问题。我真的不明白为什么SPI1上没有下拉功能,也不明白为什么Slave上需要下拉功能?

最新更新