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 .
8
Réponses:
[@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.
la source
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 ...;)
la source
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.
la source