タグ付けされた質問 「i2c」

I²C(Inter-Integrated Circuit)は、同じPCB上のIC間の通信、つまり短距離通信用にPhilips(現在のNXP)が発明したマルチドロップシリアルバスです。

8
シリアルEEPROMがパラレルEEPROMよりも好ましいのはなぜですか?
EEPROMのウィキペディアページ:http : //en.wikipedia.org/wiki/EEPROMでは、「パラレルEEPROMデバイスには通常、8ビットのデータバスと、メモリ全体をカバーするのに十分な幅のアドレスバスがある」と記載されています。 「シリアルEEPROMと比較した場合、パラレルEEPROMの動作は簡単で高速です」。その場合、なぜシリアルEEPROMはパラレルEEPROMよりも普及しているのですか?
17 serial  i2c  memory  eeprom 


7
決定的なI2Cピン配置ガイダンスはありますか?「標準」を探していない
編集:これは数回繰り返されているので、一番上に配置します:はい、I2Cデバイス間コネクタには「標準」がないことはよく知られていますが、このコミュニティでは、作成のための「ガイダンス」ポイントのリストを作成できます。このような相互接続は、信号の動作、ノイズの最小化、および誤った接続によるリスクの軽減に基づいています。 NXP は、I2Cコネクタのピン配列を指定せずにI2C標準を定義しました。NXPからの唯一のガイダンスは、Vss / Gndがインターコネクトを介して運ばれる場合、SDAとSCLの間にグランドおよび/またはVssを配置することに関する言及のようです。 さまざまなI2Cモジュールを購入すると、さまざまなI2Cピン配置が必要になり、それらに必要なさまざまな小さなリボンケーブルスイッチングシムを追跡する作業が少し必要になりました。 例えば モノOLEDモジュール:SCL、SDA、GND、5V(クロックとデータが隣接しているため、明らかに理想的ではありません。 Arduino用センサーシールド:SDA、SCL、GND、5V(やはり理想的ではない、スイッチドSCL / SDA) カラーLCDモジュール:SCL、GND、5V、SDA(Yay!) 名前のないI2Cリピーター:SCL、5V、GND、SDA(いや、彼らは電源ピンを切り替えました!魔法をほぼ消し去りました。) だから私の質問はこれです:VssとGNDの両方がホストからデバイスに運ばれるI2C 4ピンコネクタのピンアウトシーケンスの 決定的/正式なガイドラインはありますか? これに失敗すると、それぞれが採用しているピン配列をリストしているI2Cモジュール/デバイスのディレクトリがありますが、不完全です。 明確化:明確に存在しない定義済みの標準ではなく、「SCLにVsを近づける」などのガイドラインを探します。

4
どのI2Cアドレスを選択する必要がありますか?
I2Cアドレスを自分用に予約するには、I2Cの人々にお金を払わなければならないことがわかりました。しかし、私はこれをしたくありません。 プロジェクトのスレーブMCUとマスターMCUに選択するアドレスについてアドバイスを求めています。ボードにはEEPROMもあります。したがって、EEPROMのアドレスの使用は避けます。マスターは、ジャイロや加速度計、追加のメモリデバイスなど、さまざまなセンサーに接続する予定です。明確にすべきアドレスのブロックはありますか?マスターには0x00を使用し、スレーブには0x01を使用することを考えていました。これらはほとんど使用されていないようだからです。 別の質問:10ビットデバイスと7ビットデバイスを同じバスで混在させるのは悪い考えでしょうか?MCUが10ビットアドレッシングで通信する可能性を検討していましたが、センサーには7ビットアドレスのみを使用していました。
16 i2c 


3
HDMIおよびI
私はHDMIのピン配列を見ていましたが、ディスプレイとホストの通信にI 2 Cを使用するのはなぜですか?ここでの私の質問は、この選択につながる設計指標に関するものです。22^2 HDMIは非常に最近の規格ですが、I 2 Cは1982年以来です。I 2 Cは、オンボード、チップ間通信を目的としています。さらに、標準では、同じバスに複数のデバイスを接続できます。HDMIケーブルは15mほどの長さになる可能性があるため、I 2 C信号は通常の電圧よりも高い電圧を使用してノイズを抑え、両側にトランシーバーを追加する必要があります。マルチデバイスについては、非常に非標準でない限り、1つのHDMIポートに複数のモニターを接続する方法を本当に考えることはできません。22^222^222^2 私は実際には通信プロトコルの専門家ではありませんが、RS485、CAN、または他のポイントツーポイント、全二重、高SNRプロトコルの方が優れていると思います。 なぜ彼らはI 2 C を選ぶのでしょうか?22^2 注:これは「意見ベース」としてマークされる可能性があることは知っていますが、周囲の誰かがいくつかの客観的な理由を考えたり知ったりできることを望んでいます。


3
I2Cの最小クロック速度と信頼性
I2Cで指定されている最小クロックレートはありますか?最も広く使用されているクロックレートは100kHzであり、一部のデバイスでサポートされている400kHzの「高速」モードと、他のデバイスでサポートされている高速モード(1MHzと思いますか)があります。SCK信号はマスターによって生成されるので、これらのどれよりもはるかに遅い速度で動作できると思います-実際には下限はありますか?スレーブデバイスはクロックレートをどの程度気にしますか(たとえば、タイムアウトが短いのは一般的ですか)。私が尋ねる理由は、プロダクションテスターのセットアップでI2C EEPROMを確実にプログラムするために、おそらくより長い距離(20フィート)でI2Cを実行できるのではないかと思っているからです。標準のデータレートでは、その距離では確実に動作しないと思われます。

3
I2C:3.3Vバスでレベルシフトのない3.3Vおよび5Vデバイス?
3.3Vへのプルアップを備えたI2Cバスで5V駆動デバイスを使用する場合、本当にレベルシフターが必要ですか?私の理解では、デバイスはライン(SDA、SCL)をロー(グランド)にプルするだけで、バスへの供給電圧を駆動しません。したがって、すべてのデバイスがプルアップ(3.3V)からの電圧を論理的に高いものとして検出する限り、レベルシフターの理由はわかりません。これは、5Vを電源として使用するデバイスの場合に当てはまります。 私の場合、入力がマスターとして5Vに対応していないICがあり、3.3Vでスレーブに電力を供給できますが、回路で5Vを使用する方が簡単で、スレーブのクロックレートを高くすることができます(内部)。

5
I2C混合周波数は可能ですか?
400 kHz I 2 Cバスがあるとします。1つのマスターと多数のスレーブデバイスがあります。もう1つのスレーブデバイスを導入したいと思いますが、残念ながら100 kHzまでしか行きません。 確かに、確かな設計の選択肢は次のとおりです。 そのバスを100 kHzで実行するだけです 400 kHzと100 kHzペリフェラルに別々のバスを使用する しかし、問題はハックについてだけです。1つのバスを使用し、400 kHzで400 kHzデバイスに対処し、100 kHzスレーブと話すときにバスを100 kHzに切り替えるとどうなるでしょうか。 または、遅いスレーブは、それがアドレス指定されていると誤って判断するため、I 2 Cラインに表示される400 kHzハッシュに応答して誤動作する可能性がありますか? 100 kHzデバイスに依存して、他のスレーブ宛のメッセージを確実に無視するのに十分な400 kHz I 2 C信号を処理できるでしょうか?
12 i2c 

1
I2C STM32F0 HALライブラリを使用したレジスターのアドレス指定
私はSTMのCUBEおよびHAL_librariesを使用するのが非常に初めてです。32ピンのSTM32F0マイクロコントローラを使用しています。I2Cの回路図は正しいです。ここで少し助けが必要です。 I2C通信を使用する静電容量センサー(FDC1004)があります。データを読み取るには、これらのレジスタに書き込む必要があります。 STARTリクエストフォームマスターをスレーブに正しく送信するにはどうすればよいですか(スレーブアドレスはA0)。 ポインタを0x0Cレジスタに設定する方法は? データシートでは、(レジスタ0x0C:bit [7:4])から1を参照しています。)どうすればよいですか?そして最後に、同じレジスタから読み取る方法は? さらに、DONE_xフィールド(レジスタ0x0C:bits [3:0])を読み取ってから、それを読み取る必要がありますか? しかし、私が適切なレジスタに対応しているかどうかはわかりません!センサーからデータが返されないからです! これが私のコードです: int I2Ccomm () { HAL_I2C_Master_Transmit(&hi2c1,0xA1,0x0C, 10, 100); //start bit and pointer to register HAL_Delay(50); HAL_I2C_Master_Transmit(&hi2c1,0xA1,0x054, 10, 100); // setting the register HAL_Delay(50); HAL_I2C_Master_Receive(&hi2c1, 0xA0, 0x0C, 10, 100); //read from this register HAL_Delay(50); HAL_I2C_Master_Receive(&hi2c1, 0xA0, 0x02, 10, 100); //read data from …

2
I2Cレベルシフト
現在、センサーからのデータを記録し、記録されたデータをEEPROMに保存できる回路を設計しています。私の2つのデバイス(EEPROMとテスト目的のRTC)は、I2Cバスを介してPIC16F887 µCに接続されています。ただし、2つのデバイスの電圧動作範囲は同じではなく(EEPROMの5v、RTCの3.3)、私のバッテリーは9Vバッテリーです。 そこで、SDA / SDL配線用のMOSFETで構成されたレベルシフター付きの電子回路を設計しました。その上に、デバイスに電力を供給するために2つのLM317電圧レギュレーター(9V-> 3.3Vおよび9V-> 5V)を追加しました。私はそのようなものの設計の専門家ではないので、私が作ったものを一目で見て、私がひどく間違ったことをしたかどうか教えていただければ幸いです!

7
I2Cスレーブアドレスが確認されない(時々)
I2Cを使用して、リモート接続されたFRAM(RamtronのFM24C04)と通信しようとしています。このメモリはボードに組み込まれており、システムにいつでもシステムから着脱できます(メモリを取り外す前に通信は適切に終了します)。 問題は次のとおりです。ちょうどFRAMが含まれているカードを挿入した後、時々、それはアドレスを認識しません。 信号測定 信号を測定して何が起こっているのかを確認しましたが、タイミングはどちらの場合も(正常に機能していても機能していなくても)良いようです。 正しいI2C通信(3バイトの読み取り): I2C FRAMアドレスが確認されていません(スレーブアドレスは正しく送信されています): この問題を解決するために既に行われたアクション(成功なし) 電源シーケンスを確実に順守するために、FRAMが埋め込まれたカードが挿入された後に追加される遅延。 I2Cは、確認応答しないスレーブアドレスの検出後に生成を停止します I2Cバス構成 1つのマスター(STのSTM32F205マイクロコントローラー) 3つのスレーブ(MicrochipのEEPROM 24AA1025、Maxim ICのRTC DS1339C、およびRamtronのリモートFRAM FM24C04 1つのI2Cレベルシフター(マキシムICのMAX3373E)を使用して、マスターとFRAM間の通信が可能 バス周波数を100 kHzに設定 編集済み(2013-04-17) まず、コメントありがとうございます。 たくさんの提案があるので、これが私が行った調査の説明です。 回路図 次の図は、I2Cバスの簡略図を示しています。 I2C_SDAおよびI2C_SCL信号はマイクロコントローラーに直接接続され、FRAM_SDAおよびFRAM_SCL信号はFRAMに接続されます。FRAMに接続されたSDAおよびSCL信号は、MurataのBLM18フェライトを使用してフィルタリングされることに注意してください。 FRAMは次のように接続されます。 NC(ピン1)->未接続 A1(ピン2)-> GND A2(ピン3)-> GND VSS(ピン4)-> GND SDA(ピン5)-> FRAM_SDA SCL(ピン6)-> FRAM_SCL WP(ピン7)-> GND(書き込み保護なし) VDD(ピン8)-> + 5V FRAMカードの説明 このカードは、FRAMのみを組み込んだ「ISAのような」カードです。 調査 周波数を遅くする SCL周波数を50kHzと10kHzに設定してテストを実行しました。SCL信号をオシロスコープで測定して、期待した周波数であることを確認しました。 これらの変更は問題を解決しませんでした。タイミングを確認したところ、FRAMデータシートの仕様の範囲内でした。 電源シーケンスの確保 …

1
BMA180加速度計。I2CとSPIの間でピンを共有する方法を教えてください。
BMA180加速度計は、SPIスレーブまたはI 2 Cスレーブのいずれかです。両方のバスのピンは共有されています。 SPI mode I2C mode --------------------------------------------------- SDI input SDA bidirectional (!) SDO output ADDR address bit, input SCLK input SCL input CSB chip select, input I2C mode select, input データシート(第8章を参照)によれば、バス間の選択はCSBピンを介して行われます。CSBがローの場合、デバイスはSPIスレーブです。CSBがハイの場合、デバイスはI 2 Cスレーブです。 これが私が心配している故障モードです。BMA180がSPIバス上にあるとします。同じバス上に独自のチップセレクトを持つ別のデバイスもあります。SPIバスマスターが他のデバイスと通信しているとします。BMA180のCSBが高いため、I 2 Cを有効にする必要があります。BMA180は、SCL(SPIのSCLK)上のクロックエッジとSDA(SPIのMOSI)上のビットが飛んでいるのを見ます。これらのビットの一部が有効なI 2 C読み取りトランザクションの開始のようにBMA180に見え、BMA180がデータの出力を開始し、既存のSPIトランザクションを破壊する場合はどうなりますか?BMA180の設計はそれをどのように防止しますか? これは好奇心の問題です。私はこれらの問題をまだ実験していません。SPIでBMA180を使用します。 提案、洞察、参照は本当にありがたいです! 更新。データシートに 何かが見つかりました(7.7.11を参照)。SPI経由でBMA180と通信する場合は、ビットを設定してI 2 Cを無効にすることをお勧めしdis_i2cます。 SPIインターフェイスを使用する場合、誤動作を避けるためにdis_i2cを1に設定することを強くお勧めします。 BMA180はEEPROMを内蔵しています。レジスターの内容はEEPROMに保存され、パワーアップシーケンスで自動的にロードされます。したがって、BMA180にI 2 Cを完全かつ常に無視させることができます。 更新。 …
11 spi  i2c 


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.