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은 Sparkfun, DigikeyAdafruit를 비롯한 다양한 온라인 소매업체에서 구입할 수 있는 자주 사용되는 마이크로컨트롤러 프로토타이핑 플랫폼입니다. 테스트 펌웨어 이미지로 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을 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. 테스트 중인 디바이스의 GND 핀에 mbed GND를 연결합니다.

    이제 HLK 스튜디오에서 테스트를 예약할 수 있습니다.

    문제 해결

    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. 텔넷 또는 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 - 와일드카드를 포함할 수 있는 실행할 테스트의 이름입니다. Examples: /name:SpiHlk*, /name:SpiHlkTests::VerifyClockFrequency#metadataSet0
    • friend_name - 테스트 중인 SPI 컨트롤러의 식별 이름입니다. 생략하면 첫 번째 열거 컨트롤러가 사용됩니다. Examples: /p:SpiFriendlyName=SPI1
    • clock_frequency - 테스트가 지정된 클록 주파수를 사용하도록 합니다. 기본적으로 클록 주파수는 테스트 데이터에서 가져오며 주파수 범위에 걸쳐 적용되도록 설계되었습니다. 일반적인 상황에서는 이 매개 변수를 생략해야 합니다. Example: /p:ClockFrequency=1500000
    • data_bit_length - 테스트가 지정된 데이터 비트 길이를 사용하도록 합니다. Example: /p:DataBitLength=9
    • SpiMode - 지정된 SPI 모드를 사용하도록 테스트를 강제 실행합니다. Example: /p:SpiMode=2
    • length - 테스트가 전송을 위해 지정된 버퍼 길이를 사용하도록 합니다. 예: /p:length=128
    • write_length - TransferSequential 테스트가 전송의 쓰기 부분에 대해 지정된 버퍼 길이를 사용하도록 합니다. Example: /p:WriteLength=8
    • read_length - TransferSequential 테스트가 전송의 읽기 부분에 대해 지정된 버퍼 길이를 사용하도록 합니다. Example: /p:ReadLength=16
    • extra_clocks - 성능 측정, 갭 검색 및 클록 주파수 유효성 검사를 위해 예상 클록 활성 시간을 컴퓨팅할 때 테스트가 사용하는 바이트당 클록 수에 대한 조정을 지정합니다. 예를 들어 BCM2836 SPI 컨트롤러는 각 바이트 후에 추가 클록 주기를 기다리므로 이 동작을 보상하려면 측정을 조정해야 합니다. Example: /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).