SPI テストは、Windows.Devices.Spi WinRT API を介してユーザー モードに公開されている SPI コントローラーの機能とストレス テストを行います。 テストのスコープは次のとおりです。
- 指定されたフレンドリ名を持つ SPI コントローラーに usermode からアクセス可能であることを確認します。
- さまざまな SPI モード、クロック周波数、データ ビット長、および転送長にわたって、データが正しく送受信されることを確認します。
- 検証では、転送内のバイト間にギャップはありません。 LEDストリップやアナログ/デジタルコンバータなどの一部のデバイスでは、クロック信号が途切れない必要があります。
- 実際に使用されるクロック速度が、要求された値から 15% 以内であることを確認します。
- 転送がストライドの倍数ではないバッファー長で試行されると、転送がSTATUS_INVALID_PARAMETERで失敗し、バス上でアクティビティが生成されないことを確認します。 ストライドは、DataBitLength によって次のように決定されます。
データビット長 | 歩幅 |
4 - 8 | 1 |
9 - 16 | 2 |
17 - 32 | 4 |
外部に接続 された mbed LPC1768に対してテストが実行されます。 mbed LPC1768は、 Farnell、 Digikey、 Adafruit など、さまざまなオンライン小売業者から購入できる人気のあるマイクロコントローラープロトタイププラットフォームです。 テスト ファームウェア イメージを使用した mbed のプログラミングは、ファームウェア イメージを大容量記憶装置にドラッグ アンド ドロップするのと同じくらい簡単です。 ファームウェアのソース コードは GitHub で入手できます。 mbed の準備とテストの実行に関する詳細な手順を以下に示します。
テストの詳細
仕様 |
|
プラットフォーム | |
サポートされているリリース |
|
予想される実行時間 (分単位) | 15 |
カテゴリ | 発達 |
タイムアウト (分単位) | 30 |
再起動が必要 | 偽り |
特別な構成が必要 | ほんとう |
タイプ | 自動 |
その他のドキュメント
この機能領域のテストには、次のトピックに記載されている前提条件、セットアップ、トラブルシューティングの情報など、追加のドキュメントが含まれている場合があります。
テストの実行
テストを実行するには、次のハードウェアが必要です。
- mbed LPC1768
- ブレッドボード
- ジャンパーワイヤー
まず、テスト ファームウェアを mbed に読み込む必要があります。
- MBed LPC1768を USB 経由で PC に接続します。 PC にリムーバブル ドライブとして表示されます。
- エクスプローラーでドライブを開く
- c:\Program Files (x86)\Windows Kits\10\Hardware Lab Kit\Tests\x86\iot\busses-tester-mbed_LPC1768.bin をドライブにコピーする
- mbed のボタンを押して、マイクロコントローラーをリセットします。
次に、テスト対象の SPI コントローラーに mbed を接続します。 MBEDに電力を供給するには、USB経由でテスト対象のデバイスに接続するか、VINピンとGNDピンをテスト対象デバイスの電源ピンに直接接続します。 テスト対象のデバイスと mbed の間で、次の接続を行ってください: (mbed pinout)
- mbed ピン 13 (P0.15/SCK0) をテスト対象デバイスの SCK ピンに接続する
- mbed ピン 30 (P0.4/CAP2.0) をテスト対象デバイスの SCK ピンに接続します (このピンは正確なクロック測定に使用されます)
- mbed ピン 11 (P0.18/MOSI0) をテスト対象デバイスの MOSI ピンに接続する
- MBED ピン 12 (P0.17/MISO0) をテスト対象デバイスの MISO ピンに接続します
- mbed ピン 14 (P0.16/SSEL0) をテスト対象デバイスのチップ選択ピンに接続する
- mbed GND をテスト対象デバイスの GND ピンに接続する
HLK Studio でテストのスケジュールを設定できるようになりました。
トラブルシューティング
HLK テストエラーの一般的なトラブルシューティングについては、「 Windows HLK テストエラーのトラブルシューティング」を参照してください。
コマンド ラインでテストを実行して、エラーの分析情報を得て、ソリューションをすばやく反復処理することをお勧めします。 また、サラエなどのロジック アナライザーをフックすることもお勧めします。 バスのトラフィックを検査することなく、障害の原因を特定することは困難または不可能な場合があります。
コマンド ラインでテストを実行する方法を次に示します。
%programfiles(x86)%\Windows Kits\10\Testing\Runtimes\TAEF\<arch>\MinTe を c:\data\minte にコピーする
Windows.Devices.LowLevel.UnitTests.dll を %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\<arch>\iot からデバイス上の c:\data にコピーします。
Telnet または SSH でデバイスに接続する
ディレクトリを c:\data に変更する
テストを実行します。
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 など)。 |