Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las pruebas de I2C realizan pruebas funcionales y de esfuerzo de controladores I2C expuestos al modo de usuario a través de las API de WinRT Windows.Devices.I2c. Las pruebas se dividen en dos partes: pruebas funcionales básicas y de esfuerzo, y pruebas funcionales avanzadas. El ámbito de las pruebas de las pruebas funcionales básicas incluye:
- Compruebe que se puede acceder a un controlador I2C con el nombre descriptivo especificado desde el modo de usuario.
- Compruebe que los datos se escriben correctamente en un intervalo de velocidades de reloj y longitudes de búfer de hasta 8 bytes (tamaño de página EEPROM).
- Comprobación de que los datos se leen correctamente en un intervalo de velocidades de reloj y longitudes de búfer.
- Comprobación de que las secuencias de escritura-reinicio-lectura (WriteRead) se ejecutan correctamente en un rango de velocidades de reloj y longitudes de búfer.
- Compruebe que, cuando se intenta escribir, leer o realizar una operación de escritura/lectura en una dirección de esclavo que no es reconocida, el controlador devuelve STATUS_NO_SUCH_DEVICE. I2cDevice::Write/Read/WriteRead() se notifica como HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) y se notifica mediante I2cDevice::WritePartial/ReadPartial/WriteReadPartial() como I2cTransferStatus::SlaveAddressNotAcknowledged.
- Compruebe que las API y los controladores funcionan correctamente en condiciones de estrés. Las pruebas de esfuerzo escriben y leen de dos EEPROM simultáneamente con identificadores de dispositivo independientes durante una duración prolongada.
El ámbito de las pruebas de las pruebas funcionales avanzadas incluye:
- Compruebe que los datos se escriben correctamente para las longitudes de búfer de hasta 16384 bytes.
- Compruebe que se genera una condición de reinicio de I2C en respuesta a una secuencia WriteRead.
- Verifique que cuando el dispositivo subordinado envía un NAK mientras el maestro sigue escribiendo bytes, el controlador complete la solicitud con STATUS_SUCCESS e informe del número real de bytes escritos a través de la información de la solicitud. Esto se denomina transferencia parcial y se notifica mediante WritePartial() y WriteReadPartial() como I2cTransferStatus::P artialTransfer.
- Verificación de que se permite la extensión del reloj hasta 500 ms y no provoca un fallo en la transferencia.
- Verifique que cuando el dispositivo subordinado mantiene la línea del reloj baja durante más de 10 segundos, el controlador complete la transferencia en un máximo de 10 segundos con un código de error. El código de error debe ser STATUS_IO_TIMEOUT, pero esto no se comprueba por motivos de compatibilidad.
Las pruebas funcionales básicas y las pruebas de esfuerzo se ejecutan en dos EEPROM conectados externamente. Las pruebas funcionales avanzadas se ejecutan en un LPC1768 mbed que ejecuta firmware personalizado. El LPC1768 mbed es una popular plataforma de prototipos de microcontrolador que se puede comprar de una variedad de minoristas en línea, como Farnell, Digikey y Adafruit. Actualizar el firmware del mbed es tan sencillo como arrastrar y quitar un archivo. El código fuente del firmware está disponible en github. A continuación se proporcionan instrucciones sobre cómo preparar los mbed y ejecutar las pruebas.
Detalles de la prueba
Especificaciones |
|
Plataformas | |
Versiones admitidas |
|
Tiempo de ejecución esperado (en minutos) | 5 |
Categoría | Desarrollo |
Tiempo de espera (en minutos) | 10 |
Requiere reinicio | falso |
Requiere una configuración especial | cierto |
Tipo | Automático |
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
Ejecución de las pruebas funcionales y de esfuerzo básicas
Necesitará el siguiente hardware para ejecutar las pruebas:
- Atmel AT24HC serie EEPROMs qt. 2
- 10k resistor qt. 2
- Placa de pruebas
- Alambres
Conecte los EEPROM como se muestra en el diagrama siguiente y conecte SDA y SCL al dispositivo en prueba.
Ahora es posible programar las pruebas funcionales y de esfuerzo básicas desde el administrador de HLK.
Ejecución de las pruebas funcionales avanzadas
Las pruebas funcionales avanzadas comprueban el comportamiento de NACKing, las condiciones del bus colgado, el ajuste del reloj y los inicios repetidos. Las pruebas requieren que un LPC1768 de mbed ejecute firmware personalizado para conectarse al dispositivo en prueba. Antes de ejecutar las pruebas, debe cargar el firmware HLK en el LPC1768 mbed. Aquí se muestra cómo actualizar el firmware:
- Conecte el LPC1768 mbed a través de USB a su PC. Se mostrará como una unidad extraíble en su ordenador.
- Abra la unidad en el Explorador de archivos.
- Copia c:\Archivos de programa (x86)\Windows Kits\10\Hardware Lab Kit\Tests\x86\iot\busses-tester-mbed_LPC1768.bin al mbed
- Presione el botón del mbed para restablecer el microcontrolador.
A continuación, conecte el mbed al dispositivo en prueba. Conecte el mbed a través de USB al dispositivo en prueba. A continuación, realice las conexiones I2C (pinout mbed),
- Conectar el pin mbed 9 (P0.0/SDA) al pin SDA del dispositivo en prueba
- Conecte el pin mbed 10 (P0.1/SCL) al pin SCL del dispositivo en prueba.
- Conexión de GND mbed a un pin de GND en el dispositivo sometido a prueba
El mbed tiene resistencias de extracción internas habilitadas en las líneas SDA y SCL y no requiere resistencias de extracción externas.
Ahora puede programar las pruebas funcionales avanzadas desde el administrador de HLK.
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. Aquí 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 su dispositivo.
Telnet o ssh en el dispositivo
Cambio de directorios a c:\data
Ejecute las pruebas:
minte\te windows.devices.lowlevel.unittests.dll /name:I2c*
Uso de prueba de línea de comandos:
minte\te windows.devices.lowlevel.unittests.dll [/name:test_name] [/select:select_clause] [/p:I2cFriendlyName=friendly_name] [/p:Duration=duration]
- test_name: el nombre de la prueba que se va a ejecutar, que puede incluir caracteres comodín. Ejemplos: /name:I2c*, /name:I2cEepromWriteTests#metadataSet0::VerifyWrite#metadataSet0
- select_clause: una cláusula de selección de TAEF. Ejemplo: /select:"@name='I2c*' y not(@name='I2cTestsEx*')"
- friendly_name: el nombre amistoso del controlador I2C en prueba. Si se omite, se usa el primer controlador enumerado. Ejemplos: /p:I2cFriendlyName=I2C0
- duración. tiempo durante el que se ejecutan las pruebas de esfuerzo. Ejemplos: /p:Duration=10s (10 segundos), /p:Duration=1m (1 minuto), /p:Duration=2h (2 horas), /p:Duration=1d (1 día)
Ejemplos:
Para ejecutar las pruebas funcionales básicas,
minte\te windows.devices.lowlevel.unittests.dll /select:"@name='I2c*' and not(@name='I2cTestsEx*')"
Para ejecutar las pruebas funcionales avanzadas,
minte\te windows.devices.lowlevel.unittests.dll /name:I2cTestsEx::*
Para ejecutar las pruebas en una instancia específica del controlador I2C, introduzca el nombre amigable en el parámetro de prueba I2cFriendlyName.
minte\te windows.devices.lowlevel.unittests.dll /name:I2c* /p:I2cFriendlyName=I2C0
Para ejecutar una prueba específica, pase el nombre de prueba completo al parámetro /name:
minte\te windows.devices.lowlevel.unittests.dll /name:I2cNonexistentSlaveAddressTests::TestWriteRead
Para ejecutar las pruebas de esfuerzo durante las 8 horas recomendadas, ejecute
minte\te windows.devices.lowlevel.unittests.dll /name:I2cStressTests::StressIoConcurrent /p:Duration=8h
Una herramienta que puede ayudar con la solución de problemas manual es I2cTestTool. I2cTestTool es una utilidad sencilla para interactuar con I2C desde la línea de comandos.
Más información
parámetros de
Nombre del parámetro | Descripción del parámetro |
---|---|
I2cFriendlyName | Nombre descriptivo del controlador I2C sometido a prueba (por ejemplo, I2C0). |