From the previous I3C introductory articles as part 1 and part 2 here we continue with the same setup previously described in those. Please refer to those before proceeding with this post. The Sparkfun Logic Analyzer was used in those.
After assigning the I3C address dynamically for the NXP P3T1755DP/Q900Z temperature sensor the next step and confirming the proper I3C address asssignment and reading the Provisional ID of the NXP P3T1755DP/Q900Z temperature sensor now we can proceed to activate the temperature sensor in the configuration register of the device,
The configuration register is located at pointer value 0x01
and this configuration register is defined as,
Re-stating previous commands from previous articles, proceed with the following I3C commands,
digikey_coffee_cup #> i3c_clk 100
OK(0)
digikey_coffee_cup #> i3c_rstdaa
OK(0)
digikey_coffee_cup #> i3c_entdaa 0x21
OK(0),0x02,0x36,0x15,0x2a,0x00,0x90,0x03,0x63
Use the following I3C SDR command to read the configuration register located at pointer 0x01,
digikey_coffee_cup #> i3c_sdr_write 0x21 0x01
OK(0)
digikey_coffee_cup #> i3c_sdr_read 0x21 1
OK(0),0x28
The initial state is that the sensor is active for 55 mSec conversion time. Perform I3C SDR Write-Read command to read the 2 bytes of the NXP P3T1755DP/Q900Z temperature sensor from pointer 0x00 as follows,
digikey_coffee_cup #> i3c_sdr_writeread 0x21 0x00, 2
OK(0),0x17,0x80,
The 0x17,0x80 is the temperature from the sensor,
So this temperature is converted to Celsius as follows,
0x178 = 376 (base 10)
then multiply this number 376 by the factor 0.0625 °C, since the temperature is positive using the MSB as the indicator hence the temperature is 23.5 °C which is 74.3 °F.
To deactivate the temperature sensor via I3C do this,
digikey_coffee_cup #> i3c_sdr_writeread 0x21 0x01,0x29 1
OK(0),0x29
to confirm the deactivation, read the temperature registers (2 bytes) and it should not change in value,
digikey_coffee_cup #> i3c_sdr_writeread 0x21 0x00, 2
OK(0),0x17,0xa0
digikey_coffee_cup #> i3c_sdr_writeread 0x21 0x00, 2
OK(0),0x17,0xa0
.....
digikey_coffee_cup #> i3c_sdr_writeread 0x21 0x00, 2
OK(0),0x17,0xa0
The deactivation is confirmed as shown above. To reactivate the NXP P3T1755DP/Q900Z temperature sensor via the control register perform this I3C command,
digikey_coffee_cup #> i3c_sdr_writeread 0x21 0x01,0x28 1
OK(0),0x28
digikey_coffee_cup #> i3c_sdr_read 0x21 1
OK(0),0x28
digikey_coffee_cup #> i3c_sdr_writeread 0x21 0x00, 2
OK(0),0x17,0x70
digikey_coffee_cup #> i3c_sdr_writeread 0x21 0x00, 2
OK(0),0x17,0x70
digikey_coffee_cup #> i3c_sdr_writeread 0x21 0x00, 2
OK(0),0x17,0x70
digikey_coffee_cup #> i3c_sdr_writeread 0x21 0x00, 2
OK(0),0x17,0x80
digikey_coffee_cup #> i3c_sdr_writeread 0x21 0x00, 2
OK(0),0x17,0x90
digikey_coffee_cup #> i3c_sdr_writeread 0x21 0x00, 2
OK(0),0x17,0x80
digikey_coffee_cup #> i3c_sdr_writeread 0x21 0x00, 2
OK(0),0x17,0x90
digikey_coffee_cup #> i3c_sdr_writeread 0x21 0x00, 2
OK(0),0x17,0x90
digikey_coffee_cup #> i3c_sdr_writeread 0x21 0x00, 2
OK(0),0x17,0x90
digikey_coffee_cup #> i3c_sdr_writeread 0x21 0x00, 2
OK(0),0x17,0xa0
By polling the sensor as shown above, the NXP P3T1755DP/Q900Z temperature sensor is now in active mode confirming the I3C transactions in this I3C demo.
This article has shown how to read via I3C SDR write and read commands with the Raspberry Pico 2 the NXP P3T1755DP/Q900Z temperature sensor and is available at DigiKey.
Have a great day!
Este artículo está disponible en español aquí.
This article is available in spanish here.


