Adicione mais de 2 escravos SPI

12

Como eu vejo no esquema, existem 2 canais para escravos - CS0 e CS1. Isso significa que eu posso conectar apenas 2 chips, como o MCP3008 ou algo assim? Ou posso anexar mais escravos a esses 2 escravos anexos.

O esquema Raspberry tem suporte ou algo em comum com esse esquema de conexão de escravos SPI retirado da Wikipedia? É possível fazer assim?

Escravos SPI

Sergei Basharov
fonte
"É possível fazer assim?" -> Parece-me que é exatamente assim, exceto que o Pi tem CE0 e CE1 em vez de SS1, SS2, SS3. As linhas de barramento SCLK, MOSI e MISO são compartilhadas entre todos os dispositivos nos dois casos.
goldilocks

Respostas:

12

Várias maneiras.

Você pode classificar o que o escravo selecionou, ou seja, conectar todos os dispositivos com MISO / MOSI / SCLK e terra compartilhados, mas separar o CS. Basta definir CS baixo para o dispositivo desejado antes de ligar para o driver SPI. O driver SPI tentará definir um CS, mas não saberá que não está conectado.

Os Pis com o cabeçalho de expansão de 40 pinos possuem outro dispositivo SPI com 3 seleções de chip. Minha biblioteca pigpio suporta esse dispositivo.

Você pode software bang bang todo o protocolo.

Você pode adicionar hardware adicional para mudar a linha CS para qualquer dispositivo que desejar.

Etc etc.

EDITADO PARA ADICIONAR

O driver "adequado" do Raspberry Pi Linux SPI está passando por uma revisão para permitir que gpios arbitrários sejam usados ​​como CS.

EDITADO PARA ADICIONAR 2

Diz-se que o atual driver SPI do Linux (spi_bcm2853) suporta GPIO arbitrário quando o chip é selecionado. Veja / boot / overlays / README.

joan
fonte
1
"permitir gpios arbitrários" uma boa idéia por si só e o que se poderia esperar de um sistema incorporado. Obrigado pela contribuição.
Ghanima
Joan, explique como usar "outro dispositivo SPI com 3 chips selecionados" na biblioteca "pigpio" ou link para o exemplo de código. Isso ajudará a responder à pergunta. Obrigado
Alex
Consulte abyz.co.uk/rpi/pigpio/cif.html#spiOpen . O GPIO 16-21 está conectado ao SPI auxiliar. Consulte abyz.co.uk/rpi/pigpio/index.html#Type_3 . Como alternativa, o atual driver SPI do Linux (spi_bcm2853) supostamente suporta GPIO arbitrário quando o chip é selecionado. Veja / boot / overlays / README.
Joan
"A expansão Pis com o pino 40 de cabeçalho têm um outro dispositivo com SPI 3 selecciona Chip" há apenas dois cs em 40 pino cabeçalho
1
@meh Existem 5 seleções de chip no cabeçalho de expansão de 40 pinos. Dois para o SPI principal e 3 para o SPI auxiliar. Os sinais SPI auxiliares estão apresentados em letras minúsculas na abyz.co.uk/rpi/pigpio/index.html#Type_3
Joan
3

Você está certo de que o RaspberryPi fornece apenas duas seleções de chips em seu barramento SPI (veja aqui ). E suponho que os drivers SPI e as soluções de software se baseiam nesse fato (embora a resposta de @ joan sugira que diferentes bibliotecas o tratem de maneira diferente e o driver oficial permita que pinos GPIO arbitrários sejam usados ​​como seletores de chips no futuro).

No entanto, você deve ter em mente que uma seleção de chips nada mais é do que uma saída digital dedicada do Pi. Portanto, você sempre pode selecionar uma quantidade maior de chips se usar os pinos GPIO. Nesse caso, porém, seu software será responsável por definir os pinos apropriados para endereçar o escravo SPI correto.

Como toda a idéia da seleção de chips é selecionar mutuamente exclusivamente apenas um único escravo, você também pode usar alguns circuitos digitais simples para diminuir a quantidade de pinos GPIO "desperdiçados" (se você precisar deles para outros fins). Algo como o 74HC / HCT138, um decodificador / desmultiplexador de 3 a 8 linhas pode ser usado para endereçar 8 escravos através de 8 seletores de chips com apenas 3 pinos GPIO.

Vale ressaltar que as linhas de ônibus SCLK e MOSI são compartilhadas entre todos os escravos. Portanto, ao conectar vários escravos ao Pi, certifique-se de que a saída do Pi não seja excedida pela carga (resistência e capacitância dos pinos de entrada dos escravos) - embora isso seja menos problemático hoje com a baixa capacitância e alta resistência de entradas digitais.

Ghanima
fonte
1

Na verdade, há uma resposta muito boa para isso por um engenheiro da RPi, PhilE, no fórum raspberry, consulte 28 de setembro de 2015 . Basicamente, ele fornece um exemplo de sobreposição de Árvore de Dispositivos que usa a possibilidade com spi-bcm2835 de ter GPIOs livres como seleção de chip.

Alexander
fonte