問題タブ [i2c]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2722 参照

linux - 32ビットレジスタアドレスをI2C_RDWRに渡す

I2C_RDWR ioctlを使用して、32ビットおよび16ビットのレジスタアドレスにデータを書き込むことができるI2Cプログラムを作成する必要があります。

私が知っていることから、デバイスアドレスとデータは、Linuxi2cドライバーで定義された構造i2c_msgの同じバッファーbufを使用してデバイスに一緒に渡されます。

現在、私は以下のように32ビットレジスタアドレスを渡しています:

レジスタアドレスが16ビットの場合、次のコードが実行されます。

アドレスが含まれているバッファ配列の数をデバイスに通知するにはどうすればよいですか?

また、このコードは正しいですか?

残念ながら、現在テストするI2Cデバイスはありません。

どんな助けでも大歓迎です。

ありがとう。

0 投票する
4 に答える
32628 参照

linux - I2C_SLAVE ioctl の目的

i2c一般的なLinuxi2cドライバーを使用して単純な読み取り/書き込み機能を実装するためのコードを書いていますlinux/i2c-dev.h

私は混乱していioctlます:I2C_SLAVE

カーネルのドキュメントには次のように記載されています。

read(2) および write(2) 呼び出しを使用して、単純な i2c トランザクションを実行できます。アドレス バイトを渡す必要はありません。代わりに、デバイスにアクセスする前に ioctl I2C_SLAVE で設定してください

ただし、を使用しioctl I2C_RDWRてスレーブアドレスを再度設定する場所を使用していi2c_msg.addrます。

カーネルのドキュメントには、次のことも記載されています。

一部の ioctl() 呼び出しは管理タスク用であり、i2c-dev によって直接処理されます。例には I2C_SLAVE が含まれます

を使用する必要がありioctl I2C_SLAVEますか?もしそうなら、一度だけ、または読み書きを実行するたびに設定する必要がありますか?

もし私がi2cデバイスを持っていれば、デバイス上でコードをテストしただけで、皆さんを悩ませることはなかったでしょうが、残念ながら私は今のところ持っていません。

助けてくれてありがとう。

0 投票する
3 に答える
2682 参照

arduino - Arduinoで液晶LCDプログラミング?

LCD に「Voltage=(sensorValue)」と表示させたいのですが、現時点では、ポテンショメータを回したときにプログラムに値を認識させる唯一の方法は、それをループに入れることです。しかし、ループに入れると、ポテンショメータがどこに設定されているかに応じて、画面全体が 1、2、3、4、または 5 でいっぱいになります。

ループに入っていない場合、ポテンショメータがオンになっている設定が画面に表示され、ポテンショメータがオンになっても変更されません。

"(Voltage=sensoreValue)" を取得できるように、ループの結果をループの外に置くにはどうすればよいですか?

これが私のプログラムです:

0 投票する
1 に答える
4326 参照

linux - Linux ユーザー空間からの i2c の実装

私の問題の長い説明で申し訳ありません:-)

新しい PC ベースのボード設計で、I2C デバイスとの間で単純な読み取りと書き込みを実行するタスクが与えられました。このボードは、Intel Tunnel Creek (ATOM) プロセッサ (基本的には x86 プロセッサ) と EG20T IOH チップを使用する Portwell の Qseven ミニ PC を使用して構築されます。

I2C スレーブ デバイスは TI AIC3254 オーディオ コーデックです。OSはUbuntu 10.04 LTS 32bitです。

このデバイスの PC 部分は、基本的に汎用 PC です。

PC/OS は、システム初期化時に I2C 経由でコーデック (レジスタ) をロードする必要があります。その後、コーデックは、I2C バスの 2 番目のマスターとなる Atmel プロセッサによって制御されます (init が完了するまでサイレントのままです)。ATOM は、AIC3254 と直接対話することはありません。

私の知る限り、コーデックの「プログラム」をI2Cバスを介してコピーし、それを読み戻すだけです(貧弱な負荷チェック)。

デバイス ドライバを作成しようとするのではなく、ユーザー空間プログラムを使用して AIC3254 と通信するのが論理的なアプローチのようです。ただし、i2c-dev を modprobe した後。depmod -a no I2C bus が /dev に表示され、i2c_toolsからの i2cdetect はバス (デバイス?) を検出しません。

必要なのは、Linux I2C アクセス コーディングの理解です。ここで noob を完了します。

結局、デバイスドライバーは必要ですか? バス/ページ/レジスタへの単純な読み取り/書き込みだけです。おそらく単純なcharモードドライバーですか?そのようなものが存在することを示唆する何かを読んだことがあります。

/sys/bus/i2c/devices/i2c-0/に *new_device* および *delete_device* ファイルを配置する必要がありますか?

i2c-dev.ko がインストールされていても、i2c-x の「ファイル」が/sys/bus/i2c/devices/に表示され ません。

このカーネルが EG20T IOH チップを認識しているかどうかを推測または確認できますか? それとも、これらのチップはi2c-devで処理できるほど一般的なものなのでしょうか?

i2c-core.ko は必要ですか? Ubuntu イメージにはありません。必要な場合、apt-get を取得するには何が必要ですか?

