SPI WinRT クロック周波数検証テスト (mbed LPC1768 が必要)

SPI テストでは、Windows.Devices.Spi WinRT API を介してユーザーモードに公開される SPI コントローラーの機能およびストレス テストを行います。 テストの範囲は次のとおりです。

  • 指定されたフレンドリ名を持つ SPI コントローラーが、ユーザーモードからアクセスできることの検証。
  • SPI モード、クロック周波数、データ ビット長、転送長の範囲にわたってデータが正しく送信および受信されていることの検証。
  • 転送内のバイト間にギャップがないことの検証。 LED ストリップやアナログ/デジタル コンバーターなどのデバイスには、中断されないクロック信号が必要なものがあります。
  • 使用される実際のクロック速度が、要求された値の 15% 以内であることの検証。
  • ストライドの倍数ではないバッファー長で転送が試行されたときに、その転送が STATUS_INVALID_PARAMETER で失敗し、バス上でアクティビティが生成されないことの検証。 ストライドは、DataBitLength によって次のように決定されます。
   
DataBitLength Stride
4 - 8 1
9 - 16 2
17 - 32 4

テストは、外部接続された mbed LPC1768 に対して実行されます。 mbed LPC1768 は、SparkfunDigikeyAdafruit を含むさまざまなオンライン小売業者から購入できる、一般的なマイクロコントローラー プロトタイプ プラットフォームです。 テスト ファームウェア イメージを使用した mbed のプログラミングは、ファームウェア イメージを大容量記憶装置にドラッグ アンド ドロップするのと同じくらい簡単です。 ファームウェアのソース コードは github で入手できます。 mbed の準備とテストの実行に関する詳細な手順を以下に示します。

テストの詳細

   
仕様
  • Device.BusController.SPI.WinRT.Discretional
