Ajouter plus de 2 esclaves SPI


12

Comme ce que je vois sur le schéma, il y a 2 canaux pour les esclaves - CS0 et CS1. Cela signifie-t-il que je ne peux connecter que 2 puces, comme le MCP3008 ou quelque chose? Ou puis-je attacher plus d'esclaves à ces 2 esclaves attachés.

Le schéma Raspberry a-t-il un support ou quelque chose en commun avec ce schéma de connexion des esclaves SPI tiré de Wikipedia? Est-il possible de le faire comme ça?

Esclaves SPI


"Est-il possible de le faire comme ça?" -> Il me semble que c'est exactement comme ça, sauf que le Pi a CE0 et CE1 au lieu de SS1, SS2, SS3. Les lignes de bus SCLK, MOSI et MISO sont partagées entre tous les appareils dans les deux cas.
goldilocks

Réponses:


12

Plusieurs façons.

Vous pouvez trier en quelque sorte les bits sélectionnés par l'esclave, c'est-à-dire connecter tous les appareils avec un MISO / MOSI / SCLK partagé et une masse mais un CS séparé. Réglez simplement CS bas pour le périphérique souhaité avant d'appeler le pilote SPI. Le pilote SPI essaiera de définir un CS mais ne saura pas qu'il n'est pas connecté.

Les Pis avec l'en-tête d'extension à 40 broches ont un autre appareil SPI avec 3 sélections de puces. Ma bibliothèque pigpio prend en charge cet appareil.

Vous pouvez bit logiciel bang l'ensemble du protocole.

Vous pouvez ajouter du matériel supplémentaire pour basculer la ligne CS sur n'importe quel appareil de votre choix.

Etc.

MODIFIÉ POUR AJOUTER

Le "bon" pilote Raspberry Pi Linux SPI est actuellement en cours de révision pour permettre à des gpios arbitraires d'être utilisés comme CS.

MODIFIÉ POUR AJOUTER 2

Le pilote Linux SPI actuel (spi_bcm2853) est censé prendre en charge GPIO arbitraire lors de la sélection des puces. Voir / boot / superpositions / README.


1
"autoriser les gpios arbitraires" une bonne idée en soi et ce que l'on peut attendre d'un système embarqué. Merci pour la contribution.
Ghanima

Joan, veuillez expliquer comment utiliser "un autre appareil SPI avec 3 sélections de puces" avec la bibliothèque "pigpio", ou un lien vers l'exemple de code. Cela aidera à répondre à la question. Merci
Alex

Voir abyz.co.uk/rpi/pigpio/cif.html#spiOpen . Les GPIO 16-21 sont connectés au SPI auxiliaire. Voir abyz.co.uk/rpi/pigpio/index.html#Type_3 . Alternativement, le pilote Linux SPI (spi_bcm2853), actuellement en cours, prend en charge GPIO arbitraire lors de la sélection des puces. Voir / boot / superpositions / README.
joan

"Les Pis avec l'en-tête d'extension à 40 broches ont un autre appareil SPI avec 3 sélections de puces" il n'y a que 2 cs sur l'en-tête à 40 broches

1
@meh Il y a 5 sélections de puces sur l'en-tête d'extension à 40 broches. Deux pour le SPI principal et 3 pour le SPI auxiliaire. Les signaux SPI auxiliaires sont affichés en minuscules sur abyz.co.uk/rpi/pigpio/index.html#Type_3
joan

3

Vous avez raison de dire que le RaspberryPi ne propose que deux sélections de puces sur son bus SPI (voir ici ). Et je suppose que les pilotes SPI et les solutions logicielles reposent sur ce fait (bien que la réponse de @ joan suggère que différentes bibliothèques le gèrent différemment et que le pilote officiel permettra à des broches GPIO arbitraires d'être utilisées comme sélection de puce à l'avenir).

Vous devez cependant garder à l'esprit qu'une sélection de puce n'est rien de plus qu'une sortie numérique dédiée du Pi. Par conséquent, vous pouvez toujours avoir un plus grand nombre de sélections de puces si vous utilisez les broches GPIO. Dans ce cas, cependant, votre logiciel sera responsable de définir les broches appropriées pour adresser le bon esclave SPI.

Étant donné que l'idée des sélections de puces est de sélectionner mutuellement exclusivement un seul esclave, vous pouvez en outre utiliser des circuits numériques simples pour réduire la quantité de broches GPIO «gaspillées» (si vous en avez également besoin à d'autres fins). Quelque chose comme le 74HC / HCT138, un décodeur / démultiplexeur de 3 à 8 lignes pourrait être utilisé pour adresser 8 esclaves via 8 sélections de puce avec seulement 3 broches GPIO.

Il est à noter que les lignes de bus SCLK et MOSI sont partagées entre tous les esclaves. Donc, lorsque vous branchez plusieurs esclaves sur le Pi, assurez-vous que le fan-out du Pi n'est pas dépassé par la charge (résistance et capacité des broches d'entrée des esclaves) - bien que ce soit moins un problème aujourd'hui avec la faible capacité et haute résistance des entrées numériques.


1

Il y a en fait une très bonne réponse à cela par un ingénieur RPi, PhilE, lors du forum framboise, voir 28 sept . 2015 . Fondamentalement, il donne un exemple de superposition d'arborescence de périphériques qui utilise la possibilité avec spi-bcm2835 d'avoir n'importe quel GPIO gratuit comme sélection de puce.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.