Terminaison de bus SPI et résistances de rappel

12

Mon microcontrôleur (série ATMEL) doit communiquer avec un périphérique esclave à l'aide du protocole SPI. Je conçois le matériel. La vitesse maximale du bus SPI est de 1 MHz. La distance entre le maître et l'esclave est inférieure à 50 mm.

Q1) Dois-je ajouter une terminaison en série sur le bus SPI pour éviter la réflexion à cette vitesse SPI (1 MHz)? Si oui, comment dois-je calculer sa valeur et où dois-je placer la résistance de terminaison - près du maître ou près de l'esclave?

Q2) J'ai vu d'autres conceptions de référence où parfois les gens utilisent des résistances de rappel sur tous les signaux SPI, parfois seulement sur quelques signaux (CS ou MISO) et parfois aucun. Avons-nous besoin de résistances pull-up sur les signaux SPI (puisque le port SPI est en configuration push-pull)? Le seul moment où les broches flottent est jusqu'à ce que le microcontrôleur soit alimenté et puisse définir des broches comme sorties. Dois-je donc avoir besoin d'utiliser des résistances de rappel ou que se passera-t-il si je n'utilise aucune résistance de rappel dans ma conception?

Bharav
la source

Réponses:

20
  1. À 1 MHz et 50 mm (2 pouces), vous n'avez pas besoin de terminaisons. Vous avez des signaux numériques embarqués ordinaires, et même pas très rapides.
  2. Vous n'avez pas besoin de pullups ou de pulldowns sur les lignes SPI. Lorsqu'elles sont utilisées, les lignes SPI sont toujours pilotées explicitement dans les deux sens. Cependant, il peut être bon de mettre un pulldown (ou pullup) sur la ligne MISO. En effet, cette ligne est uniquement pilotée par un esclave lorsque sa ligne de sélection d'esclave est affirmée. Lorsque le bus n'est pas utilisé, toutes les lignes de sélection esclaves ne sont généralement pas affirmées, donc MISO flotte. La valeur arbitraire des données n'a pas d'importance car rien ne regarde sa valeur à moins qu'un esclave ne soit sélectionné, mais des tensions intermédiaires sur cette ligne peuvent amener le récepteur du maître à tirer un courant excessif ou à osciller. Pour cette raison, je mets généralement un pulldown de 100 kΩ sur MISO. Il maintient la ligne inoffensivement basse lorsqu'il n'est pas utilisé. Vous pouvez tout aussi bien utiliser un pullup, tant que tous les esclaves restent alimentés même lorsqu'ils ne sont pas utilisés.
Olin Lathrop
la source
3
Une raison importante pour mettre un pullup sur les broches CS / SS est de s'assurer que tous les esclaves restent désélectionnés lorsque le maître est en réinitialisation ou en démarrage. Dans ce cas, ses broches sont généralement hi-Z et donc flottantes, ce qui pourrait entraîner la sélection de plusieurs esclaves et la commande du bus MISO (entraînant des courts-circuits). Peut-être que ce serait un ajout utile à cette réponse?
Matthijs Kooijman