La broche SS peut-elle être attachée bas si un seul périphérique SPI est utilisé?


8

J'ai lu en ligne que pour démarrer une transaction SPI vers un appareil pris en charge SPI, la ligne SS (sélection d'esclave, ou sélection de puce) doit être réglée à faible pour toute la transaction, puis être élevée à la fin de la transaction. Si je crée un circuit contenant un seul périphérique SPI, dois-je abaisser la commande d'envoi de la ligne SS, puis augmenter la ligne SS à chaque fois ou puis-je lier la ligne SS à l'état bas et envoyer des commandes illimitées? L'appareil que j'utilise est une puce audio ISD1700 .


3
En général oui, la broche SS permet au périphérique esclave de savoir quand la transaction commence et se termine. Sans cela, rien ne garantit qu'il reste synchronisé. Cela peut fonctionner, mais s'il se désynchronise, il ne le retrouvera pas.
Kevin White

4
@kevinWhite en fait, de nombreux périphériques SPI ont besoin de cette transition SS pour lancer une machine d'état interne. La fiche technique de votre appareil devrait vous donner la réponse, mais si vous l'avez déjà, pourquoi ne pas l'essayer?
akohlsmith

1
@akohlsmith - Je suis d'accord, je dis que vous avez besoin des SS pas que vous pouvez vous en passer. Même les périphériques qui n'en ont pas besoin pour effectuer des opérations internes peuvent se désynchroniser avec le maître. Le seul fabricant qui a vu qui recommande de ne pas utiliser le SS est Analog Devices pour certains de leurs appareils où ils ont plusieurs fonctions assignées aux broches de sorte que le SS peut ne pas être disponible. Je ne vois pas comment cela peut être fiable et j'ai entendu des plaintes où l'appareil nécessite une réinitialisation pour se synchroniser.
Kevin White

Je suis d'accord avec @akohlsmith. Et si vous voulez répondre à la question, je voterai. Voici mon argument: je communique périodiquement avec un appareil via SPI. Mais, il existe une fonction d'interruption qui nécessite également le SPI sur le même appareil. À l'aide de la broche SS, je devrais pouvoir interrompre la transaction SPI en cours sans la terminer. Me permettant d'accéder plus rapidement au périphérique SPI lors de l'entretien de l'interruption.
st2000

Réponses:


14

[@Kevin et @akohlsmith devraient publier leurs commentaires en tant que réponses.
Il s'agit de développer leurs commentaires. ]

SPI 1 ne prescrit pas le comportement exact du SS (ligne de sélection esclave 2 ). Ce comportement dépend de l'implémentation de chaque périphérique individuel. J'ai vu des appareils qui peuvent fonctionner avec le SS définitivement immobilisé. J'ai également vu des appareils qui nécessitent des fronts descendants et montants sur le SS.

Bien qu'il ne dise pas explicitement que le SS doit être basculé,
le guide de conception (p.31) dit que SS démarre et termine la transaction SPI. Il serait prudent de supposer que SS doit être basculé pour que la transaction SPI soit conclue.

1 SPI est plus une personnalisation plutôt qu'une norme.
2 CS (chip select) est un autre nom pour slave select.


6
Ceci est une très bonne réponse. De nombreux / la plupart des équipements cibles SPI dépendent entièrement de la ligne SPI_CS pour initialiser la machine d'état de capture de bits interne à la pièce à synchroniser entre l'initiateur et les équipements cibles. Il y a quelques appareils qui peuvent se resynchroniser simplement en reconnaissant les patches de synchronisation ou d'opcode à la volée sur la ligne de signal MOSI. Mais ceux-ci sont minoritaires et il est recommandé à quiconque conçoit un système utilisant des périphériques SPI de prévoir un SPI_CS pour chaque périphérique cible, même si cela signifie utiliser des circuits supplémentaires et / ou des GPIO avec le périphérique initiateur pour fournir cette capacité.
Michael Karas

Pas besoin d'ajouter une autre réponse, la vôtre capture ce que @kevinwhite et moi-même disions. :-)
akohlsmith

5

Cela dépend entièrement du périphérique esclave.

Si le protocole du périphérique esclave comprend une sorte de trame, qu'il s'agisse de paquets de longueur fixe, d'octets de démarrage / d'arrêt ou d'un en-tête qui spécifie la longueur du paquet, le périphérique esclave peut alors fonctionner sans sélection de puce. J'ai une puce de mémoire flash SPI dans la carte sur laquelle je travaille actuellement qui semble être parfaitement satisfaite avec ou sans la sélection de puce. Il peut être câblé en permanence à 0V (activé) sans aucun problème.

Cela nous a en fait causé quelques problèmes, car un entrepreneur avait configuré certaines des E / S de bas niveau, y compris le SPI, et nous (et eux!) Ne nous rendions pas compte qu'ils n'avaient pas réussi à faire fonctionner la sélection de puce. Ce n'est que lorsque j'ai dû étendre leur travail SPI pour ajouter un autre périphérique SPI sur le même bus que j'ai découvert que nous n'avions pas réellement de sélections de puces!

Inversement, de nombreux dispositifs esclaves ont besoin de sélections de puces pour encadrer les données, et l'envoi de plus de bits / octets que le paquet attendu sans libérer la sélection de puces à la fin sera considéré comme un transfert non valide et rejeté. Les DAC chargent souvent la nouvelle valeur sur la sortie du front montant de sélection de la puce. De la même manière, les ADC utilisent souvent le transfert SPI pour démarrer (et parfois chronométrer) la conversion, ils ont donc besoin que la puce sélectionne le front descendant comme déclencheur.

Votre fiche technique ne dit rien sur la façon de piloter votre puce particulière sur SPI, et je ne suis pas assez motivé pour la rechercher sur Google. Exercice laissé au lecteur ...;)


