SPI-Busabschluss und Pull-up-Widerstände

12

Mein Mikrocontroller (ATMEL-Serie) muss über das SPI-Protokoll mit einem Slave-Gerät kommunizieren. Ich entwerfe die Hardware. Die maximale SPI-Busgeschwindigkeit beträgt 1 MHz. Der Abstand zwischen Master und Slave beträgt weniger als 50 mm.

Q1) Muss ich einen Abschluss in Reihe auf dem SPI-Bus hinzufügen, um Reflexionen bei dieser SPI-Geschwindigkeit (1 MHz) zu vermeiden? Wenn ja, wie soll ich den Wert berechnen und wo soll ich den Abschlusswiderstand platzieren - in der Nähe des Masters oder des Slaves?

F2) Ich habe andere Referenzdesigns gesehen, bei denen manchmal Pull-up-Widerstände für alle SPI-Signale verwendet werden, manchmal nur für einige wenige Signale (CS oder MISO) und manchmal keine. Benötigen wir Pull-up-Widerstände für SPI-Signale (da der SPI-Port eine Push-Pull-Konfiguration ist)? Die Pins schweben nur so lange, bis der Mikrocontroller seine Leistung erhält und Pins als Ausgänge setzen kann. Sollte ich also Pull-up-Widerstände verwenden müssen oder was passiert, wenn ich in meinem Design keine Pull-up-Widerstände verwende?

Bharav
quelle

Antworten:

20
  1. Bei 1 MHz und 50 mm (2 Zoll) benötigen Sie keine Anschlüsse. Sie haben normale digitale Signale an Bord und nicht einmal sehr schnelle.
  2. Sie benötigen keine Klimmzüge oder Pulldowns auf SPI-Leitungen. Bei Verwendung werden SPI-Leitungen immer explizit in beide Richtungen gesteuert. Es kann jedoch sinnvoll sein, die MISO-Leitung mit einem Pulldown (oder Pullup) zu versehen. Dies liegt daran, dass diese Leitung nur von einem Slave angesteuert wird, wenn die Slave-Auswahlleitung aktiviert ist. Wenn der Bus nicht verwendet wird, sind normalerweise alle Slave-Auswahlleitungen nicht aktiviert, sodass MISO schwebt. Der beliebige Datenwert ist irrelevant, da nichts auf seinen Wert schaut, es sei denn, ein Slave ist ausgewählt, aber Zwischenspannungen auf dieser Leitung können dazu führen, dass der Empfänger im Master übermäßigen Strom zieht oder möglicherweise schwingt. Aus diesem Grund habe ich normalerweise einen 100-kΩ-Pulldown auf MISO gesetzt. Es hält die Leitung harmlos niedrig, wenn sie nicht verwendet wird. Sie können auch einen Pullup verwenden, solange alle Slaves mit Strom versorgt werden, auch wenn sie nicht verwendet werden.
Olin Lathrop
quelle
3
Ein wichtiger Grund, die CS / SS-Pins mit einem Pullup zu versehen, besteht darin, sicherzustellen, dass alle Slaves abgewählt bleiben, wenn der Master zurückgesetzt oder gestartet wird. In diesem Fall sind seine Pins normalerweise Hi-Z und schweben daher, was dazu führen kann, dass mehrere Slaves ausgewählt werden und den MISO-Bus ansteuern (was zu Kurzschlüssen führt). Vielleicht wäre dies eine nützliche Ergänzung zu dieser Antwort?
Matthijs Kooijman