添加超过2个SPI从设备


12

正如我在该方案中看到的,从站有2个通道-CS0和CS1。这是否意味着我只能连接2个芯片,例如MCP3008或其他?或者我可以将更多的奴隶附加到这两个附加的奴隶上。

Raspberry方案是否支持或与Wikipedia的SPI从属连接方案有任何共同点?是否可以使它像这样?

SPI从机


“有可能做到这样吗?” ->在我看来,就是这样,除了Pi具有CE0和CE1而不是SS1,SS2,SS3。在这两种情况下,SCLK,MOSI和MISO总线在所有设备之间共享。
goldilocks

Answers:


12

很多方法。

您可以对从机选择进行一些调整,例如,将所有具有共享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。


1
“允许任意gpios”本身就是一个好主意,并且对嵌入式系统可能会有什么期望。感谢您的输入。
加尼玛

Joan,请解释如何通过“ pigpio”库使用“另一款具有3个芯片选择的SPI设备”,或链接到代码示例。这将有助于回答问题。谢谢
亚历克斯

参见abyz.co.uk/rpi/pigpio/cif.html#spiOpen。GPIO 16-21连接到辅助SPI。参见abyz.co.uk/rpi/pigpio/index.html#Type_3。另外,据说当前最新的Linux SPI驱动程序(spi_bcm2853)在芯片选择时支持任意GPIO。请参阅/ boot / overlays / README。
2016年

“具有40针扩展头的Pis具有另一个具有3个芯片选择的SPI设备” 40针头上只有2 cs

1
@meh 40引脚扩展接头上有5个芯片选择。两个用于主SPI,三个用于辅助SPI。辅助SPI信号示于下壳体在abyz.co.uk/rpi/pigpio/index.html#Type_3

3

没错,RaspberryPi在其SPI总线上仅提供两个芯片选择(请参见此处)。而且我假设SPI驱动程序和软件解决方案都依赖于这一事实(尽管@joan的回答表明,不同的库对它的处理方式不同,并且官方驱动程序将允许将来将任意GPIO引脚用作芯片选择)。

但是,您必须记住,片选仅是Pi的专用数字输出。因此,如果使用GPIO引脚,则总是可以选择更多的芯片。但是,在这种情况下,您的软件将负责设置适当的引脚以寻址正确的SPI从设备。

由于芯片选择的整体思想是互相排斥地仅选择一个从机,因此您还可以使用一些简单的数字电路来减少“浪费的” GPIO引脚的数量(如果您还需要其他目的的话)。诸如74HC / HCT138之类的3至8线解码器/多路解复用器可用于仅通过3个GPIO引脚通过8个芯片选择来寻址8个从机。

值得注意的是,总线SCLK和MOSI在所有从机之间共享。因此,在将多个从站插入Pi时,请确保负载(从站的输入引脚的电阻和电容)不超过Pi的扇出-尽管今天这对于低电容和数字输入的高电阻。


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.