如果仅使用一个SPI设备,可以将SS引脚拉低吗?


8

我在线阅读了一篇文章,要开始与SPI支持的设备进行SPI事务,必须将SS(从机选择,也称为芯片选择)线设置为低,以便整个事务通过,然后在端到端事务中将其设置为高。如果我制作的电路仅包含一个SPI器件,我是否需要降低SS线发送命令,然后每次都升高ss线,还是可以将ss线拉低并发送无限制命令?我使用的设备是ISD1700声音芯片


3
通常是的,SS引脚让从设备知道事务何时开始和结束。没有它,就无法确保它保持同步。它可能会起作用,但是如果不同步,它将无法恢复。
凯文·怀特

4
@kevinWhite实际上,许多SPI设备需要SS转换才能启动内部状态机。您特定设备的数据表应该会为您提供答案,但是如果您已经有了答案,为什么不尝试一下呢?
akohlsmith '16

1
@akohlsmith-我同意,我是说您确实需要SS,而不是没有它就可以逃脱。即使那些不需要它执行内部操作的设备也可能与主机失去同步。唯一建议不要使用SS的制造商是ADI公司的某些设备,在这些设备中,他们将多个功能分配给了引脚,因此可能无法使用SS。我看不到这种方法如何可靠,而且我听说有人抱怨设备需要重置才能恢复同步。
凯文·怀特

我同意@akohlsmith。如果您想回答这个问题,我将投赞成票。这是我的观点:我通过SPI定期与设备通信。但是,有一个中断驱动功能,该功能也需要将SPI连接到同一设备。使用SS引脚,我应该能够在不完成当前SPI事务的情况下中断它。在处理中断时,使我可以更快地访问SPI设备。
st2000

Answers:


14

[@Kevin和@akohlsmith应该发表他们的评论作为答案。
这是为了扩大他们的意见。]

SPI 1并未规定SS的确切行为(从选择线2)。此行为取决于每个单独设备的实现。我看到可以在SS下永久运行的设备。我还看到了需要在SS上具有下降沿和上升沿的设备。

尽管没有明确指出必须切换SS ,
但设计指南(p.31)指出SS开始和结束SPI事务。谨慎地假设必须切换SS才能通过SPI事务。

1 SPI更像是自定义,而不是标准。
2 CS(片选)是从机选择的另一个名称。


6
这是一个很好的答案。许多/大多数SPI目标设备完全依赖SPI_CS线路来初始化器件内部的位捕获状态机,以在启动器和目标设备之间进行同步。通过识别MOSI信号线上的即时同步或操作码模式,可以简单地重新同步一些设备。但这只是少数,建议使用SPI设备设计系统的任何人都应为每个目标设备提供SPI_CS,即使这意味着在启动器设备上使用额外的电路和/或GPIO来提供该功能。
迈克尔·卡拉斯,2016年

无需添加其他答案,您的捕捉到了@kevinwhite和我自己的谈话。:-)
akohlsmith

5

它完全取决于从设备。

如果从设备的协议包括某种帧,无论是使用固定长度的数据包,开始/停止字节还是指定数据包长度的标头,则从设备都可以在没有芯片选择的情况下运行。我目前正在开发的板上有一个SPI闪存芯片,无论是否选择芯片,它似乎都非常满意。它可以永久性地连接到0V(启用),没有问题。

这实际上给我们带来了一些问题,因为承包商已经建立了包括SPI在内的一些底层I / O,而我们(以及他们!)没有意识到他们没有让芯片选择正常工作。直到我不得不扩展他们的SPI工作以在同一总线上添加另一个SPI设备时,我发现我们实际上没有芯片选择!

相反,许多从设备确实需要芯片选择来对数据进行帧构成,并且比预期的数据包发送更多的位/字节而不在最后释放芯片选择将被视为无效传输并被拒绝。DAC通常会将新值加载到片选上升沿的输出上。类似地,ADC通常会使用SPI传输来开始(有时需要时间)转换,因此它们需要芯片选择下降沿作为触发。

您的数据表中实际上没有透露如何通过SPI驱动特定芯片的任何信息,而且我也没有足够的动力去搜索它。留给读者练习...;)


我只是将SS压低,并祈祷它能正常工作,因为从互联网上获得的设备数据表仅声明(根据数据表中的引脚定义表)SS用于启用设备。它还指出,如果SS为高电平,则其他SPI线将处于高阻抗状态。手指交叉。

@Mike我今天早上发现了一些动机,所以我用Google搜索了“ ISD1700”。前两个链接是两个PDF文件。第一个是您链接到的数据表;第二个是设计指南,其中准确说明了如何驱动芯片。设计指南说(第31页的10.2节):“ SPI事务在SS〜引脚的下降沿启动。” 所以不,数据表表明您无法摆脱您的计划。而且我不想在这里太傻了,但是如果您拥有JFGI并阅读了出现的前两个链接,那么您可能已经回答了自己的问题。
格雷厄姆

3

不了解有关SPI从设备的任何信息,就不能仅将SS拉低。

许多设备使用SS的前沿将其内部逻辑重置为新事务的开始。例如,存储器可能会将前两个字节解释为地址,然后将随后的字节解释为数据。取消激活SS之前,某些内存不会执行物理写入。

对于某些使用正确协议的设备,您也许可以摆脱它。但是,它不适用于大多数设备。


在这一点上晚了几年。我在这里是因为我也在寻找答案。您添加了Olin的很好的信息,其他人也提供了很好的信息。我认为问题主要在于对“片选”或“从机选择”一词的解释-如果强迫某人承担某事,则该假设仅意味着激活该设备并关闭所有其他可能从属设备的设备干扰从机和主机之间的通信。公平合理的“假设”。很高兴在此线程中清除了此主题。
肯尼,

该主题的下一个问题可能是-----如果不应该永久性地“启用”芯片选择/芯片启用引脚,那么究竟应该何时启用和禁用spi从设备?例如-在发送给从设备的每个命令完成后,我们是否禁用从设备?
肯尼,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.