SPI WinRT 跨步驗證測試
SPI 測試會透過 Windows.Devices.Spi WinRT API 對使用者模式公開的 SPI 控制器執行功能和壓力測試。 測試範圍包括:
- 驗證具有指定易記名稱的 SPI 控制器可從 usermode 存取。
- 驗證資料在 SPI 模式、時鐘頻率、資料位長度和傳輸長度範圍內正確傳送和接收。
- 驗證傳輸內的位元組之間沒有間距。 某些裝置,例如 LED 帶和類比數位轉換器,都需要不中斷的時鐘訊號。
- 確認使用的實際時脈速度在要求值的 15% 內。
- 驗證當傳輸嘗試的緩衝區長度不是跨距的倍數時,傳輸會因為STATUS_INVALID_PARAMETER而失敗,而且匯流排上不會產生任何活動。 步進是由 DataBitLength 決定,如下所示:
DataBitLength | 分散 |
4 - 8 | 1 |
9 - 16 | 2 |
17 - 32 | 4 |
測試會針對外部連接的 mbed LPC1768執行。 mbed LPC1768 是熱門的微控制器原型平臺,可從各種線上零售商購買,包括 Sparkfun、 Digikey和 Adafruit。 使用測試韌體映射進行 mbed 的程式設計,就像將韌體映射拖放到大量儲存裝置一樣簡單。 韌體原始程式碼可在 github上取得。 以下提供準備 mbed 和執行測試的詳細指示。
測試詳細資料
規格 |
|
平台 | |
支援的版本 |
|
預期的執行時間 (以分鐘為單位) | 5 |
類別 | 部署 |
以分鐘為單位的逾時 () | 10 |
需要重新開機 | false |
需要特殊設定 | false |
類型 | automatic |
其他檔
此功能區域中的測試可能會有其他檔,包括必要條件、設定和疑難排解資訊,可在下列主題中找到 () :
執行測試
您需要下列硬體才能執行測試:
- mbed LPC1768
- 試驗電路板
- 跳線線
首先,您必須將測試韌體載入 mbed:
- 將透過 USB 的 mbed LPC1768 插入您的電腦。 它會顯示為您電腦上的抽取式磁碟磁碟機。
- 在檔案總管中開啟磁片磁碟機
- 將 c:\Program Files (x86) \Windows Kits\10\Hardware Lab Kit\Tests\x86\iot\busses-tester-mbed_LPC1768.bin 複製到磁片磁碟機
- 按下 mbed 上的按鈕以重設微控制器
接下來,將 mbed 連線到受測的 SPI 控制器。 若要將 mbed 電源,您可以透過 USB 將它插入受測裝置,或將 VIN 和 GND 針腳直接連接到受測裝置上的電源針腳。 在受測裝置與 mbed 之間建立下列連線: (mbed 釘選) ,
- 將 mbed pin 13 (P0.15/SCK0) 連線到受測裝置上的 SCK 針腳
- 將 mbed 針腳 30 (P0.4/CAP2.0) 連接到受測裝置上的 SCK 針腳, (此針腳用於精確的時鐘測量)
- 將 mbed pin 11 (P0.18/MOSI0) 連線到受測裝置上的 MOSI 針腳
- 將 mbed pin 12 (P0.17/MISO0) 連線到受測裝置上的 MISO 針腳
- 將 mbed pin 14 (P0.16/SSEL0) 連線到受測裝置上的 Chip Select 針腳
- 將 mbed GND 連線到受測裝置上的 GND 針腳
您現在可以在 HLK Studio 中排程測試。
疑難排解
如需 HLK 測試失敗的一般疑難排解,請參閱 針對 Windows HLK 測試失敗進行疑難排解。
建議您在命令列上執行測試,以深入瞭解失敗,並快速逐一查看解決方案。 我們也建議連結邏輯分析器,例如 salae。 在無法檢查公車流量的情況下,判斷失敗的原因可能很困難或不可能。
以下是如何在命令列上執行測試:
將 %programfiles (x86) %\Windows Kits\10\Testing\Runtimes\TAEF\ < arch > \MinTe 複製到 c:\data\minte
從 %programfiles (x86) %\Windows Kits\10\Hardware Lab Kit\Tests\ < arch > \iot 複製到裝置上的 c:\data Windows.Devices.LowLevel.UnitTests.dll。
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) 。 |