🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
mbed

mbed(エンベッド)は、Webサイト上でC++を使って開発を行う、ワンボードマイコンのプロトタイピングツールです。PCに開発環境をインストールする必要がなく、Webにアクセスできればどこにいても開発を行うことができます。

Q&A

解決済

2回答

2400閲覧

I2C通信を用いたデータ読み込みについて

okioki

総合スコア5

mbed

mbed(エンベッド)は、Webサイト上でC++を使って開発を行う、ワンボードマイコンのプロトタイピングツールです。PCに開発環境をインストールする必要がなく、Webにアクセスできればどこにいても開発を行うことができます。

0グッド

0クリップ

投稿2019/12/19 04:26

編集2019/12/19 04:28

現在mbedでi2c通信を試みているのですが、サンプルコードの中での読み込み要求がどうなっているのかがわかりません。
例えば以下の様な例です。

#include "mbed.h" I2C i2c(p9, p10); // sda, scl Serial pc(USBTX, USBRX); // tx, rx const int addr = 0x70; // define the I2C Address int main() { char cmd[2]; while(1) { cmd[0] = 0x0; // pointer to command register cmd[1] = 0x51; // Start ranging, results in cm i2c.write(addr, cmd, 2); // Send command string wait(0.07); // Could also poll, 65ms is typical // Set pointer to location 2 (first echo) cmd[0] = 0x2; i2c.write(addr, cmd, 1); i2c.read(addr | 1, cmd, 2); // read the two-byte echo result // print the ranging data to the screen float echo = 0.01 * ((cmd[0] << 8) + cmd[1]); pc.printf("Range = %.2f\n", echo); wait(0.1); } }

参考サイト

このコードにおけるcmd[]の中身の意味が分かりません。

I2C通信自体の知識は上記のサイトや他のサイトである程度勉強しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

読み書きするアドレスやデータの意味についてはデバイスの仕様書を見ろで終わりですが、
もしかして知りたいのはI2Cでの読み書きの仕方ではないでしょうか。

I2Cでのデバイスとのデータのやり取りはふつう、次のように行われます。

  • 指定のアドレスへの書き込み

start、デバイスのアドレス+write、(デバイス内の)メモリアドレス、データ、stop

  • 指定のアドレスからの読み出し

start、デバイスのアドレス+write、メモリアドレス、stop、
start、デバイスのアドレス+read、以下必要なだけ読む、NACK、stop

このあたりの流れはI2C接続のEEPROMの仕様書を見ると分かりやすいと思います。

ところで、「cmd」というコマンドっぽい名前の変数で入っているのがアドレス・送信するコマンド・受信するデータと様々なのは名前が悪い気がしますね。

投稿2019/12/21 09:48

ikadzuchi

総合スコア3047

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

okioki

2019/12/22 04:49

ありがとうございます。 質問なのですが、上記コードでは読み出しの際にcmdが渡されていると思いますが、これにはどのような意味があるのでしょうか?
ikadzuchi

2019/12/22 13:54

cmdに読み出されたデータが入ってくるものと思われます。
guest

0

cmdの中身はI2Cで接続しているセンサーなどのデバイスの仕様によって異なります。
その仕様を見て、適切な値を設定・取得することでデバイスの値を読み取ったり、デバイスに指示を与えたりすることができるものです。
デバイスの仕様をご覧いただくしかありません。

投稿2019/12/19 05:37

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問