我在线阅读了一篇文章,要开始与SPI支持的设备进行SPI事务,必须将SS(从机选择,也称为芯片选择)线设置为低,以便整个事务通过,然后在端到端事务中将其设置为高。如果我制作的电路仅包含一个SPI器件,我是否需要降低SS线发送命令,然后每次都升高ss线,还是可以将ss线拉低并发送无限制命令?我使用的设备是ISD1700声音芯片。
我在线阅读了一篇文章,要开始与SPI支持的设备进行SPI事务,必须将SS(从机选择,也称为芯片选择)线设置为低,以便整个事务通过,然后在端到端事务中将其设置为高。如果我制作的电路仅包含一个SPI器件,我是否需要降低SS线发送命令,然后每次都升高ss线,还是可以将ss线拉低并发送无限制命令?我使用的设备是ISD1700声音芯片。
Answers:
[@Kevin和@akohlsmith应该发表他们的评论作为答案。
这是为了扩大他们的意见。]
SPI 1并未规定SS的确切行为(从选择线2)。此行为取决于每个单独设备的实现。我看到可以在SS下永久运行的设备。我还看到了需要在SS上具有下降沿和上升沿的设备。
尽管没有明确指出必须切换SS ,
但设计指南(p.31)指出SS开始和结束SPI事务。谨慎地假设必须切换SS才能通过SPI事务。
1 SPI更像是自定义,而不是标准。
2 CS(片选)是从机选择的另一个名称。
它完全取决于从设备。
如果从设备的协议包括某种帧,无论是使用固定长度的数据包,开始/停止字节还是指定数据包长度的标头,则从设备都可以在没有芯片选择的情况下运行。我目前正在开发的板上有一个SPI闪存芯片,无论是否选择芯片,它似乎都非常满意。它可以永久性地连接到0V(启用),没有问题。
这实际上给我们带来了一些问题,因为承包商已经建立了包括SPI在内的一些底层I / O,而我们(以及他们!)没有意识到他们没有让芯片选择正常工作。直到我不得不扩展他们的SPI工作以在同一总线上添加另一个SPI设备时,我发现我们实际上没有芯片选择!
相反,许多从设备确实需要芯片选择来对数据进行帧构成,并且比预期的数据包发送更多的位/字节而不在最后释放芯片选择将被视为无效传输并被拒绝。DAC通常会将新值加载到片选上升沿的输出上。类似地,ADC通常会使用SPI传输来开始(有时需要时间)转换,因此它们需要芯片选择下降沿作为触发。
您的数据表中实际上没有透露如何通过SPI驱动特定芯片的任何信息,而且我也没有足够的动力去搜索它。留给读者练习...;)
不了解有关SPI从设备的任何信息,就不能仅将SS拉低。
许多设备使用SS的前沿将其内部逻辑重置为新事务的开始。例如,存储器可能会将前两个字节解释为地址,然后将随后的字节解释为数据。取消激活SS之前,某些内存不会执行物理写入。
对于某些使用正确协议的设备,您也许可以摆脱它。但是,它不适用于大多数设备。