Je vais juste attacher SS bas et prier pour que cela fonctionne puisque la fiche technique de l'appareil que j'ai obtenue sur Internet indique seulement que (selon le tableau de définition des broches dans la fiche technique) SS est utilisé pour activer l'appareil. Il indique également que si SS est élevé, les autres lignes SPI seront alors à haute impédance. doigts croisés.

@Mike J'ai découvert une certaine motivation ce matin, alors j'ai googlé "ISD1700". Les deux premiers liens étaient deux fichiers PDF. La première était la fiche technique à laquelle vous avez lié; et le second était le guide de conception qui explique exactement comment conduire la puce. Le guide de conception indique (section 10.2, page 31): "Une transaction SPI est lancée sur le front descendant de la broche SS ~." Donc non, la fiche technique indique que vous ne pouvez pas vous en passer avec ce que vous prévoyez. Et je ne veux pas être trop sournois ici, mais si vous aviez JFGI et lisez les deux premiers liens qui sont apparus, vous auriez pu répondre à votre propre question.
Graham

3

Sans rien savoir de spécifique sur le périphérique esclave SPI, non, vous ne pouvez pas simplement lier SS bas.

De nombreux appareils utilisent le bord d'attaque de SS pour réinitialiser leur logique interne au début d'une nouvelle transaction. Par exemple, les mémoires peuvent interpréter les deux premiers octets comme une adresse, puis les octets suivants comme des données. Certaines mémoires n'effectuent pas l'écriture physique tant que SS n'est pas désactivé.

Pour certains appareils avec le bon protocole, vous pourrez peut-être vous en tirer. Cependant, cela ne fonctionnera pas avec la plupart des appareils.


Plusieurs années de retard sur celui-ci. Et je suis ici parce que je cherchais aussi des réponses. Très bonnes informations que vous avez ajoutées Olin, et bonnes informations des autres aussi. Je pense que le problème était principalement lié à l'interprétation des mots `` chip select '' ou `` slave select '' - qui, si l'on était forcé de supposer quelque chose, alors l'hypothèse signifierait simplement activer cet appareil et désactiver tous les autres appareils esclaves qui pourraient autrement interférer avec les communications entre esclave et maître. Une «hypothèse» juste et logique. C'est bien que ce sujet soit clarifié ici dans ce fil.
Kenny

Une autre question suivante de ce sujet pourrait être ----- si la broche de sélection de puce / d'activation de puce ne doit pas être "activée" en permanence, alors quand le périphérique esclave spi doit-il être activé et désactivé? Par exemple - désactivons-nous le périphérique esclave après l'achèvement de chaque commande envoyée à l'esclave?
Kenny
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.