プラットフォーム
    サポートされているリリース
    • Windows 10
    • Windows 10 バージョン 1511
    • Windows 10 Version 1607
    • Windows 10 Version 1703
    • Windows 10 バージョン 1709
    • Windows 10 バージョン 1803
    • Windows 10 Version 1809
    • Windows 10 バージョン 1903
    • Windows 10 への次の更新プログラム
    予想される実行時間 (分) 15
    カテゴリ 開発
    タイムアウト (分) 30
    再起動が必要です false
    特別な構成が必要です true
    Type automatic

     

    その他のドキュメント

    この機能領域のテストには、前提条件、セットアップ、トラブルシューティング情報など、次のトピックに記載されている追加のドキュメントが含まれている場合があります。

    テストの実行

    テストを実行するには次のハードウェアが必要です:

    • mbed LPC1768
    • ブレッドボード
    • ジャンパー ワイヤ

    まず、テスト ファームウェアを mbed に読み込む必要があります。

    1. USB 経由で mbed LPC1768 を PC に接続します。 PC にリムーバブル ドライブとして表示されます。
    2. エクスプローラーでドライブを開きます
    3. c:\Program Files (x86)\Windows Kits\10\Hardware Lab Kit\Tests\x86\iot\busses-tester-mbed_LPC1768.bin をドライブにコピーします
    4. mbed のボタンを押して、マイクロコントローラーをリセットします

    次に、mbed をテスト対象の SPI コントローラーに接続します。 mbed の電源をオンにする場合は、USB 経由でテスト対象デバイスに接続するか、VIN および GND ピンをテスト対象デバイスの電源ピンに直接接続できます。 テスト対象デバイスと mbed の間で次の接続を行います (mbed のピン配列)。

    1. mbed ピン 13 (P0.15/SCK0) を、テスト対象デバイスの SCK ピンに接続します
    2. mbed ピン 30 (P0.4/CAP2.0) を、テスト対象デバイスの SCK ピンに接続します (このピンは正確なクロック測定に使用されます)
    3. mbed ピン 11 (P0.18/MOSI0) を、テスト対象デバイスの MOSI ピンに接続します
    4. mbed ピン 12 (P0.17/MISO0) を、テスト対象デバイスの MISO ピンに接続します
    5. mbed ピン 14 (P0.16/SSEL0) を、テスト対象デバイスのチップ セレクト ピンに接続します
    6. mbed GND をテスト対象デバイスの GND ピンに接続します

    これで、HLK Studio でテストをスケジュールできるようになりました。

    トラブルシューティング

    HLK テスト エラーの一般的なトラブルシューティングについては、「Windows HLK テストのエラーのトラブルシューティング」を参照してください。

    コマンド ラインでテストを実行して、エラーに関する分析情報を取得し、ソリューションをすばやく反復処理することをお勧めします。 また、salae などのロジック アナライザーを接続することをお勧めします。 バス トラフィックを検査する機能がない場合、エラーの原因を特定するのが困難または不可能な場合があります。

    以下にコマンド ラインでテストを実行する方法を示します。

    1. %programfiles(x86)%\Windows Kits\10\Testing\Runtimes\TAEF\<arch>\MinTe を c:\data\minte にコピーします

    2. %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot からデバイス上の c:\data に Windows.Devices.LowLevel.UnitTests.dll をコピーします。

    3. デバイスに Telnet または ssh で接続します

    4. ディレクトリを c:\data に移動します

    5. テストを実行します。

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

    コマンド ライン テストの使用法:

    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 - 実行するテストの名前。ワイルドカードを含む場合があります。 例: /name:SpiHlk*、/name:SpiHlkTests::VerifyClockFrequency#metadataSet0
    • friendly_name - テスト対象の SPI コントローラーのフレンドリ名。 省略した場合は、最初に列挙されたコントローラーが使用されます。 例: /p:SpiFriendlyName=SPI1
    • clock_frequency - 指定されたクロック周波数を使用するようにテストを強制します。 既定では、クロック周波数はテスト データから取得されます。これは、周波数の範囲にわたって対象を指定するように設計されています。 このパラメーターは、通常の状況では省略する必要があります。 例: /p:ClockFrequency=1500000
    • data_bit_length - 指定されたデータ ビット長を使用するようにテストを強制します。 例: /p:DataBitLength=9
    • SpiMode - 指定された SPI モードを使用するようにテストを強制します。 例: /p:SpiMode=2
    • length - 転送に指定されたバッファー長を使用するようにテストを強制します。 例: /p:length=128
    • write_length - 転送の書き込み部分に指定されたバッファー長を使用するように TransferSequential テストを強制します。 例: /p:WriteLength=8
    • read_length - 転送の読み取り部分に指定されたバッファー長を使用するように TransferSequential テストを強制します。 例: /p:ReadLength=16
    • extra_clocks - パフォーマンス測定、ギャップ検出、クロック周波数の確認で予想されるクロック アクティブ時間を計算するときにテストで使用されるバイトあたりのクロック数の調整を指定します。 たとえば、BCM2836 SPI コントローラーでは、各バイトの後に余分なクロック サイクルを待機します。そのため、この動作を補正するには、測定値を調整する必要があります。 例: /p:ExtraClocks=1.5
    • /p:Verbose=true - 詳細出力を有効にします。 これにより、エラーが発生すると、バッファー全体がコンソールにダンプされます。 既定では、最初の不一致バイトのみが表示されます。

    例:

    使用可能なテストを一覧表示する場合:

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

    IO 確認テストを実行する場合:

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

    ギャップ検出テストを実行する場合:

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

    クロック周波数の確認とストライド テストを実行する場合:

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

    特定の SPI コントローラー インスタンスに対して特定のテストを実行する場合:

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

    手動でのトラブルシューティングに役立つ場合があるツールは、SpiTestTool です。 SpiTestTool は、コマンド ラインから SPI と対話するためのシンプルなユーティリティです。

    詳細

    パラメーター

    パラメーター名 パラメーターの説明
    SpiFriendlyName テスト対象の SPI コントローラーのフレンドリ名 (SPI0 など)。