問題タブ [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.
linux - LinuxでUSB経由でi2cデバイスからデータを取得する方法
USB-I2C アダプター ( http://www.robot-electronics.co.uk/htm/usb_i2c_tech.htm ) を使用して接続された温度センサーがあります。このデバイスを Linux コンピューター (suse10) に接続しました。dmesgと入力して見ました
しかし、現在の温度を読み取る方法がわかりません。
更新 1:実際には、I2C バスは最大 127 個のセンサーを接続できます。しかし、利用可能なセンサーのアドレスを一覧表示する方法がわかりません。
誰かヒントを教えてくれませんか?前もって感謝します
image - シリコン イメージ c8051f32x 上の i2c (USBXpress を使用)
このuCでI2C(SMBus)が正常に動作し、USB経由で(USBXpressを使用して)通信し、uCから別のICへのI2Cトランザクションを実行できるVB GUIを持っています。問題は、uC が 1 秒ごとに IC のレジスタをポーリングしていることです。非同期 GUI I2C トランザクションを実行すると、時々、ポーリング I2C トランザクションと衝突し、すべての I2C データが GUI でシフトされます (つまり、レジスタ 0x00 のデータがレジスタ 0x01 に表示されます)。IC 内の I2C データは正しいように見えます (LA で I2C バスをスパイすることにより)。正確に何が起こっているのでしょうか?どうすれば修正できますか?
linux - I2C 通信の強制は安全ですか?
私が取り組んでいるプロジェクトでは、I2C を介して多機能チップと通信する必要があります。これは、I2C /dev/i2c-1 インターフェイスを介して Linux ユーザー空間から実行できます。
ただし、ドライバーは同時に同じチップに話しかけているようです。これにより、I2C_SLAVE アクセスが EBUSY の errno 値で失敗します。そうですね - ioctl I2C_SLAVE_FORCE を介してこれをオーバーライドできます。試してみましたが、うまくいきます。私のコマンドはチップに届きます。
質問: これを行っても安全ですか? 私が書いたアドレス範囲が、どのカーネルドライバーからも決してアクセスされないことは確かです。ただし、そのように I2C 通信を強制すると、内部の状態マシンなどを混乱させる可能性があるかどうかはわかりません。
参考までに、ハードウェアの事実:
usb - C8051F320のHID入力レポートキュー
ホストのデータの準備が整うとすぐに(WriteFileを使用してHIDにコマンドを送信し、HIDにポート値などのデータを返すように指示する場合など)、パケット内の準備完了ビットは次のようになります。設定すると、ReadFileが呼び出される前に、ホストはそれを読み取ります(別のUSB割り込みによって確認されます)。ReadFileは、後でこのデータをホストのバッファーに入れるために使用されます。これはそれが起こるべき方法ですか?ReadFile呼び出しがin割り込みを引き起こすことを期待していました。
だからここに私の問題があります:私は一緒にうまく機能するGUIとHIDを持っています。HIDは別のICに対してI2Cを実行でき、GUIはHIDにI2Cを正常に実行するように指示できます。起動時に、GUIはHIDからデータを読み取り、正しい値(たとえば、0x49)を取得します。同じHIDに対して2番目のGUIを開くと、HIDから読み取られた同じ初期データが実行され、正しい値が取得されます(たとえば、0x49。最初のGUIの読み取りと同じである必要があります)。ここで、最初のGUIに移動してI2C読み取りを行うと、リードバック値は0x49になります。これは、2番目のGUIがHIDから要求した値です。HIDは、接続されているすべてのデバイスのエンドポイントにこの値を設定しているようです。したがって、1番目のGUIは、これが正しい値であると誤って判断します。
JanAxelsonのHIDFAQによると、「HIDへの開いているハンドルにはすべて独自のレポートキューがあります。デバイスが送信するすべてのレポートはすべてのキューに入れられるため、複数のアプリケーションが同じレポートを読み取ることができます。」これが私の問題だと思います。正しい値(HIDがデバッガーごとに送信する)が通過するように、最初のGUIが要求を行う前に、これをパージしてエンドポイントをクリアするにはどうすればよいですか?HidD_FlushQueueを試しましたが、Falseが返され続けます(機能しません。同じハンドルでWriteFile / ReadFileが成功するたびにハンドルは有効ですが、「ハンドルが無効です」というエラーが発生し続けます)。何か案は?
ありがとう!
c - STM32 I2C1 開始ビットが SR1 レジスタに設定されていません
i2c EEprom と通信するように stm32 をプログラムしようとしていますが、次のように言うたびに次のようになります。
デバッガーを使ってみたところ、SR1 ビット 0 フラグ (開始ビット生成フラグ) が設定されていないことがわかりました。これが原因で、コードがハングします。オシロスコープで、スタート ビットが生成されていることがわかります。これは時々機能します。連続して複数の書き込みを行おうとすると、通常は壊れます。ハードウェアがすべて正常に見えることを確認しました。i2c バスで実行している周波数を確認しました。24lc1025 eeprom 内で 100Khz です。
何か案は、
ありがとう
linux-device-driver - LinuxでI2Cドライバーモジュールを最適に実装する場合
現在、Linuxを実行している組み込みシステム内でI2Cバスに接続されている2つのデバイスを扱っています。最初のデバイスであるカメラに既存のドライバーを使用しています。2番目のデバイスについては、2番目のデバイスと通信できるユーザースペースプログラムを正常に実装しました。これまでのところ、両方のデバイスは幸せに共存しているようです。ただし、ほとんどすべてのI2Cデバイスには独自のドライバモジュールがあります。したがって、私はドライバーモジュールの利点は何であるか疑問に思っています。次のスレッドを見てみました...
Linuxカーネルモジュールはいつ作成する必要がありますか?
...しかし結論はありません。
したがって、ユーザースペースの実装よりもI2Cドライバーモジュールを作成することの利点は何でしょうか。
よろしく、ステファン
c++ - LinuxでのEEPROMウェアレベリング用のC/C ++ライブラリ?
I2Cインターフェースを介して接続された8k-EEPROMにデータを安全に保存するためのライブラリを知っている人はいますか?私は特にウェアレベリングに興味があります。これは、EEPROMを頻繁に変更する測定データのNVRAMとして使用する必要がある/必要がある書き込み集約型のアプリケーションがあるためです。
よろしくお願いします、マーティン
linux-device-driver - I2C デバイス ドライバーを作成する際のプローブの問題
私は Linux デバイス ドライバーを書く初心者です。質問がばかげていたり、英語が下手だったりしても許してください^^
I2C 経由で CPU と通信するタッチパネル用のドライバーを書こうとしています。
デバイス ドライバーを Linux プラットフォームに追加しようとしましたが、登録は成功しました。つまり、ドライバーは読み込まれましたが、プローブ機能が起動しませんでした。
上記は、私が書いたドライバーの部分的なコードです。
上記は、i2c デバイスの登録に使用されるプラットフォーム (/kernel/arch/arm/mach-pxa/saarb.c) の部分的なコードです。
ご意見・ご要望などありましたらよろしくお願いします(^^)
linux-kernel - SMBus を介したバッテリー状態へのアクセス/監視
現在、SMBus を介してバッテリーの状態を監視しようとしています。
バッテリーの状態を常に出力するコントロールボードと一緒にバッテリーを持っています。
この制御ボードは、I2C-USB モジュールを介してマザーボードに接続されます。
SMBus 接続を認識し、バッテリーの状態をユーザーに送信するプログラムを作成する必要があります。
私はスマート バッテリと I2C/SMBus を扱うことに関しては初心者であり、この問題にどのように対処すればよいか迷っています。
提案の助けをいただければ幸いです。ありがとう。
hardware - 「HI2COUT」についての詳細情報はどこにありますか?
MCP23017 の I2C インターフェースを ATtiny13A でビットバングしようとすると、多くの場所で HI2COUT が I2C バスでデータを送信する方法として言及されていますが、これが言語の一部なのかライブラリなのか説明なのかわかりません呼び出されたときの動作。質問:
1) HI2COUT に関する情報はどこで入手できますか?
2) MCP23017 と接続したことがある場合、1 つ (またはすべて) のピンを出力として設定し、HIGH に設定する適切なシーケンスを投稿できますか? (これには、開始、書き込みアドレス、書き込みレジスタIOCON、...、停止などが含まれます...)
3)誰かがこの質問により適したサイトを知っている場合(または答え)教えてください。