You are viewing an older revision! See the latest version
welcome
I2Cサンプルブックのページヘようこそ!¶
CQ出版『トライアルシリーズ(トランジスタ技術 2015年4月号増刊)・LED/モータからA-D/D-A変換まで2線インターフェースI2Cで数珠つなぎ! - マイコンにプラス! シリアル拡張IC サンプルブック[基板付き]』に関連した情報をまとめたページです.
公開コード¶
この本に収録されたサンプルの,データシート,基本操作例のコード,クラスライブラリ(一部非対応)を以下の公開コードの一覧の表にまとめます.
2種類の公開コード¶
基本操作例のコード¶
表中の「基本操作例のコード」は書籍内で紹介された各サンプルデバイスの操作例コード公開ページへのリンクです.mbed-SDKで提供されるI2CのAPIを直接操作して,デバイス内部のレジスタにアクセスしてみる例になっており,よりハードに近い部分を通してのデバイスの挙動を理解するのに良い例となっています.各コード公開ページ内の「Import this program」ボタンを押すことで,サンプルコードをそのまま自分のコンパイラページに取り込み,すぐに試してみることができます.
クラスライブラリ¶
もう一つのプログラム例「クラスライブラリ」は,コンポーネントページへのリンクとなっています.
コンポーネントはmbed環境で使うことのできる「ソフトウェア部品」です.
各デバイスに対応したソフトウェア部品はクラスとして用意されいるので,各クラスによりインスタンスを作成し,APIを呼び出すだけで,デバイスの操作ができるようになっています.
各デバイス用クラスにはHelloWorldプログラム(API使用例サンプル)も用意されています.
また「I2Cサンプルブック対応クラスライブラリ」に,このサンプルブック用に用意されたクラスライブラリの使い方や,ちょっとしたコツをまとめました.合わせてご覧ください.
さらにGPIOエキスパンダとLEDコントローラについては,これらをさらに使いやすくする高水準APIも設けました.このAPIの使い方は「I2Cサンプルブック対応クラスライブラリ:GPIOエキスパンダ,LEDコントローラ用 高水準API」のページに解説があります.
公開コードの一覧¶
mbed-SDK関連¶
mbed APIの使い方¶
書籍内の記事「サンプルコードを使ってみる」内の「mbed APIの使い方」の節で紹介した内容は,mbedのハンドブックページの内容を元にしています.
mbedハンドブック内のI2C API解説ページはこちらを参照ください.(菅工房さんによる日本語翻訳ページはこちら)
I2C APIで接続されたデバイスの内部レジスタを読み書きする具体的な解説はこちらのページ:「I2Cアクセス例」(ページ後半に日本語版あり)にも用意されています.
mbed SDKの中身¶
「mbed SDKの中身」の節で紹介したコードへのリンクも紹介します.
mbed SDKのコードはオープンソース・プロジェクトとしてGitHubで開発・管理されています.
mbedのオンラインコンパイラで使われるmbed SDKは,このGitHubの状態を適宜オンライン環境に持ってくる形で更新されます.
mbed.orgサイト内でのmbed-SDKのソースコード確認
記事内ではGitHubでのコードを紹介しましたが,mbed.org内のオンライン環境でも,これと同じコードがmbed-srcという名のソースコード付きのライブラリとして公開されており,ここでも中身を確認することができます.
このライブラリはプログラムにインポートして使うこともできます.たとえばmbed-SDKに何らかの変更が必要になった際には,そのような使い方も可能です.
Import librarymbed-src
mbed library sources
最新mbed SDKは以下のリンクで確認できます.
https://github.com/mbedmicro/mbed/tree/master/libraries/mbed
I2CのAPI定義は
https://github.com/mbedmicro/mbed/blob/master/libraries/mbed/api/I2C.h
"I2C.h"は"mbed.h"をインクルードすれば,その中でインクルードされるようになっています.
https://github.com/mbedmicro/mbed/blob/master/libraries/mbed/api/mbed.h
I2C APIの実装部分は
https://github.com/mbedmicro/mbed/blob/master/libraries/mbed/common/I2C.cpp
実際のI2Cの動作の実装は,ターゲットとするマイコン毎に異なるため,各マイコンに対応した部分を見る必要があります.記事で紹介されている「青mbed:mbed LPC1768」の実装は
https://github.com/mbedmicro/mbed/tree/master/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X
さらにこのディレクトリの中の「i2c_api.c」にI2C動作が書かれています. https://github.com/mbedmicro/mbed/blob/master/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/i2c_api.c
I2C仕様¶
I2Cの仕様へのリンクを載せておきます.
(日本語版はRev.5,英語版ではRev.6となっています.5と6の違いは,図41と図42の訂正だけなので,Rev.5を参照いただいてもほぼ問題ありません)
UM10204 I2C-bus specification and user manual(英語版)
UM10204 I2C バス仕様およびユーザーマニュアル(日本語版)