質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
86.12%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

組み込み開発

組み込み開発とは、スマートフォンや家電、自動車などに組み込まれているコンピューターシステムの開発のことです。特定の用途に特化しており、限られた機能のための開発を指します。組み込み開発で作られた機器を組み込み機器と呼び、近年ではPCのオペレーションシステム(OS)にも採用されています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

受付中

SPI通信とI2C通信との違い

hiro329
hiro329

総合スコア19

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

組み込み開発

組み込み開発とは、スマートフォンや家電、自動車などに組み込まれているコンピューターシステムの開発のことです。特定の用途に特化しており、限られた機能のための開発を指します。組み込み開発で作られた機器を組み込み機器と呼び、近年ではPCのオペレーションシステム(OS)にも採用されています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

2回答

0リアクション

0クリップ

471閲覧

投稿2022/08/10 06:38

前提

SPI通信とI2C通信の整合性について

実現したいこと

I2C通信で、ルネサンスマイコンとsim230ジャイロセンサーとの通信。

発生している問題・エラーメッセージ

I2C通信は、クロックと、リードとライド兼ねた線の二本でできていると認識しております。
ネットで調べた結果、SPI通信は4線式で、4本の線がつながっていないと、通信ができないとの記述がありました。
こうなりますと、現状のGitHubのsim230の開発コードをどのように扱ってけばいいか疑問が出てきました。
sim230ドライバでは、SPIとTWIという通信方式があると鬼呪がありその辺で悩んでおります。

もし、詳しい方がいらして、基本的に、GitHubにある、sim230ドライバのソースと、iio-sim230の違いが判る方がいらっしゃいましたら、教えていただけると幸いです。

そこまでわからないが、SPIとI2C通信について、上記の質問に答えていただける方がいらしゃいましたら、お答え願えると幸いです。

漠然とした質問で申し訳ないのですが、どうぞよろしくお願いいたします。

該当のソースコード

ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/08/10 06:51

こちらの質問が複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

ALOHAMS

2022/08/10 07:05

sim230というジャイロセンサーを検索してみたんですが見つからなかったのでマニュアルとかデータシートのあるページを教えてもらえますか? それとgithubにあるsim230のコードのリンクなども貼っていただけると答えやすくなるかもしれません
hiro329

2022/08/10 07:24

for (retry = 0; retry < SMI230_MAX_RETRY_I2C_XFER; retry++) { if (i2c_transfer(smi230_i2c_adapter, msg, ARRAY_SIZE(msg)) > 0) break; usleep_range(SMI230_I2C_WRITE_DELAY_TIME * 1000, SMI230_I2C_WRITE_DELAY_TIME * 1000); } 以上のようなソースがあります。 この場合、ネットで調べたところ、i2c_transferというのは、特別に個人で作った関数として定義しなくても、組み込み関数として使用できるよなことが書いてあったのですが、間違っていますのでしょうか。 やはり、このi2c_transferこの科数は個別で定義してやって、関数を起こす必要性があるのでしょうか。 わかりにくい質問で申し訳ないのですが、よろしくお願いいたします。
jimbe

2022/08/10 07:32

ご質問やコメントで「ネットで調べた」と言われていますが、具体的な URL を表示されたほうが良いように思います。
thkana

2022/08/10 14:30

「なにが問題なのか」よくわからないのですが... SMI230(SIM230で探してそんなの見つからなくてしばらく悩んでしまった...)のハードウェア的な設定でI2CかSPIを切り替えて、選んだI/Fで接続する話であって、I2CとSPIを比べてどうこういう話ではないと思うのですが?
hiro329

2022/08/11 00:22

おっしゃる通りのことです。 とりあえず、開発環境を見せていただいて、i2c_transferという関数があったので、これを使うんだなというところで止まっております。 基本的な質問なのですが、 int i2c_transfer( 引数 ) { 処理       ret = __i2c_transfer( 引数 );  //  個々の書き方???教えていただけませんか??? 処理 } のように書かれています。 このときの、__は、何を意味するのでしょうか。 まだ、組み込みを始めて間もないのでわからないことだらけで、基本的な質問で申し訳ないのですが、お答え願えると幸いです。 個人的には、 __関数名   と書かれていたら、割り込みかな??? という今まで認識でしたが、違いますでしょうか。 どうぞよろしくお願いいたします。
thkana

2022/08/11 01:58 編集

そもそもがターゲットは「ルネサンスマイコン」なのではないですか? Linuxのデバイスドライバのコードの詳細を見て、何を悩むのでしょうか。 (昔はSH4でLinuxが走った気もしますが、今もLinuxが走るマイコンがあって、それを使う話ですか? 追記:RZ/GってのはARM-AでLinuxが走るんですね。それの話?) > __は、何を意味するのでしょうか 言語規則上はなんの意味もありません。シンボルの一部というだけです。 慣習としては、内部的に使われる特定の機能であることを示すようなところに使われることが多いと思います。'_'+大文字で始まるシンボルはC++では予約語だったりするので、それとの干渉を避けるため'_'を2個つけるとかいうところもあるかと思います。 Linuxのソースの慣習としてなにかあるかもしれませんが、私は知りません。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

組み込み開発

組み込み開発とは、スマートフォンや家電、自動車などに組み込まれているコンピューターシステムの開発のことです。特定の用途に特化しており、限られた機能のための開発を指します。組み込み開発で作られた機器を組み込み機器と呼び、近年ではPCのオペレーションシステム(OS)にも採用されています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。