Pruebas de verificación de frecuencia del reloj SPI WinRT (mbed LPC1768 obligatorio)
Las pruebas SPI realizan pruebas funcionales y de esfuerzo de los controladores SPI expuestos al modo de usuario a través de las API de WinRT Windows.Devices.Spi. El ámbito de las pruebas incluye:
- Comprobación de que un controlador SPI con el nombre descriptivo especificado es accesible desde el modo de usuario.
- Compruebe que los datos se envían y reciben correctamente en un intervalo de modos SPI, frecuencias de reloj, longitudes de bits de datos y longitudes de transferencia.
- La comprobación no hay huecos entre bytes dentro de una transferencia. Algunos dispositivos como tiras LED y convertidores analógicos a digitales requieren una señal de reloj ininterrumpida.
- Compruebe que la velocidad del reloj real usada está dentro del 15 % del valor solicitado.
- Comprobación de que, cuando se intenta realizar una transferencia con una longitud de búfer que no es un múltiplo del intervalo, se produce un error en la transferencia con STATUS_INVALID_PARAMETER y no se genera ninguna actividad en el bus. El paso viene determinado por DataBitLength de la siguiente manera:
DataBitLength | Intervalo |
4 - 8 | 1 |
9 - 16 | 2 |
17 - 32 | 4 |
Las pruebas se ejecutan en un LPC1768 conectado externamente. El mbed LPC1768 es una popular plataforma de prototipos de microcontrolador que se puede comprar de una variedad de minoristas en línea, como Sparkfun, Digikey y Adafruit. Programar el mbed con la imagen de firmware de prueba es tan sencillo como arrastrar y colocar la imagen de firmware en el dispositivo de almacenamiento masivo. El código fuente del firmware está disponible en github. A continuación se proporcionan instrucciones detalladas sobre cómo preparar los mbed y ejecutar las pruebas.
Detalles de las pruebas
Especificaciones |
|
Plataformas | |
Versiones admitidas |
|
Tiempo de ejecución esperado (en minutos) | 15 |
Categoría | Desarrollo |
Tiempo de espera (en minutos) | 30 |
Requiere reinicio | false |
Requiere una configuración especial | true |
Tipo | automatic |
Documentación adicional
Las pruebas de este área de características pueden tener documentación adicional, incluidos los requisitos previos, la configuración y la información de solución de problemas, que se pueden encontrar en los temas siguientes:
Ejecución de la prueba
Necesitará el siguiente hardware para ejecutar las pruebas:
- mbed LPC1768
- Placa de pruebas
- Cables de salto
En primer lugar, debe cargar el firmware de prueba en el mbed:
- Conecta el LPC1768 mbed a través de USB a tu PC. Se mostrará como una unidad extraíble en su PC.
- Abrir la unidad en el Explorador de archivos
- Copie c:\Archivos de programa (x86)\Windows Kits\10\Hardware Lab Kit\Tests\x86\iot\busses-tester-mbed_LPC1768.bin en la unidad.
- Presione el botón en el mbed para restablecer el microcontrolador.
A continuación, conecte el mbed al controlador SPI bajo prueba. Para encender el mbed, puedes conectarlo a través de USB a tu dispositivo bajo prueba o conectar las patillas VIN y GND directamente a las patillas de alimentación del dispositivo bajo prueba. Realice las siguientes conexiones entre el dispositivo en prueba y el mbed: (pinout mbed),
- Conectar el pin mbed 13 (P0.15/SCK0) al pin SCK del dispositivo en prueba
- Conecte el pin mbed 30 (P0.4/CAP2.0) al pin SCK del dispositivo sometido a prueba (este pin se usa para la medición precisa del reloj)
- Conectar el pin mbed 11 (P0.18/MOSI0) al pin MOSI del dispositivo bajo prueba
- Conecte mbed pin 12 (P0.17/MISO0) al pin MISO en el dispositivo bajo prueba
- Conecte el pin mbed 14 (P0.16/SSEL0) al pin De selección de chip en el dispositivo bajo prueba
- Conexión de mbed GND a un pin de GND en el dispositivo en prueba
Ahora puede programar las pruebas en HLK Studio.
Solución de problemas
Para solucionar problemas genéricos de errores de prueba de HLK, consulte Solución de problemas de errores de prueba de HLK de Windows.
Se recomienda ejecutar las pruebas en la línea de comandos para obtener información sobre los errores y para iterar rápidamente en las soluciones. También se recomienda enlazar un analizador lógico, como salae. Puede ser difícil o imposible determinar la causa de un error sin la capacidad de inspeccionar el tráfico de autobús.
A continuación se muestra cómo ejecutar las pruebas en la línea de comandos:
Copiar %programfiles(x86)%\Windows Kits\10\Testing\Runtimes\TAEF\<arch>\MinTe a c:\data\minte
Copie Windows.Devices.LowLevel.UnitTests.dll de %programfiles(x86)%\Windows Kits\10\Hardware Lab Kit\Tests\arch>\<iot a c:\data en el dispositivo.
Telnet o ssh en el dispositivo
Cambio de directorios a c:\data
Ejecute las pruebas:
minte\te windows.devices.lowlevel.unittests.dll /name:SpiHlk*
Uso de la prueba de línea de comandos:
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: el nombre de la prueba que se va a ejecutar, que puede incluir caracteres comodín. Ejemplos: /name:SpiHlk*, /name:SpiHlkTests::VerifyClockFrequency#metadataSet0
- friendly_name: el nombre descriptivo del controlador SPI sometido a prueba. Si se omite, se usa el primer controlador enumerado. Ejemplos: /p:SpiFriendlyName=SPI1
- clock_frequency: fuerza una prueba para usar la frecuencia del reloj especificada. De forma predeterminada, la frecuencia del reloj procede de los datos de prueba, que está diseñado para proporcionar cobertura a través de un intervalo de frecuencias. Este parámetro debe omitirse en circunstancias normales. Ejemplo: /p:ClockFrequency=15000000
- data_bit_length: forzar una prueba para usar la longitud de bits de datos especificada. Ejemplo: /p:DataBitLength=9
- SpiMode: fuerza una prueba para usar el modo SPI especificado. Ejemplo: /p:SpiMode=2
- length: obliga a una prueba a usar la longitud del búfer especificada para la transferencia. Ejemplo: /p:length=128
- write_length: fuerza una prueba TransferSequential para usar la longitud del búfer especificada para la parte de escritura de la transferencia. Ejemplo: /p:WriteLength=8
- read_length: fuerza una prueba TransferSequential para usar la longitud del búfer especificada para la parte de lectura de la transferencia. Ejemplo: /p:ReadLength=16
- extra_clocks: especifique un ajuste para el número de relojes por byte que usan las pruebas cuando calcula los tiempos activos esperados del reloj para las mediciones de rendimiento, la detección de brechas y la validación de la frecuencia del reloj. Por ejemplo, el controlador SPI BCM2836 espera un ciclo de reloj adicional después de cada byte, por lo que para compensar este comportamiento se deben ajustar las medidas. Ejemplo: /p:ExtraClocks=1.5
- /p:Verbose=true: active la salida detallada. Esto hará que se volcarán todos los búferes en la consola cuando se produzca un error. De forma predeterminada, solo se muestra el primer byte no coincidente.
Ejemplos:
Enumerar las pruebas disponibles:
minte\te windows.devices.lowlevel.unittests.dll /list
Ejecute las pruebas de validación de E/S:
minte\te windows.devices.lowlevel.unittests.dll /name:SpiHlkIoTests*
Ejecute las pruebas de detección de brechas:
minte\te windows.devices.lowlevel.unittests.dll /name:SpiHlkGapTests*
Ejecute la validación de frecuencia del reloj y las pruebas de zancadas:
minte\te windows.devices.lowlevel.unittests.dll /name:SpiHlkTests*
Ejecute una prueba específica en una instancia específica del controlador SPI:
minte\te windows.devices.lowlevel.unittests.dll /name:SpiHlkIoTests#2::VerifyTransferSequential#metadataSet9 /p:SpiFriendlyName=SPI1
Una herramienta que puede ayudar con la solución manual de problemas es SpiTestTool. SpiTestTool es una utilidad sencilla para interactuar con SPI desde la línea de comandos.
Más información
Parámetros
Nombre de parámetro | Descripción de los parámetros |
---|---|
SpiFriendlyName | Nombre descriptivo del controlador SPI sometido a prueba (por ejemplo, SPI0). |