正如我在该方案中看到的,从站有2个通道-CS0和CS1。这是否意味着我只能连接2个芯片,例如MCP3008或其他?或者我可以将更多的奴隶附加到这两个附加的奴隶上。
Raspberry方案是否支持或与Wikipedia的SPI从属连接方案有任何共同点?是否可以使它像这样?
正如我在该方案中看到的,从站有2个通道-CS0和CS1。这是否意味着我只能连接2个芯片,例如MCP3008或其他?或者我可以将更多的奴隶附加到这两个附加的奴隶上。
Raspberry方案是否支持或与Wikipedia的SPI从属连接方案有任何共同点?是否可以使它像这样?
Answers:
很多方法。
您可以对从机选择进行一些调整,例如,将所有具有共享MISO / MOSI / SCLK和接地但独立CS的设备连接起来。在调用SPI驱动程序之前,只需将所需器件的CS设置为低电平即可。SPI驱动程序将尝试设置CS,但不知道未连接。
具有40针扩展头的Pis具有另一个带有3个芯片选择的SPI设备。我的Pigpio库支持该设备。
您可以用软件来冲击整个协议。
您可以添加其他硬件以将CS线路切换到所需的任何设备。
等等
编辑添加
目前正在审查“适当的” Raspberry Pi Linux SPI驱动程序,以允许将任意gpios用作CS。
编辑添加2
据说当前的Linux SPI驱动程序(spi_bcm2853)在芯片选择时支持任意GPIO。请参阅/ boot / overlays / README。
没错,RaspberryPi在其SPI总线上仅提供两个芯片选择(请参见此处)。而且我假设SPI驱动程序和软件解决方案都依赖于这一事实(尽管@joan的回答表明,不同的库对它的处理方式不同,并且官方驱动程序将允许将来将任意GPIO引脚用作芯片选择)。
但是,您必须记住,片选仅是Pi的专用数字输出。因此,如果使用GPIO引脚,则总是可以选择更多的芯片。但是,在这种情况下,您的软件将负责设置适当的引脚以寻址正确的SPI从设备。
由于芯片选择的整体思想是互相排斥地仅选择一个从机,因此您还可以使用一些简单的数字电路来减少“浪费的” GPIO引脚的数量(如果您还需要其他目的的话)。诸如74HC / HCT138之类的3至8线解码器/多路解复用器可用于仅通过3个GPIO引脚通过8个芯片选择来寻址8个从机。
值得注意的是,总线SCLK和MOSI在所有从机之间共享。因此,在将多个从站插入Pi时,请确保负载(从站的输入引脚的电阻和电容)不超过Pi的扇出-尽管今天这对于低电容和数字输入的高电阻。
Rpi工程师PhilE在覆盆子论坛上对此确实有一个很好的答案,请参阅2015年9月28日。基本上,他给出了一个设备树覆盖示例,该覆盖使用spi-bcm2835的可能性将任何可用的GPIO用作芯片选择。