多从机到单主机 SPI 软件从机管理的工作原理
How Multiple slave to single master SPI software slave management works
我正在使用 STM32H7 系列微控制器作为 SPI 主发送设备,它只需要与 4 个 SPI 从设备接收通信,它们也都是 STM32H7 MCU。主站和从站都配置为软件从站管理。
令人困惑的是,slave 将如何识别 master 何时想与其交谈或在不使用硬件 NSS pin 的情况下向其传输数据?
从设备如何在这种情况下开始接收并在所有数据传输后停止接收?
很简单。每个从机都有一个称为 CS 的引脚。您需要通过使用 GPIO 设置此引脚来 select 此设备。然后就可以传输或接收数据了。请记住,master 必须提供时钟,即使它只想接收数据。
如果你使用软件奴隶select(NSS),你必须select和deselect 软件的SPI接口。
通常,当触发中断时,您会在用作 NSS/CS 和 select/deselect SPI 接口的引脚上设置外部中断。
在STM32F1芯片上,SPI接口是selected/deselected通过setting/clearing SPI_CR1
寄存器中的SSI
位。我认为它在 STM32H7 芯片上非常相似。
更新
我刚刚检查了STM32H7,完全一样。
我正在使用 STM32H7 系列微控制器作为 SPI 主发送设备,它只需要与 4 个 SPI 从设备接收通信,它们也都是 STM32H7 MCU。主站和从站都配置为软件从站管理。 令人困惑的是,slave 将如何识别 master 何时想与其交谈或在不使用硬件 NSS pin 的情况下向其传输数据? 从设备如何在这种情况下开始接收并在所有数据传输后停止接收?
很简单。每个从机都有一个称为 CS 的引脚。您需要通过使用 GPIO 设置此引脚来 select 此设备。然后就可以传输或接收数据了。请记住,master 必须提供时钟,即使它只想接收数据。
如果你使用软件奴隶select(NSS),你必须select和deselect 软件的SPI接口。
通常,当触发中断时,您会在用作 NSS/CS 和 select/deselect SPI 接口的引脚上设置外部中断。
在STM32F1芯片上,SPI接口是selected/deselected通过setting/clearing SPI_CR1
寄存器中的SSI
位。我认为它在 STM32H7 芯片上非常相似。
更新
我刚刚检查了STM32H7,完全一样。