エンベデッドシステムスペシャリスト 2024年 午前2 問04
問題文
マイコンと、表に示す二つのセンサーとをI²Cで接続した。センサーからマイコンへのデータの読込みは、アドレス1、内部アドレス、アドレス2の順にアドレスを送信した後に行う。アドレス1は対象センサーアドレスを左に1ビットシフトして、LSBを0にしたものであり、アドレス2は対象センサーアドレスを左に1ビットシフトして、LSBを1にしたものである。4A、01、4Bの順にアドレスを送信したときにマイコンに読み込まれるデータはどれか。ここで、リスタートコンディションは自動的に行われるものとし、アドレスは16進数表記である。

選択肢
ア:X軸角速度
イ:X軸加速度
ウ:Y軸角速度(正解)
エ:Y軸加速度
🔒 解説は解答すると表示されます
I²Cのアドレス指定と読出し【午前2解説】
正解の理由
ウの「Y軸角速度」です。
I²Cでは、センサーの7ビットアドレスを左に1ビットシフトし、最下位ビットに書込み/読出しを表す値を付けます。最下位ビットが0なら書込み、1なら読出しです。
送信されたアドレスを確認すると、次のようになります。
- アドレス1の
4A:4Aを右に1ビットシフトすると、センサーアドレスは25です。最下位ビットは0なので、書込み指定です。 - 内部アドレスの
01:センサー内のデータ位置を指定します。 - アドレス2の
4B:センサーアドレスは同じく25で、最下位ビットが1なので、読出し指定です。
センサーアドレス
25はジャイロセンサーを表し、内部アドレス01のデータは「Y軸角速度」です。したがって、マイコンに読み込まれるのはウです。解法ステップ
4Aと4Bの最下位ビットを確認します。
4Aは書込み指定、4Bは読出し指定です。- どちらも右に1ビットシフトし、センサーアドレスを求めます。
4Aと4Bは、どちらもセンサーアドレス25を表します。 - 表から、アドレス
25に対応するセンサーを特定します。
25はジャイロセンサーです。 - 内部アドレス
01に対応するデータを確認します。
ジャイロセンサーの内部アドレス01は「Y軸角速度」です。
選択肢別の誤答解説
- ア:X軸角速度
センサーの特定は合っていますが、内部アドレスを取り違えています。内部アドレス00がX軸角速度です。 - イ:X軸加速度
センサーアドレス2Aの加速度センサーを選んでいます。今回のアドレスは25です。 - ウ:Y軸角速度
センサーアドレス25のジャイロセンサーを選び、内部アドレス01に対応するデータを正しく特定しています。 - エ:Y軸加速度
内部アドレス01は合っていますが、センサーを加速度センサーと誤認しています。加速度センサーのアドレスは2Aです。
よくある誤解
4Aをセンサーアドレスそのものだと考えてしまうことがあります。4Aは7ビットのセンサーアドレスを左に1ビットシフトした値で、最下位ビットは書込み/読出しの指定に使います。4Aと4Bを別のセンサーのアドレスだと考えてしまうことがあります。両者は最下位ビットだけが異なり、どちらもセンサーアドレス25を示します。- 内部アドレス
01をセンサーアドレスと混同しないようにしましょう。内部アドレスは、センサー内のどのデータを読むかを指定します。
補足コラム
この問題では、
4Aの送信で対象センサーと内部アドレスを指定し、その後、リスタートコンディションを挟んで4Bを送信して読出しに切り替えます。リスタートコンディションは通信をいったん終了させずに、続けて読み出すための条件です。FAQ
Q. なぜ
A. 最下位ビットだけが異なり、そのビットが書込み/読出しの指定に使われるためです。残りのビットは同じセンサーアドレスを表します。
4Aと4Bのセンサーアドレスは同じなのですか?A. 最下位ビットだけが異なり、そのビットが書込み/読出しの指定に使われるためです。残りのビットは同じセンサーアドレスを表します。
Q. 内部アドレス
A. いいえ。内部アドレスが示すデータはセンサーごとに異なります。センサーアドレスと内部アドレスの両方を表と照合します。
01だけで、読み出すデータが決まるのですか?A. いいえ。内部アドレスが示すデータはセンサーごとに異なります。センサーアドレスと内部アドレスの両方を表と照合します。
関連キーワード: I²C、7ビットアドレス、R/Wビット、内部アドレス、リスタートコンディション

\ せっかくなら /
エンベデッドシステムスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

