我正在使用STM32H7系列微控制器作为SPI主发送设备,它只需要与4个SPI从设备通信,这些设备也都是MCU STM32H7接收。主站和从站都配置为软件从站管理。 令人困惑的是,当主站想要在不使用硬件 NSS 引脚的情况下与它通信或向它传输数据时,从站将如何识别? 在这种情况下,从设备将如何开始接收并在所有数据传输时停止接收?
如果使用软件从属选择(NSS(,则必须通过软件选择和取消选择SPI接口。
通常,您会在用作 NSS/CS 的引脚上设置一个外部中断,并在触发中断时选择/取消选择 SPI 接口。
在STM32F1芯片上,通过设置/清除SPI_CR1
寄存器中的SSI
位来选择/取消选择SPI接口。我认为它在STM32H7芯片上非常相似。
更新
我刚刚检查了STM32H7,它完全一样。
这很简单。每个从站都有一个称为CS的引脚。只需使用 GPIO 设置此引脚即可选择此设备。然后,您可以传输或接收数据。请记住,主站必须提供时钟,即使它只想接收数据。
下面显示的代码似乎可以解决问题。
__HAL_SPI_ENABLE(&hspi1);
__HAL_SPI_DISABLE(&hspi1);