これまでのこれまでのパート1およびパート2のI3C入門記事に引き続き、この記事でも同じセットアップを使用します。この記事を進める前に、これらの記事を参照してください。これらの記事ではSparkfun Logic Analyzerを使用しています。
NXPの P3T1755DP/Q900Z 温度センサに対してI3Cアドレスを動的に割り当て、適切なI3Cアドレスが割り当てられていることを確認し、NXPの P3T1755DP/Q900Z 温度センサのプロビジョナルIDを読み取った後、次のステップとして、デバイスのコンフィギュレーションレジスタにおいて温度センサを有効化します。
コンフィギュレーションレジスタはポインタ値0x01に配置されています。
また、このコンフィギュレーションレジスタは次のように定義されています。
前回の記事で使用したコマンドを再掲し、以下のI3Cコマンドを実行します。
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
ポインタ0x01に配置されているコンフィギュレーションレジスタを読み取るため、次のI3C SDRコマンドを使用します。
digikey_coffee_cup #> i3c_sdr_write 0x21 0x01
OK(0)
digikey_coffee_cup #> i3c_sdr_read 0x21 1
OK(0),0x28
初期状態では、センサは55msの変換時間でアクティブ状態になっています。以下のようにI3C SDR書き込み/読み取りコマンドを実行し、ポインタ0x00から NXPの P3T1755DP/Q900Z 温度センサの2バイトのデータを読み取ります。
digikey_coffee_cup #> i3c_sdr_writeread 0x21 0x00, 2
OK(0),0x17,0x80,
この0x17,0x80がセンサから取得した温度データです。
この温度は次のようにして摂氏に変換されます。
0x178 = 376(10進数)
次に、この数値376に係数0.0625°Cを掛けます。MSBが0なので温度は正であり、よって23.5°C、すなわち74.3°Fとなります。
I3Cを介して温度センサを無効化するには、以下のように実行します。
digikey_coffee_cup #> i3c_sdr_writeread 0x21 0x01,0x29 1
OK(0),0x29
無効化を確認するため、温度レジスタ(2 バイト)を読み取ります。このとき値は変化しないはずです。
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
上記のように、無効化が確認できます。制御レジスタを使用して I3C経由でNXPの P3T1755DP/Q900Z 温度センサを再度有効化するには、以下のI3Cコマンドを実行します。
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
上記のようにセンサをポーリングすることで、NXP P3T1755DP/Q900Z 温度センサは現在アクティブモードになっており、このI3CデモにおけるI3Cのトランザクションが確認できます。
この記事では、Raspberry Pico 2 を使用し、I3C SDR書き込みコマンドおよび読み取りコマンドによってNXPの P3T1755DP/Q900Z 温度センサを読み取る方法を示しました。本製品はDigiKeyで入手可能です。
どうぞ素晴らしい一日を!
Este artículo está disponible en español aquí.
この記事はスペイン語でこちらからご覧いただけます。


