Share via


SPI WinRT IO 傳輸測試 (mbed LPC1768 必要)

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 是熱門的微控制器原型設計平臺,可從各種線上零售商購買,包括 SparkfunDigikeyAdafruit。 使用測試韌體映射進行 mbed 的程式設計,就像將韌體映射拖放到大量儲存裝置一樣簡單。 韌體原始程式碼可在 github上取得。 以下提供準備 mbed 和執行測試的詳細指示。

測試詳細資料

   
規格
  • Device.BusController.SPI.WinRT.Discretional
平台
    支援的版本
    • Windows 10
    • Windows 10 (版本 1511)
    • Windows 10 (版本 1607)
    • Windows 10 (版本 1703)
    • Windows 10 (版本 1709)
    • Windows 10 (版本 1803)
    • Windows 10 版本 1809
    • Windows 10 (版本 1903)
    • Windows 10的下一個更新
    預期執行時間 (分鐘) 15
    類別 部署
    ) 分鐘 (逾時 30
    需要重新開機 false
    需要特殊設定 true
    類型 automatic

     

    其他檔

    此功能區域中的測試可能會有其他檔,包括必要條件、設定和疑難排解資訊,可在下列主題中找到 () :

    執行測試

    您需要下列硬體才能執行測試:

    首先,您必須將測試韌體載入 mbed:

    1. 透過 USB 插入 mbed LPC1768 到您的電腦。 它會顯示為電腦上的卸載式磁片磁碟機。
    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 pin 13 (P0.15/SCK0) 連線到受測裝置上的 SCK 針腳
    2. 將 mbed 針腳 30 (P0.4/CAP2.0) 連接到受測裝置上的 SCK 針腳, (此針腳用於精確的時鐘測量)
    3. 將 mbed pin 11 (P0.18/MOSI0) 連線到受測裝置上的 MOSI 針腳
    4. 將 mbed pin 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. 將Windows.Devices.LowLevel.UnitTests.dll從 %programfiles (x86) %\Windows Kits\10\Hardware Lab Kit\Tests\ < arch > \iot 複製到裝置上的 c:\data。

    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) 。