CQ_I2C_book


We are the team of "I2C sample book" by CQ publishing

You are viewing an older revision! See the latest version

welcome

I2Cサンプルブックのページヘようこそ!

CQ出版『トライアルシリーズ(トランジスタ技術 2015年4月号増刊)・LED/モータからA-D/D-A変換まで2線インターフェースI2Cで数珠つなぎ! - マイコンにプラス! シリアル拡張IC サンプルブック[基板付き]』に関連した情報をまとめたページです.

cover

公開コード

この本に収録されたサンプルの,データシート,基本操作例のコード,クラスライブラリ(一部非対応)を以下の公開コードの一覧の表にまとめます.

2種類の公開コード

基本操作例のコード

中の「基本操作例のコード」は書籍内で紹介された各サンプルデバイスの操作例コード公開ページへのリンクです.mbed-SDKで提供されるI2CのAPIを直接操作して,デバイス内部のレジスタにアクセスしてみる例になっており,よりハードに近い部分を通してのデバイスの挙動を理解するのに良い例となっています.各コード公開ページ内の「Import this program」ボタンを押すことで,サンプルコードをそのまま自分のコンパイラページに取り込み,すぐに試してみることができます.

code_importing 基本操作例のコードのインポート(図のクリックで拡大)

クラスライブラリ

もう一つのプログラム例「クラスライブラリ」は,コンポーネントページへのリンクとなっています.
コンポーネントはmbed環境で使うことのできる「ソフトウェア部品」です.
各デバイスに対応したソフトウェア部品はクラスとして用意されいるので,各クラスによりインスタンスを作成し,APIを呼び出すだけで,デバイスの操作ができるようになっています.
各デバイス用クラスにはHelloWorldプログラム(API使用例サンプル)も用意されています.

また「I2Cサンプルブック対応クラスライブラリ」に,このサンプルブック用に用意されたクラスライブラリの使い方や,ちょっとしたコツをまとめました.合わせてご覧ください.

さらにGPIOエキスパンダLEDコントローラについては,これらをさらに使いやすくする高水準APIも設けました.このAPIの使い方は「I2Cサンプルブック対応クラスライブラリ:GPIOエキスパンダ,LEDコントローラ用 高水準API」のページに解説があります.

公開コードの一覧

種類デバイス名基本操作例コードクラスライブラリ
温度センサ(±2℃精度)LM75B/teams/CQ_I2C_book/code/LM75B//components/PCT2075-LM75B-I2C-temp-sensor-with-1-deg/
温度センサ(±1℃精度)PCT2075/teams/CQ_I2C_book/code/PCT2075//components/PCT2075-LM75B-I2C-temp-sensor-with-1-deg/
GPIOエキスパンダ・8ビットPCAL9554B/teams/CQ_I2C_book/code/PCAL9554B//components/PCAL9555-PCAL9554-16-8-bit-GPIO-expander/
GPIOエキスパンダ・16ビットPCAL9555A/teams/CQ_I2C_book/code/PCAL9555A//components/PCAL9555-PCAL9554-16-8-bit-GPIO-expander/
LEDコントローラ・4ch・PWM制御PCA9632/teams/CQ_I2C_book/code/PCA9632//components/PCA9632-4ch-LED-driver-voltage-switch-ty/
LEDコントローラ・16ch・PWM制御PCA9622/teams/CQ_I2C_book/code/PCA9622//components/PCA9622-PCA962-PCA9626-8-16-24ch-LED-dri/
LEDコントローラ・8ch・PWM制御PCA9624/teams/CQ_I2C_book/code/PCA9624//components/PCA9622-PCA962-PCA9626-8-16-24ch-LED-dri/
LEDコントローラ・24ch・PWM制御PCA9626B/teams/CQ_I2C_book/code/PCA9626B//components/PCA9622-PCA962-PCA9626-8-16-24ch-LED-dri/
LEDコントローラ・16ch・PWM&電流制御PCA9955A/teams/CQ_I2C_book/code/PCA9955A//components/PCA9955A-PCA9956A-16-24-channel-constant/
LEDコントローラ・24ch・PWM&電流制御PCA9956A/teams/CQ_I2C_book/code/PCA9956A//components/PCA9955A-PCA9956A-16-24-channel-constant/
ステッピングモータ・コントローラPCA9629A/teams/CQ_I2C_book/code/PCA9629A//components/PCA9629A-Stepper-motor-controller/
バススイッチ・4chPCA9546A/teams/CQ_I2C_book/code/PCA9546A//components/PCA9546A/
マスタ・セレクタPCA9541A/teams/CQ_I2C_book/code/PCA9541A/なし
リアルタイムクロック(水晶内蔵)PCF2129AT/teams/CQ_I2C_book/code/PCF2129AT//components/PCF2127-High-accuracy-RTC-module/
リアルタイムクロックPCF85263A/teams/CQ_I2C_book/code/PCF85263A/なし
8ビット A/D,D/AコンバータPCF8591/teams/CQ_I2C_book/code/PCF8591//components/PCF8591/
I2C→UART(シリアル)変換ブリッジSC16IS750/teams/CQ_I2C_book/code/SC16IS750//components/SC16IS750-I2C-or-SPI-to-UART-bridge/

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 バス仕様およびユーザーマニュアル(日本語版)


All wikipages