2002/12/08 【電子回路編TOPに戻る】
今回は、PIC16F873でI2C通信の実験を行うためのテストボードを作りましたのでご紹介します。これもわざわざページを作ってご紹介するほどのものでもないのですが、I2Cはこれからも良く使う予感がしますし、このボードも今後なにかと利用しような気がしますので、ここでキチンとご紹介しておくことにします。
といっても、非常に簡単な基板です...(^^;
13−1.I2C通信とは
そもそもI2C通信とはなに?ということからお話しなければなりません。詳しくは後閑さんの「電子工作の実験室」に分かり易く解説されていますし、細かな規格やタイミングなどはPIC16F873のハードウエアマニュアルにも解説されていますので、ここでは簡単に概略だけをご紹介します。
I2CとはInter Integrated Circuitの略で、主に同一基板内などの近距離に配置されたデバイス間での高速通信(100Kbps/400Kbps/3.4Mbps)を行うための方式です。IICと表記される場合もあります。
デバイス間はSDA(serial data)とSCL(serial clock)の2本の信号線だけをバスとして共有して通信を行います。ひとつのデバイスをマスターとして、複数のデバイスをスレーブとしてぶら下げることができるのが最大の特徴で、1対多チャンネル間の通信を行うことができます。このとき、通信の主導権は全てマスターが握り、各スレーブからマスターに対する通信要求を出したり、各スレーブどうしの通信などは行うことができません。(複数のマスターを接続するマルチマスター機能というものもあります)
今回は、これらのマスターデバイスやスレーブデバイスとしてPIC16F873を利用したテスト基板を作ることにします。PIC16F873はI2Cを行うためのSSP(Synchronous Serial Port)モジュールを搭載しており、RC4ポートがSDA、RC3ポートがSCLと、その端子の割り付けも決まっています。ただしサポートする通信速度は100Kbpsと400Kbpsのみです。
詳細な通信方式や使い方などは、I2C通信のソフトウエアなどを通して別のページでご紹介していくこととしましょう。
13−2.テスト基板外観
下の写真が今回作ったテスト基板です。
PIC16F873が4個載ってるだけのシンプルな基板です。各PICの動作をモニタリングするためのLEDを2bit分ずつ付けています。左側のコネクタは外部からの電源供給と、外部のSDA/SCLの信号線と接続するためのコネクタで、右側のコネクタは各PICから出力されるPWM信号を取り出すためのものです。
もちろん、各PIC間のSDA端子とSCL端子はお互いにバス接続されています。
ここで注意!PICとセラロック部分はソケットを使っています。特にPICは取り外してPICライターでプログラムの書き込みをするため、直接はんだ付けしてはいけません。
13−3.テスト基板の回路図
以下がテスト基板の回路図です。
見づらくってすみません。画面に入りきらないため略図としてあります。略図ではない回路図はここをクリックするとPDFファイルでダウンロードできます。I2CTESTB.PDF(64KB)
PICは@からCまでの4個実装されていますが、AからCまでの配線は@と同様です。電源供給部分やOSC用セラロック、そしてRB0とRB1に接続されるLEDも、@と同じ配線です。
左上のコネクタで外部からのSDAとSCLを取り込み各PICにバス接続しています。また外部からRESET信号MCLRも取り込んで同様にバス接続していますが、ここは外部から取り込まず単に+5Vに吊ってしまってもOKです。
忘れてはならないのが、SDAとSCL信号を1KΩで+5Vにプルアップしている配線です。(右上)I2C通信の方式上、これがないと信号のやり取りが行えません。
RB4〜6の接続だけは各PICで異なります。PICの実装用にソケットを使っていますが、この3ビット分でソケット番号を表しています。つまり、RB4〜6のデータを読み込むことにより、PICが自分の実装位置(ID番号)を検出することが出来るようにしています。この部分がミソです。(^^; |
RB4〜6の配線は、各ソケットごとに以下のようになっています。
RB6 | RB5 | RB4 | |
ソケット@ | 0 | 0 | 0 |
ソケットA | 0 | 0 | 1 |
ソケットB | 0 | 1 | 0 |
ソケットC | 0 | 1 | 1 |
0:GND、1:+5V
さて、この基板上に実装されるPICは、ソケット(ID)番号を示す配線部分以外は全て同じです。この4個のうち、どれかひとつをマスターとして残りの3個をスレーブにするという使い方も出来ますし、マスターを外部に持たせて、この基板上の4個を全てスレーブにするということもできます。全てはソフトウエア次第というところです。
具体的なソフトウエアについては、追々ソフトウエア編の【PIC】の部分でご紹介していくことにしましょう。