Freigeben über


SPI WinRT Clock Frequency Verification Tests (mbed LPC1768 Erforderlich)

Die SPI-Tests führen Funktions- und Stresstests von SPI-Controllern durch, die über die Windows.Devices.Spi WinRT-APIs im Benutzermodus verfügbar sind. Der Umfang der Tests umfasst:

  • Überprüfung, ob auf einen SPI-Controller mit angegebenem Freundlichen Namen im Benutzermodus zugegriffen werden kann.
  • Überprüfung, ob Daten über einen Bereich von SPI-Modi, Taktfrequenzen, Datenbitlängen und Übertragungslängen korrekt gesendet und empfangen werden.
  • Überprüfung, dass es keine Lücken zwischen Bytes innerhalb einer Übertragung gibt. Einige Geräte wie LED-Streifen und analoge digitale Konverter erfordern ein unterbrechungsfreies Uhrsignal.
  • Überprüfung, dass die verwendete Taktgeschwindigkeit innerhalb von 15% des angeforderten Werts liegt.
  • Überprüfung, dass beim Versuch einer Übertragung mit einer Pufferlänge, die kein Vielfaches des Stride ist, die Übertragung mit STATUS_INVALID_PARAMETER fehlgeschlagen ist und keine Aktivität auf dem Bus generiert wird. Der Schrittlänge wird von DataBitLength wie folgt bestimmt:
   
Datenbitlänge Schritt
4 – 8 1
9 - 16 2
17 - 32 4

Tests werden für eine extern angeschlossene mbed LPC1768 ausgeführt. Die mbed LPC1768 ist eine beliebte Mikrocontroller-Prototypplattform, die von einer Vielzahl von Onlinehändlern wie Farnell, Digikey und Adafruit erworben werden kann. Die Programmierung des mbed mit dem Testfirmwareimage ist so einfach wie das Ziehen und Ablegen des Firmwareimages auf das Massenspeichergerät. Der Firmwarequellcode ist auf github verfügbar. Detaillierte Anweisungen zum Vorbereiten der Mbed- und Ausführung der Tests finden Sie unten.

Testdetails

   
Spezifikationen
  • Device.BusController.SPI.WinRT.Diskretionär
