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?
Respostas:
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.
fonte
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.
fonte
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.
fonte