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?
Réponses:
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.
la source
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.
la source
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.
la source