i2c-algo_???.koの用途はありますか?

そんな初心者でごめんなさい。助けてくれてありがとう。

0 投票する
2 に答える
1432 参照

iphone - (ジェイルブレイクされていない) iPhone に i2c コマンドを発行させることは可能ですか?

iPhone から直接一連の LEDを制御したいと考えています。LED コントローラ チップはi2cシリアル プロトコルを使用します。

ジェイルブレイクされていない iPhone で Apple がサポートする API を使用してこれを行うことはできますか? どのフレームワークを使用する必要がありますか?

0 投票する
0 に答える
1072 参照

linux - Linuxオーディオの入力としてのi2cデジタルオーディオストリーム

現時点では、アナログオーディオストリームをデジタルに変換してI2C経由でコンピューターのオーディオシステムに入れるために使用しているA / D(アナログからデジタルへのコンバーター)があります。最終的な目標は、デジタル ストリームを取得し、I2C バスを介して Debian Linux を実行しているコンピュータに送ることです。Debian Linux を実行しているコンピュータは、それをオーディオ入力として受け取り、変更 (オーディオにエフェクトを加える) するか、あたかも出力するかのようにします。それは、コンピューターのMIC入力でした。

現時点では、Linuxでこれをどこから始めればよいかわかりません。ありとあらゆる助けをいただければ幸いです。

Linux側でデータをどのように解釈する必要があるかについての知識がないため、デジタルオーディオのI2C出力ストリームの設定についてはまだ何もしていません。

ありがとう、エリック

0 投票する
0 に答える
3730 参照

linux - Linux での i2c へのアクセス: /dev/ vs /sys/class

こんにちは、私はまだコツを学んでいる初心者の組み込み Linux エンジニアです。

私は以前、i2c バスを使用して周辺機器にアクセスする必要があるプロジェクトに取り組んでいました。/dev/i2c-1 デバイス ファイルを使用するだけで簡単に実行できました。

私は現在、顧客が /dev/ ディレクトリをほとんど何にも使用していないように見える新しいプロジェクトに取り組んでいます。/dev/i2c-1 が存在しないことを確認したとき、カーネルが i2c をサポートするように構築されていないと思います。顧客に尋ねると、ディレクトリ /sys/class/i2c-dev/i2c-1/ を教えてくれました。

これが /dev/ ファイルとどのように異なるのか、なぜこの方法を選択したのか、またはどのように作業できるのかがわかりません。

これは比較的自由回答の質問です。私は上記の質問に対する答えを探していると思います.私の理解を広げることができるいくつかのドキュメントを指摘することができます..

0 投票する
0 に答える
2041 参照

c++ - MacOSXのIOKitでのi2c通信

MacOSX関数IOI2CSendRequestを使用してddc/ciを介してディスプレイと通信しようとしています。明るさの設定など、「設定」コマンドを送信するだけですべて機能します。ディスプレイの明るさが変わるので、ディスプレイ受信コマンドが表示されます。

しかし、ディスプレイから返信を受信しようとすると、ゴミが表示されます。IOI2CSendRequestで応答を送受信する正しい方法は何ですか?

これが私の現在のコードです:

krとrequest.resultはどちらもkIOReturnSuccessと同じですが、bufに有効なデータがありません。送信されるコマンドは「51820110 AC」です。ここで、ACはチェックサムです。

OSは10.6.8(ユキヒョウ)

このコードの何が問題になっているのでしょうか。

0 投票する
2 に答える
285 参照

verilog - I2C リンクの何が問題になっていますか? すべきではないときにLEDを切り替えます

I2Cを介して接続されたArduinoに2つのラティスチップが接続されています。Lattice ボードには、それぞれ 8 個の LED が含まれています。私のArduinoはマスターです。

写真

私の目標は、各ボードの LED を駆動することです。

今のところうまくいっていますが、いくつかバグがあります。私はラティス ボードに、私が対処していること、ドライブさせたいピンを送信しようとしていることを伝えることからプロセスを開始します。これを行うには、今のところ 10 に設定されたバイトを送信します。これに続いて、10110111 のようなバイトでドライブしたいピンを送信します。ここで、インデックス 0 は最初の LED で、インデックス 1 は 2 番目の LED というように 8 まで続きます。

このための Verilog コード:

最後に、Lattice ボードにその設定を伝え、8 つの LED に接続されたピンを駆動する 11 バイトを送信します。

コードの残りの部分は、I2C スレーブのこの実装に基づいています

私の問題は、最初のインデックス (例: 0000110 0 ) に1 を指定して Arduino から drivePins バイトを送信すると、びっくりして、すべきではない LED をオンにすることです。LED パターンは、この 11111110 から 11110110 のようになります。

Arduino では、Wire Library を使用しています。

トランスミッションはこんな感じ。

0 投票する
1 に答える
564 参照

android - Samsung Galaxy S3 の I2C ドライバー

Android アプリケーションから Samsung S3 GT19300 の I2C ドライバーにアクセスしたいと考えています。

これを行うには、デバイスをルート化する必要がありますか?

前もって感謝します。