OpenBSD には最近、いくつかの共通マスター・コントローラとセンサのサポートで I2C フレームワークが加えられた。, シンクレア QDOS とミネルヴァ( QDOS の再実装) QL オペレーティング・システムでは、TF サービスから提供されている拡張セットで I2C がサポートされている。, AmigaOS では、 Wilhelm Noeker の i2c.library 共有ライブラリで I2C アクセスできる。, I2C が元になっているものには、 ACCESS.bus 、 VESA の Display Data Channel (DDC) インターフェイス、 SMBus 、 IPMI などがある。 4ビット ビット 幅 PCA9554 400 0100 xxx 2.3 ~ 5.5 QFN – 1Q07 PCA9554A 400 0111 xxx 2.3 ~ 5.5 QFN – 1Q07 PCF8574A 100 0111 xxx 2.5 ~ 6.0 QFN PCF8574 100 0100 xxx 2.5 ~ 6.0 QFN PCA9536 400 1000 001 2.3 ~ 5.5 YZP – 1Q07 オープン ・ ドレイン プッシュ プル 5V トレラント I/O コンフィギ… プルアップ抵抗を2.95kΩとすればokです。 プルアップ抵抗はicが許す限り値を小さくすれば(1kとか470Ωとか)ノイズ耐性やマージン確保に役立つと思います。 ーーーーーーーーーー 信号線のノイズ対策 シールドされたケーブルにする。 I2C接続のセンサーをメインCPU基板と分離して使用したい場面があると思いますが、ちょっとした落とし穴があったので、メモしておきます。, 今回、TMP006モジュールというサーモパイルの温度センサーモジュールのI2C接続をケーブルを使用して延長したのですが、長いケーブルになると通信できなくなったり、データが化けたりするという問題がありました。, 使用したケーブルは千石通商で売っているカラーケーブルです。波形が乱れているのと、ノイズが乗っているように見えます。この状態だと、動くときと動かないときがありました。, I2Cの読みとり側ではデータがばけていたり、温度情報が取得できない時がある、という感じになりました。以下の波形は10kbpsに落とたものですが、微妙なひげが出てきているのと、SCLがあやしくなっています。, 波形を見るとなまっている感じですが、クロックがつまるような現象はありませんでした。, ケーブル延長した時の問題について色々調べてましたが、電線自体がそれぞれの電線に影響してしまう点が問題ということでした。フラットケーブルで信号線を流した場合、それぞれが干渉するので問題が起こるということのようでした。, IICの仕様書に計算方法など色々書いてありますよ。http://www.nxp.com/documents/user_manual/UM10204_JA.pdf, 例えば一般的なフラットケーブル(いわゆる、すだれケーブル)を使って、信号線をGNDで挟んだ場合(GSGSG)1メートル当たり60pF程度なので、5メートルで300pFになります。, さらに、ケーブル容量に基板上の容量を足して合計400pF程度と見込んで計算すると、 Standardモード(~100Kbps)ならTr=1000nsecなので、Rpmax=1000nsec/(0.8473*400pF)=2.95KΩプルアップ抵抗を2.95KΩとすればOKです。, プルアップ抵抗はICが許す限り値を小さくすれば(1Kとか470Ωとか)ノイズ耐性やマージン確保に役立つと思います。, https://japan.renesasrulz.com/cafe_rene/f/forum19/3619/i2c?pi4368=1, 以下のリンクで、PCA9600Dというものが紹介されていました。400kbpsで16mまで動作確認できているようです。, VBで開発するIoTの世界 - I2Cバス延長 | 株式会社エフイーシー - 福島県福島市のシステム開発企業, t-yoshさんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?, Powered by Hatena Blog 《I2C通信の基本のデータ転送手順》 I2C通信の基本的な通信フローは下図のようになります。2本の信号のHigh、Lowの変化の仕方により 次の4つの条件が決められています。 ①SCLがHighのときに、SDAが立ち下がると通信開始(Start Condition) I2C機器との接続で使うRaspberry Piのピンは、電力供給用のVとGND、およびデータ通信用のSDAとクロック信号のSCLの4本です。Raspberry Piでは、3.3Vおよび5Vの出力が可能です。使用する機器によって使用する電圧のピンを変えることになりますが、まぁだいたい3.3Vを使うことになると思 … 電圧は最高で +5V までで、よく使われるのは +3.3V だが、他の電圧でも構わない。, I2C の参照設計では、7bit のアドレス空間のうち 16 の予約アドレスを除いた最大 112 個のノードが、同じバス上で通信できる。 For 2-wire buses such as I2C, SMBus, PMBus, IPMB & IPMI, SBS-IF Smart Battery System Implementers Forum, https://ja.wikipedia.org/w/index.php?title=I2C&oldid=75773817, CPU の温度やファンの回転速度など、ハードウェアの監視や診断用センサーの読み取り。(パーソナルコンピュータにおける, 2次電池の充放電状態コントローラの通信インタフェース。(スマートバッテリシステム). i 2 c で使われているのは、抵抗でプルアップされた双方向のオープンコレクタ信号線が2本だけである。 2本の信号線は、シリアルデータ (sda) とシリアルクロック (scl) からなる。 電圧は最高で +5v までで、よく使われるのは +3.3v だが、他の電圧でも構わない。 I2C(アイ・スクエアド・シー、アイ・アイ・シー)はフィリップス社で開発されたシリアルバスである。低速な周辺機器をマザーボードへ接続したり、組み込みシステム、携帯電話などで使われている。, Inter-Integrated Circuit の略で、I-squared-C(アイ・スクエアド・シー)が正式な読みとされている。ただし、一般的な文字コード環境のプレーンテキスト上では上付き文字が使えないため、I2CあるいはIICと表記されることも多く、これをもって「アイ・ツー・シー」と発声されたりカタカナ表記される[1]ことがある。, I2C で使われているのは、抵抗でプルアップされた双方向のオープンコレクタ信号線が2本だけである。2本の信号線は、シリアルデータ (SDA) とシリアルクロック (SCL) からなる。 ノード数の拡大と高速動作が可能な 400kbit/s のファーストモード (Fast mode) や 3.4Mbit/s の高速モード (High Speed mode) の追加と、10bit アドレス空間などの機能拡張が行なわれている。, 特定のI2Cバス上に存在できるノードの数は、アドレス空間とバスの静電容量によって制限され、実際の通信距離は数メートルに制限される。比較的高いインピーダンスと低い雑音耐性は共通の接地電位を必要とし、実用的にはPC基板や小さな基板同士の通信に制限される。[2], 元々の I2C システムは、フィリップスの各種チップを使った電子機器制御用のシンプルな内部バスシステムとして1980年代初期に開発されたものである。, 最新の仕様書は、フィリップスが設立したNXPセミコンダクターズ社のサイトにて配布されている。また、2004年8月に特許が失効しており、現在はロイヤリティフリーである。, I2C が適しているのは、シンプルで製造コストを抑えることが速度よりも重要とされるような周辺機器である。 設計. | パッケージが小さければ軽量化・低消費電力化が可能で、これは携帯電話やポータブル・コンピューティングでは特に重要なことである。, Linux では、I2C は特定のデバイス(ADM1026やLM92など)用に特定のカーネルモジュールで扱われている。Linux 2.6ではカーネルコンフィグレーションの"Hardware Monitoring support"でサポートするシステムハードウェアモニタを選択できる。I2Cドライバのソースコードは drivers/hwmon 配下にある。I2Cドライバは大きく分けて core と algorithm, adapter の3種類のモジュールに分割されている。 I2C クライアントの書き方の詳細は、カーネル関連のドキュメントや /usr/include/linux/i2c.h ヘッダファイルにある。 ¥å¤«ãŒå¿…要となる。, アイコンの表示を行う際に ISビットを立てるので、アイコン表示/非表示を行ったら必ず ISビットを 0 にしないと文字表示されないので注意が必要, サンプルでアイコンを表示してみる。 次のスケッチの loop() を先ほどのスケッチの loop() と置き換えてください。, ストロベリーリナックスで取り扱っている, 上下マークの上のみを表示したい場合は 00010000. 電源電圧はプルアップ抵抗の最小値を制限します。 これには各ドライバのシンク電流が最大3mAという制限があるので、On電圧 が0.4Vmaxとすれば、下記条件が必要です。 Rp > (Vdd-0.4)/3mA I2C で通信する際、 SDA と SCL は 3kΩ程度の抵抗でプルアップする必要がある。 プルアップやプルダウンは入力端子が解放状態の場合、や未入力状態の場合に適切な論理レベルとなるようにするものらしい。 これも難しいことはわからん。 Wire.h ライブラリ. 配線の確認. ブログを報告する, Indiegogoの「Hardware Handbook」が参考になるとのことなので…, http://www.nxp.com/documents/user_manual/UM10204_JA.pdf. これらの実装では、電圧やクロック周波数に違いがあり、また割り込み信号があることもある。, I2C-bus specification and user manual Rev.6, I2C Bus Technical Overview and Frequently Asked Questions, The Bus Buffer Resource. もっとも一般的な I2C バスのモードは、100kbit/s の標準モード (standard mode) と 10kbit/s の低速モード (low-speed mode) だが、クロック周波数はゼロまで下げても構わない。 I2C バスの代表的な用途としては、次の通り。, わずか2本の汎用I/Oピンとソフトウェアだけで、マイクロコントローラからデバイス・チップのネットワークを制御できることが、I2C の最大の利点である。, I2C バスでは、システムが動作中であっても周辺機器の取り付け・取り外しが可能なので、ホットスワップが必要とされる用途には特に向いている。, I2C のようなバスが広まったのは、パッケージのサイズとピン数が、生産コストや集積回路設計に大きな影響を与えていることにコンピュータ技術者が気付いたからである。