Interfaz Mipi I3C, NXP P3T1755DP/Q900Z sensor de temperatura (Parte 2)

En nuestro previo artículo de I3C hemos demonstrado la configuración de esta serie que esta escrita para presentar una introducción al interfaz I3C usando la Raspberry Pico 2 y el Sparkfun Logic Analyzer para ilustrar las transacciones de I3C con el decodficador sigrok I3C.

El segundo comando usado en esta serie es el siguiente,

digikey_coffee_cup #> i3c_rstdaa                                                                    
OK(0) 

El Sparkfun Logic Analyzer capturó el comando de RSTDAA I3C (Esto remueve cualquier dirección I3C en la linea si fue previamente asignada),

En la pasada captura podemos ver la transicion de modo “open drain” a modo “push-pull” en la linea I3C. Esos pulsos bien angostos que se observan en la linea de SCL, son requeridos por el standard I3C para separar los artefactos I2C en la linea de los artefactos I3C, ya que los mismos tienen un filtro interno para este propósito. También se observa la dirección de broadcast 0x7E que fue capturada en la linea.

El próximo comando usado es el de rastrear las direcciones I2C para identificar los artefactos I2C en la linea que en este caso es como sigue,

digikey_coffee_cup #>i2c_scan
OK(0),0x48

Esto realiza un rastreo clásico de todos los artefactos de I2C en la linea.

El sensor de temperatura NXP P3T1755DP/Q900Z tiene en este caso una dirección de I2C esclavo de 0x48. Esto se puede observar en la captura previa.

Ahora se procede a emitir el comando I3C de rastreo,

digikey_coffee_cup #>i3c_scan
OK(0),0x00,0x48,0x7e

Aqui se ve la dirección de esclavo I3C previamente identificada como 0x48. En este punto se procede a enviar el siguiente comando I3C llamado I3C_ENTDAA,

digikey_coffee_cup #> i3c_entdaa 0x21
OK(0),0x02,0x36,0x15,0x2a,0x00,0x90,0x03,0x63

Este comando permite que el controlador haga la inicialización del artefacto I3C entrando en el proceso de asignación de direcciones dinámica como 0x21. El esclavo I3C no participa si el artefacto ya tiene una dirección asignada del tipo I3C. Ahora ya tenemos asignada la dirección I3C en el esclavo, podemos verificar que ha sido asignada apropiadamente con el siguiente comando,

digikey_coffee_cup #> i3c_scan                                                                                                                    
OK(0),0x21,0x7e 

Ahora el Raspberry Pico 2 via el terminal minicom ha confirmado la asignación dinámica como 0x21. (0x7E es la dirección broadcast)

En este punto, podemos leer el sensor de temperatura NXP P3T1755DP/Q900Z el conocido campo I3C Provisional-ID que es un campo 6-byte read-only (48 bits) word con la siguente información:

• 15 bits con el nombre del manufacturero, unico por manufacturero (por ejemplo, NXP)

• 1 bit indicando si el artefacto tiene un ID aleatorio o estructurado conocido como Provisional-ID

• 16 bits con la identificación del artefacto, asignado por el manufacturero

• 4 bits los cuales proveen la información del artefacto (por ejemplo, la dirección del puerto binario de entrada)

• 12 bits para identificar la revision del artefacto, asignado por el manufacturero NXP

La composición exacta del Mipi-I3C Provisional-ID se muestra en la Tabla 5 y Tabla 6 con data detallada en la documentación de especificación sensor de temperatura NXP P3T1755DP/Q900Z.

Para realizar una lectura de este ID I3C provisional del artefacto, se realiza el siguiente comando SDR CCC Direct Read en la dirección 0x8D (Bus characterization register (BCR) en la Tabla 9)

y se leen estos 6 bytes de la dirección de BCR 0x8D del esclavo I3C con dirección 0x21 como sigue,

digikey_coffee_cup #> i3c_sdr_ccc_direct_read 0x21 0x8d 6                                                                                         
OK(0),0x02,0x36,0x15,0x2a,0x00,0x90   

Los 6 bytes 0x02,0x36,0x15,0x2a,0x00,0x90 de la data recibida por I3C, son la misma que el I3C provisional ID (48 bits) por la tabla previa en el NXP P3T1755DP/Q900Z temperature sensor de su especificación, y de esta manera se confirma una existosa transacción I3C desde la Raspberry Pico 2 via I3C.

En el próximo artículo estaremos mostrando como leer la temperatura via I3C del sensor de temperatura NXP P3T1755DP/Q900Z.

Que tenga un buen día.

Este artículo está disponible en inglés aquí.

This article is available in english here.

2 Likes