我知道基本的SPI协议及其主从操作。我想知道有可能在多个奴隶上广播数据吗?如果有可能那么它是如何工作的。
我听说在写入任何SPI从设备后,即使您不打算使用读取数据,也必须从从设备读取。如果广播可以广播,这怎么可能?
答案 0 :(得分:2)
不,这是不可能的。由于SPI是4线接口。 SS线用于从机选择。一个SPI主机可以有多个从机,但它不能一次选择所有从机,因为它使用一些位或SS信号来选择从机(并且不能一次选择多个从机) 。
SPI工作在全双工模式(大多数时间和情况),并使用移位寄存器实现。因此,当在MOSI上写入数据时(假设:主机正在写入),我们也在MISO线中获取数据(在主移位寄存器中插入数据确实会移位从移位寄存器中的数据)。因此,我们在TX和RX线上获得数据。
答案 1 :(得分:1)
如果您有多个SPI控制器,则可以。我有四个SPI控制器连接到四个相同类型的不同芯片。我在软件中控制SS,因为SPI控制器无法以有用的方式控制它。我的驱动程序有读取,写入和广播方法。读取和写入操作在一个SPI控制器实例上,而广播方法(当然只写)采用SPI控制器实例的数组。
然后,广播方法获取大小为字节的公共地址缓冲区和大小为字节的公共数据缓冲区,并按顺序将它们发送到所有四个SPI控制器(但在时间上接近),以从调用者的角度实现广播。它不是基于硬件的广播,但它允许更高级别的软件认为它正在同时向所有四个芯片广播通用命令和设置数据。
整体上比通过顺序向所有四个芯片发送相同的东西更节省时间,因为通过让低层SPI控制器完成工作可以提高效率。
答案 2 :(得分:0)
如果你使用单工SPI,一个主多从,你可以创建一个1对多的接口。假设是 DMA,您确定事务的大小和数据缓冲区。物理接口是 2 线加地 - CLK 和 MOSI。 NSS 是选择的软件而不是硬件。从理论上讲,您从主机和从机的 DMA 获取数据。这是一个单向通道。我一直在玩这些类型的配置,这个配置似乎有效。硬件为STM32f0/g0架构。我也在研究环形拓扑……这在 90 年代很有趣,现在可能仍然很有趣……
答案 3 :(得分:-4)
您无法同时向多个从属设备广播数据。