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出版『トランジスタ技術 増刊・I2Cで継ぎ足し自在! マイコン機能パワーアップICサンプル・ブック(トライアルシリーズ) 2015年 04 月号』に関連した情報をまとめたページです.

公開コード

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

2種類の公開コード

基本操作例のコード

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

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

クラスライブラリ

もう一つのプログラム例「クラスライブラリ」は,コンポーネントページへのリンクとなっており,各デバイス手軽に使って見るためのコードも用意されています.各デバイスはクラスとして用意されいるので,各クラスのインスタンスを作成して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についてはこちらのページ(英語)を参照ください.(菅工房さんによる日本語翻訳ページはこちら)

mbed SDKの中身

「mbed SDKの中身」の節で紹介したコードへのリンクも紹介します.

mbed SDKのコードはオープンソース・プロジェクトとしてGitHubで開発・管理されています.
mbedのオンラインコンパイラで使われるmbed SDKは,このGitHubの状態を適宜オンライン環境に持ってくる形で更新されます.記事内ではGitHubでのコードを紹介しましたが,mbed.org内のオンライン環境でも,これと同じコードが公開されています.こちらを参照するには次のリンクが使えます.
http://developer.mbed.org/users/mbed_official/code/mbed-src/

最新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の仕様へのリンクを載せておきます.
UM10204 I2C-bus specification and user manual(英語版)
UM10204 I2C バス仕様およびユーザーマニュアル(日本語版)


All wikipages