⏪ | Zurück zur Hauptseite |
Inhaltsverzeichnis
Das obige Beispiel zeigt eine I²C-Sequenz zum Testen eines MC23017.
Wie I²C-Testsequenzen in das Testschema eingebunden werden, ist in der Anleitung beschrieben.
Eine I²C-Sequenz besteht aus beliebig vielen Sende-Paketen (XmitPacket), optional gefolgt von einem Einleseauftrag (ReadPacket) mit Erwartungswerten. Sende-Pakete werden durch einen senkrechten Strich ("|") getrennt, der Einlese-Auftrag wird von einem Rautenzeichen ("#") eingeleitet.
Die Sende-Pakete wird werden direkt über die I²C-Schnittstelle an des zu testende IC gesendet. Vor jedem einzelnen Paket wird eine Start-Bedingung erzeugt und zum Abschluss des Pakets eine Stopp-Bedingung.
Ein Sende-Paket (XmitPacket) beginnt einer I²C-Geräteadresse (DeviceAddress) gefolgt von beliebig vielen, aber mindestens einem zu sendenden Byte (ByteDefinition). Die einzelnen Bytes müssen durch ein Separatorzeichen Komma (",") oder Semikolon (";") getrennt werden.
Die Gerätedresse ist eine Zahl zwischen 0 und 127 im Dezimal oder Hexadezimal-Format. Für die ByteDefinition sind Werte zwischen 0 und 255 erlaubt. Vor oder nach den Zahlenwerten dürfen Kommentare (Comment) eingefügt werden.
Dezimalzahlen (DecimalNumber) sind eine Folge von Ziffern. Bei Hexadezimalzahlen (HexNumber) ist der Ziffernfolge ein "0X" oder einfaches "x" in Groß- oder Kleinschreibung vorausgestellt. Die Ziffernfolge darf außerdem die Zeichen "A", "B", "C", "D", "E" oder "F" in Groß- oder Kleinschreibung enthalten.
Ein Kommentar (Comment) ist eine beliebige Zeichenfolge, die in Apostrophe eingeschlossen ist. Die Zeichenfolge selbst darf kein Apostroph enthalten. Es gibt hierfür auch kein Fluchtsymbol (Escape-zeichen). Als Kommentar gilt auch eine beliebig lange Folge von Leerzeichen.
Das Einlese-Paket besteht aus der Angabe einer Geräteadresse (DeviceAddress, Dezimal- oder Hexadezimalzahl zwischen 0 und 127, Definition s.o.) und einer Folge von Erwartungswerten (Expectation, Dezimal- oder Hexadezimalzahl zwischen 0 und 255, Definition s.o.). Es werden genau so viele Bytes eingelesen, wie Erwartungswerte angegeben wurden. Die eingelesen Bytes werden an den PC gesandt und dort mit den Erwartungswerten verglichen.
Die I²C-Kommunikation besteht aus dem Versand mehrerer Folgen von Bytes, ggf. gefolgt vom Einlesen einer Byte-Folge. Die Byte-Folgen müssen nach den folgenden Regeln erfasst werden. Zunächst ein Beispiel:
Es soll ein IC vom Typ MCP23017 (ein 16-Bit I/O Expander mit Serial Interface) getestet werden. Im Testschritt sollen alle GPIO-Pins auf OUTPUT mit dem Logikpegel HIGH gesetzt werden. Anschließend sollen die Werte der GPIO-Pins zur Kontrolle ausgelesen werden. Mit den IODIRx-Registern (Registeradresse 0x00 ff) des IC wird der OUTPUT-Modus festgelegt, über die GPIOx-Register (Registeradresse 0x12 ff) wird der Logikpegel festgelegt bzw. ausgelesen. Es müssen jeweils zwei Bytes (Bank A und Bank B) geschrieben bzw. gelesen werden. So sieht es aus:
Die Analyse der Eingabedaten erfolgt über einen Zustandsautomaten in der Klasse I2cHelpers: