Während sich Ihre Aufmerksamkeit als Ingenieur oft darauf konzentriert, Triggermuster basierend auf den Daten zu identifizieren, die in einem I enthalten sind2C-Frame, manchmal sind viele Informationen in solchen Frames zu finden, die überhaupt keine Daten enthalten. Durch die Verwendung des LeCroy I2CBus TD-Pakets und insbesondere der Triggerbedingungen für die Datenlänge können Sie sich auf diese speziellen Busereignisse konzentrieren und Ihr Design schnell debuggen und verifizieren.

Frames ohne Daten können aus einer Reihe von Gründen auftreten. Ein häufiger Grund dafür ist, dass kein Gerät auf eine bestimmte Adresse antwortet. Laut Spezifikation I2C-Bus-Master müssen ihre Bustransaktion beim Empfang eines "nicht bestätigten" Bits beenden. Wenn dieses Bit im Adressbyte vorhanden ist, generiert der Master eine Neustart- oder Stoppbedingung, bevor er die Möglichkeit hat, Daten auf das Gerät an dieser Adresse zu schreiben oder von ihm zu lesen. Es gibt mehrere Gründe, warum ein Gerät seine eigene Adresse möglicherweise nicht bestätigt – es könnte damit beschäftigt sein, eine andere Operation auszuführen, oder es gibt möglicherweise kein Gerät mit dieser Adresse am Bus. Das Identifizieren dieser Bedingungen ist für einen Ingenieur, der Tests oder Fehlerbeseitigungen durchführt, oft sehr wichtig. Abbildung 1 veranschaulicht diese Art von Bustransaktion.

Abbildung 1:

Ein Beispiel für ein I2C-Frame, das einen Adressierungsfehler enthält. Da die Adresse von keinem Gerät bestätigt wird, beendet der Busmaster den Rahmen, bevor irgendwelche Datenbytes gesendet werden.

Eine andere Situation, in der ein Frame ohne Daten auftreten kann, ist, wenn das I2Der C-Bus-Master adressiert ein bestimmtes Gerät, um eine Statusprüfung im „Heartbeat“-Stil durchzuführen. Um diese Art von Überprüfung durchzuführen, muss das I2C-Bus-Master adressiert ein Gerät und wartet darauf, dass das Gerät die Adresse bestätigt. Wenn es eine Bestätigung gibt, wird das I2C-Busmaster hat bestätigt, dass ein Gerät auf dem Bus auf diese Adresse antwortet. Dem Busmaster steht es nun frei, den Frame mit einer Restart- oder Stop-Bedingung zu beenden, bevor irgendwelche Datenbytes gesendet werden. Diese Aktion wird beispielsweise ausgeführt, wenn ein Bus-Master beim Start versucht, festzustellen, welche Geräte auf einem Bus verfügbar sind. Abbildung 2 auf der folgenden Seite veranschaulicht diesen Fall.

Abbildung 2:

Ein Beispiel für einen „Herzschlag“-Stil I2C-Frame, bei dem ein Gerät seine Adresse bestätigt und der Busmaster den Frame sofort beendet.

Das Einrichten von Triggerbedingungen zum Identifizieren dieser Ereignisse ist mit dem I2CBus TD-Paket sehr einfach. Durch die Verwendung eines Frame-Length-Triggers, bei dem die Datenlänge auf 0 gesetzt ist, werden Trigger nur für Frames ohne Datenbytes erzeugt, die ansonsten die eingestellten Adress-, Richtungs- und Bestätigungsbedingungen erfüllen.

Ein Beispiel für ein Trigger-Setup für einen solchen Fall ist in Abbildung 3 dargestellt. Beachten Sie, dass das Ack Setup-Steuerelement so eingestellt ist, dass es nach einer No-Ack-Bedingung sucht – diese Einstellung erfordert, dass mindestens ein Adress-/Datenbyte innerhalb des Frames ein „not ihm zugeordnetes bestätigtes"-Bit (die Ack-Bedingung führt eine ähnliche Operation aus und erfordert mindestens ein Adress-/Datenbyte innerhalb des Rahmens, um ein "bestätigtes"-Bit gesetzt zu haben). Auf diese Weise können Sie Trigger einrichten, um zwischen Fällen wie den oben beschriebenen Beispielen für Adressierungsfehler und Heartbeat-Meldungen zu unterscheiden.

Abbildung 3:

Ein Beispiel für einen Trigger auf einem Frame ohne Daten. Beachten Sie, dass das Acknowledge-Bit in dem Frame vor dem Trigger hoch ist (was eine NoAck-Bedingung darstellt) – dies erfüllte die im Trigger-Setup angezeigte Ack-Setup-Triggerbedingung

Beachten Sie, dass dieses Beispiel zwar einen einfachen Fall für den Datenlängen-Trigger verwendet, die gesamte Flexibilität, die Ihnen beim Triggern auf Datenmuster zur Verfügung steht, auch beim Festlegen von Datenlängen-Triggerbedingungen vorhanden ist, einschließlich der Verwendung von ≠, >, >e; , <,