Datenbus zwischen uC und SRAM: Was passiert, wenn beide gleichzeitig schreiben?

Mein Verständnis der Anbindung eines Standard-SRAM-Chips ist folgendes: Wenn der Host schreiben möchte, wird OutputEnable # auf High gesetzt, um den SRAM-Datenbus auf High-Z zu bringen, und der Host treibt den Bus an. Beim Lesen ist OutputEnable# niedrig und der SRAM treibt den Bus.

Was passiert, wenn ich versehentlich den Ausgang des SRAM aktiviere, während ich gleichzeitig die Ausgänge auf der Hostseite ansteuere? Wird es zu körperlichen Schäden kommen?

Antworten (2)

Ja, es kann zu körperlichen Schäden kommen. Je länger die Situation andauert, desto größer ist die Schadenswahrscheinlichkeit. Falls dies ein Problem ist, von dem Sie erwarten, dass es häufig in Ihrem Setup auftritt, sollten Sie wahrscheinlich ein besseres Schema ausarbeiten oder zumindest einen Vorwiderstand in jede der Datenleitungen einbauen. Der Widerstand sollte so gewählt werden, dass im schlimmsten Fall (beide Seiten treiben auf entgegengesetzte Logik) der Strom durch den Widerstand kleiner sein sollte als die Stromtreiberfähigkeit des IC mit der niedrigeren Stromtreiberfähigkeit. Beachten Sie, dass Sie dabei auf jeden Fall die Geschwindigkeit opfern, mit der der Datenbus ohne den Serienwiderstand arbeiten kann.

Was Sie beschreiben, wird als Buskonflikt bezeichnet . Ich persönlich habe diese Schadensursache nur einmal gesehen, und ich habe damals die Technologie der 80er Jahre verwendet. Die meisten modernen Mikrocontroller verfügen über eine integrierte Busarbitrierungslogik, sodass dies nicht passiert, wenn sie der einzige Master sind. Aber wenn Sie mehrere Busmaster haben, kann dies durchaus vorkommen.

Die häufigsten Symptome wären Störungen oder falsche Werte, die sich sehr schnell mit korrekten Werten abwechseln. Mit einem Logikanalysator können Sie dies leicht erkennen. Es kann mit einem Oszilloskop gesehen werden, aber ich finde, dass es schwieriger ist, es als solches zu identifizieren.

Bei einem modernen Mikrocontroller, der als einzelner Busmaster fungiert, ist dies selten ein Problem (vorausgesetzt, Sie überlassen die OE-Generierung dem Mikro und erzwingen den Pin nicht selbst). Bei mehreren Bus-Mastern baue ich normalerweise ein kleines programmierbares Logikgerät (PLD) in das System ein und entwerfe einen separaten Bus-Arbiter, um sicherzustellen, dass dies nicht passiert.

Danke dir! Zwei hilfreiche Antworten in einer Stunde ... damit hatte ich nicht gerechnet.
@tschaboo Absolut. Und nur zu Ihrer Information, Sie sollten normalerweise mindestens 24 Stunden warten, bevor Sie eine Antwort akzeptieren. Dies ist eine weltweite Community, daher sind nicht alle gleichzeitig aktiv. Und einige Leute werden nicht antworten, wenn es bereits eine Annahme gibt. Wenn Sie 24 Stunden warten, erhalten Sie viele gute Antworten. Willkommen bei StackExchange!