Aggiungi più di 2 slave SPI


12

Come quello che vedo nello schema, ci sono 2 canali per gli slave: CS0 e CS1. Significa che posso collegare solo 2 chip, come MCP3008 o qualcosa del genere? Oppure posso collegare più schiavi a questi 2 schiavi collegati.

Lo schema di Raspberry ha supporto o qualcosa in comune con questo schema di connessione degli schiavi SPI tratto da Wikipedia? È possibile farlo in questo modo?

Schiavi SPI


"È possibile farlo in questo modo?" -> Mi sembra che sia esattamente così, tranne per il fatto che Pi ha CE0 e CE1 invece di SS1, SS2, SS3. Le linee bus SCLK, MOSI e MISO sono condivise tra tutti i dispositivi in ​​entrambi i casi.
riccioli d'oro

Risposte:


12

Molti modi.

È possibile selezionare il bit bang selezionato dallo slave, ovvero collegare tutti i dispositivi con MISO / MOSI / SCLK condiviso e mettere a terra ma CS separato. Basta impostare CS in basso per il dispositivo desiderato prima di chiamare il driver SPI. Il driver SPI proverà a impostare un CS ma non saprà che non è collegato.

I Pis con l'intestazione di espansione a 40 pin hanno un altro dispositivo SPI con 3 selezioni di chip. La mia libreria pigpio supporta quel dispositivo.

Puoi software bit bang l'intero protocollo.

È possibile aggiungere altro hardware per passare la linea CS a qualsiasi dispositivo desiderato.

Ecc. Ecc.

MODIFICATO PER AGGIUNGERE

Il driver "corretto" di Raspberry Pi Linux SPI è attualmente in fase di revisione per consentire l'uso di gpios arbitrari come CS.

MODIFICATO PER AGGIUNGERE 2

Si dice che l'attuale driver SPI Linux (spi_bcm2853) supporti GPIO arbitrario mentre il chip seleziona. Vedi / boot / overlays / README.


1
"consentire arbitrari gpios" una buona idea a sé stante e cosa ci si potrebbe aspettare da un sistema incorporato. Grazie per l'input.
Ghanima

Joan, ti preghiamo di spiegare come utilizzare "un altro dispositivo SPI con 3 selezioni di chip" con la libreria "pigpio" o di un link al codice di esempio. Questo aiuterà a rispondere alla domanda. Grazie
Alex

Vedi abyz.co.uk/rpi/pigpio/cif.html#spiOpen . GPIO 16-21 sono collegati all'SPI ausiliario. Vedi abyz.co.uk/rpi/pigpio/index.html#Type_3 . In alternativa, si dice che l'attuale driver SPI Linux (spi_bcm2853) supporti GPIO arbitrario mentre il chip seleziona. Vedi / boot / overlays / README.
joan

"Il Pis con l'intestazione di espansione a 40 pin ha un altro dispositivo SPI con 3 selezioni di chip" ci sono solo 2 cs sull'intestazione a 40 pin

1
@meh Esistono 5 selezioni di chip sull'intestazione di espansione a 40 pin. Due per la SPI principale e 3 per la SPI ausiliaria. I segnali SPI ausiliari sono mostrati in minuscolo su abyz.co.uk/rpi/pigpio/index.html#Type_3
joan

3

Hai ragione sul fatto che RaspberryPi fornisce solo due selezioni di chip sul suo bus SPI (vedi qui ). E suppongo che i driver SPI e le soluzioni software si basino su questo fatto (anche se la risposta di @ joan suggerisce che diverse librerie lo gestiscono in modo diverso e il driver ufficiale consentirà di utilizzare pin GPIO arbitrari come chip in futuro).

Devi comunque tenere presente che una selezione di chip non è altro che un'uscita digitale dedicata del Pi. Pertanto, è possibile avere sempre una maggiore quantità di selezioni di chip se si utilizzano i pin GPIO. In tal caso, tuttavia, il software sarà responsabile dell'impostazione dei pin appropriati per indirizzare lo slave SPI corretto.

Poiché l'idea di selezionare i chip è quella di selezionare reciprocamente esclusivamente un solo slave, è possibile inoltre utilizzare alcuni semplici circuiti digitali per ridurre la quantità di pin GPIO "sprecati" (se sono necessari anche per altri scopi). Qualcosa come il 74HC / HCT138 un decodificatore / demultiplexer da 3 a 8 linee potrebbe essere usato per indirizzare 8 slave tramite 8 selezioni di chip con solo 3 pin GPIO.

È interessante notare che le linee di autobus SCLK e MOSI sono condivise tra tutti gli schiavi. Pertanto, quando si collegano più slave al Pi, assicurarsi che il fan-out del Pi non venga superato dal carico (resistenza e capacità dei pin di ingresso degli slave), sebbene oggi questo sia un problema minore con la bassa capacità e alta resistenza degli ingressi digitali.


1

In realtà c'è una risposta molto valida per questo da parte di un ingegnere RPi, PhilE, al forum sui lamponi, vedi 28 settembre 2015 . Fondamentalmente, fornisce un esempio di overlay Device Tree che utilizza la possibilità con spi-bcm2835 di avere GPIO gratuiti come chip select.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.