Тесты передачи ввода-вывода SPI WinRT (требуется mbed LPC1768)

Тесты SPI выполняют функциональное и нагрузочное тестирование контроллеров SPI, предоставляемых пользовательскому режиму через API Windows.Devices.Spi WinRT. К область тестирования относятся:

  • Убедитесь, что контроллер SPI с указанным понятным именем доступен из пользовательского режима.
  • Проверка правильности отправки и получения данных в различных режимах SPI, частоте часов, длине битов данных и длине передачи.
  • Проверка отсутствия пробелов между байтами в передаче. Для некоторых устройств, таких как светодиодные ленты и аналого-цифровые преобразователи, требуется непрерывный сигнал часов.
  • Убедитесь, что фактическая скорость использования часов находится в пределах 15 % от запрошенного значения.
  • Убедитесь, что при попытке передачи с длиной буфера, которая не кратна шагу, передача завершается сбоем с STATUS_INVALID_PARAMETER и никаких действий в шине не создается. Шаг определяется DataBitLength следующим образом:
   
DataBitLength Stride
4 - 8 1
9 - 16 2
17 - 32 4

Тесты выполняются для подключенного извне mbed LPC1768. Mbed LPC1768 — это популярная платформа создания прототипов микроконтроллера, которую можно приобрести в различных интернет-магазинах, включая Sparkfun, Digikey и Adafruit. Программирование 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
    Требуется специальная конфигурация Да
    Тип automatic

     

    Дополнительная документация

    Тесты в этой области функций могут содержать дополнительную документацию, включая предварительные требования, сведения о настройке и устранении неполадок, которые можно найти в следующих разделах:

    Запуск теста

    Для выполнения тестов потребуется следующее оборудование:

    • mbed LPC1768
    • монтажная плата;
    • Провода перемычки

    Сначала необходимо загрузить тестовое встроенное ПО в mbed:

    1. Подключите mbed LPC1768 через USB к компьютеру. Он будет отображаться в виде съемного диска на вашем компьютере.
    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. Подключение pin 11 mbed (P0.18/MOSI0) к пин-коду MOSI на тестируемом устройстве
    4. Подключите pin 12 mbed (P0.17/MISO0) к контакту MISO на тестируемом устройстве
    5. Подключите контакт mbed 14 (P0.16/SSEL0) к контакту Выбор микросхемы на тестируемом устройстве
    6. Подключение mbed GND к контакту GND на тестируемом устройстве

    Теперь вы можете запланировать тесты в HLK Studio.

    Устранение неполадок

    Общие сведения об устранении неполадок при тестировании HLK см. в статье Устранение неполадок тестов HLK в Windows.

    Мы рекомендуем запускать тесты в командной строке, чтобы получить представление о сбоях и быстро выполнить итерацию по решениям. Мы также рекомендуем подключить логический анализатор, например 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 — укажите корректировку количества часов в байт, которое тесты используют при вычислении ожидаемого времени активности часов для измерения производительности, обнаружения разрывов и проверки частоты часов. Например, контроллер SPI BCM2836 ожидает дополнительный цикл часов после каждого байта, поэтому для компенсации этого поведения необходимо настроить измерения. Пример: /p:ExtraClocks=1,5
    • /p:Verbose=true — включение подробных выходных данных. Это приведет к тому, что при сбое в консоли будут отправляться целые буферы. По умолчанию отображается только первый несовпадение байтов.

    Примеры:

    Список доступных тестов:

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

    Выполните тесты проверки ввода-вывода:

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