Plattformen
    Unterstützte Versionen
    • Windows 10
    • Windows 10, Version 1511
    • Windows 10, Version 1607
    • Windows 10, Version 1703
    • Windows 10, Version 1709
    • Windows 10, Version 1803
    • Windows 10, Version 1809
    • Windows 10, Version 1903
    • Nächstes Update zu Windows 10
    Erwartete Laufzeit (in Minuten) 15
    Kategorie Entwicklung
    Timeout (in Minuten) 30
    Erfordert neustarten Falsch
    Erfordert eine spezielle Konfiguration Wahr
    Typ automatisch

     

    Zusätzliche Dokumentation

    Tests in diesem Featurebereich verfügen möglicherweise über zusätzliche Dokumentationen, einschließlich Voraussetzungen, Setup und Problembehandlungsinformationen, die im folgenden Thema(n) zu finden sind:

    Ausführen des Tests

    Zum Ausführen der Tests benötigen Sie die folgende Hardware:

    Zuerst müssen Sie die Testfirmware auf das mbed laden:

    1. Schließen Sie die mbed LPC1768 über USB an Ihren PC an. Sie wird als Wechseldatenträger auf Ihrem PC angezeigt.
    2. Öffnen des Laufwerks im Datei-Explorer
    3. Kopieren Sie c:\Programme (x86)\Windows Kits\10\Hardware Lab Kit\Tests\x86\iot\busses-tester-mbed_LPC1768.bin auf das Laufwerk
    4. Drücken Sie die Taste auf dem Mbed, um den Mikrocontroller zurückzusetzen.

    Als Nächstes verkabeln Sie den mbed an Ihren SPI-Controller im Test. Um das Mbed mit Strom zu versorgen, können Sie es über USB an Ihr Testgerät anschließen, oder die VIN- und GND-Pins direkt an die Strompins Ihres Testgeräts anschließen. Führen Sie die folgenden Verbindungen zwischen Ihrem Gerät unter Test und mbed aus: (mbed pinout),

    1. Verbinden Sie mbed Pin 13 (P0.15/SCK0) mit dem SCK-Pin an Ihrem Prüfgerät.
    2. Verbinden Sie mbed Pin 30 (P0.4/CAP2.0) mit dem SCK-Pin auf Ihrem Gerät unter Test (dieser Pin wird für präzise Taktmessung verwendet)
    3. Verbinden Sie mbed Pin 11 (P0.18/MOSI0) mit dem MOSI-Pin auf Ihrem Gerät unter Test
    4. Verbinden Sie mbed Pin 12 (P0.17/MISO0) mit dem MISO-Pin auf Ihrem Gerät unter Test
    5. Verbinden Sie mbed Pin 14 (P0.16/SSEL0) mit dem Chip Select-Pin auf Ihrem Gerät unter Test
    6. Verbinden Sie mbed GND mit einem GND-Pin Ihres zu testenden Geräts

    Sie können jetzt die Tests in HLK Studio planen.

    Fehlerbehebung

    Allgemeine Problembehandlung bei HLK-Testfehlern finden Sie unter "Problembehandlung bei Windows HLK-Testfehlern".

    Es wird empfohlen, die Tests auf der Kommandozeile auszuführen, um Einblicke in Fehler zu erhalten und schnell Lösungen zu iterieren. Wir empfehlen auch, einen Logikanalysator wie zum Beispiel einen salae zu verbinden. Es kann schwierig oder unmöglich sein, die Ursache eines Ausfalls zu ermitteln, ohne den Busverkehr prüfen zu können.

    So führen Sie die Tests in der Befehlszeile aus:

    1. Kopieren Sie %programfiles(x86)%\Windows Kits\10\Testing\Runtimes\TAEF\<arch>\MinTe in c:\data\minte

    2. Kopieren Sie Windows.Devices.LowLevel.UnitTests.dll aus %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch\iot> auf c:\data auf Ihrem Gerät.

    3. Telnet oder SSH auf Ihrem Gerät

    4. Ändern von Verzeichnissen in "c:\data"

    5. Führen Sie die Tests aus:

      minte\te windows.devices.lowlevel.unittests.dll /name:SpiHlk*
      

    Verwendung des Befehlszeilentests:

    minte\te windows.devices.lowlevel.unittests.dll [/name:test_name] [/p:SpiFriendlyName=friendly_name] [/p:ClockFrequency=clock_frequency] [/p:DataBitLength=data_bit_length] [/p:SpiMode=0|1|2|3] [/p:Length=length] [/p:WriteLength=write_length] [/p:ReadLength=read_length] [/p:ExtraClocks=extra_clocks] [/p:Verbose=true]
    
    • test_name - der Name des auszuführenden Tests, der Auch Wildcards enthalten kann. Beispiele: /name:SpiHlk*, /name:SpiHlkTests::VerifyClockFrequency#metadataSet0
    • friendly_name - der benutzerfreundliche Name des SPI-Controllers im Test. Wird dieser Parameter nicht angegeben, wird der erste aufgezählte Controller verwendet. Beispiele: /p:SpiFriendlyName=SPI1
    • clock_frequency – Erzwingen sie, dass ein Test die angegebene Taktfrequenz verwendet. Standardmäßig stammt die Taktfrequenz aus den Testdaten, die darauf ausgelegt sind, eine Abdeckung über einen Bereich von Frequenzen zu ermöglichen. Dieser Parameter sollte unter normalen Umständen weggelassen werden. Beispiel: /p:ClockFrequency=15000000
    • data_bit_length – Erzwingen sie, dass ein Test die angegebene Datenbitlänge verwendet. Beispiel: /p:DataBitLength=9
    • SpiMode – Erzwingen eines Tests zur Verwendung des angegebenen SPI-Modus. Beispiel: /p:SpiMode=2
    • length – Erzwingen Sie, dass ein Test die angegebene Pufferlänge für die Übertragung verwendet. Beispiel: /p:length=128
    • write_length - Erzwingen eines TransferSequential-Tests, um die angegebene Pufferlänge für den Schreibvorgang der Übertragung zu verwenden. Beispiel: /p:WriteLength=8
    • read_length – Zwingen Sie einen TransferSequential-Test, die angegebene Pufferlänge für den Lesevorgang der Übertragung zu verwenden. Beispiel: /p:ReadLength=16
    • extra_clocks – Geben Sie eine Anpassung an die Anzahl der Uhren pro Byte an, die bei der Berechnung der erwarteten Taktaktivzeiten für Leistungsmessungen, Lückeerkennung und Taktfrequenzüberprüfung verwendet werden. Beispielsweise wartet der BCM2836 SPI-Controller nach jedem Byte einen zusätzlichen Taktzyklus. Um dieses Verhalten zu kompensieren, müssen die Messungen angepasst werden. Beispiel: /p:ExtraClocks=1.5
    • /p:Verbose=true - ausführliche Ausgabe aktivieren. Dies führt dazu, dass ganze Puffer auf der Konsole abgespeichert werden, wenn ein Fehler auftritt. Standardmäßig wird nur das erste nicht übereinstimmende Byte angezeigt.

    Beispiele:

    Verfügbare Tests auflisten:

    minte\te windows.devices.lowlevel.unittests.dll /list
    

    Führen Sie die E/A-Validierungstests durch:

    minte\te windows.devices.lowlevel.unittests.dll /name:SpiHlkIoTests*
    

    Führen Sie die Lückenerkennungstests aus:

    minte\te windows.devices.lowlevel.unittests.dll /name:SpiHlkGapTests*
    

    Führen Sie die Validierung der Taktfrequenz und die Durchführung der Schrittweite-Tests aus.

    minte\te windows.devices.lowlevel.unittests.dll /name:SpiHlkTests*
    

    Führen Sie einen bestimmten Test für eine bestimmte SPI-Controllerinstanz aus:

    minte\te windows.devices.lowlevel.unittests.dll /name:SpiHlkIoTests#2::VerifyTransferSequential#metadataSet9 /p:SpiFriendlyName=SPI1
    

    Ein Tool, das bei der manuellen Problembehandlung helfen kann, ist SpiTestTool. SpiTestTool ist ein einfaches Hilfsprogramm für die Interaktion mit SPI über die Befehlszeile.

    Weitere Informationen

    Parameter

    Parametername Parameterbeschreibung
    SpiFriendlyName Der freundliche Name des SPI-Controllers im Test (z. B. SPI0).