(57)【要約】【課題】Ｉ２Ｃデータ通信システムにおいて、メモリデバイス間のデータコピーの高速化を図る。【解決手段】マスタであるマイクロコンピュータ１は、コピー元メモリ２とコピー先メモリ３に対してWRITEのスレーブアドレス(W)とサブアドレスを出力する。次にコピー先メモリ３を信号線から切り離し、READのスレーブアドレス(R)を出力することで、スレーブアドレス(R)をコピー元メモリ２のみに検知させる。続いて、コピー元メモリ２とコピー先メモリ３を信号線に接続して、マイクロコンピュータ１が1ワード区間ごとのタイミングでクロックを出力すると、コピー元メモリ２からのデータの読み出しと、コピー先メモリ３のデータの書込が同期し、信号線を介しての直接的なコピー元メモリ２からコピー先メモリ３へのデータコピーが実現される。【選択図】図２
2007004227.tif 000002
【特許請求の範囲】
【請求項１】
マスタ装置と、スレーブ装置として少なくとも第１のスレーブ装置と、第２のスレーブ装置とを、信号線が共有可能なようにして接続する接続手段と、
上記マスタ装置から、上記第１のスレーブ装置と上記第２のスレーブ装置がデータ書込対象スレーブであることを指定する内容を有する書込スレーブ指定情報を出力させるための第１の指定情報出力手段と、
上記書込スレーブ指定情報が出力された後に、上記マスタ装置から、上記第２のスレーブ装置がデータ読出対象スレーブであることを指定する内容を有する読出スレーブ指定情報を出力させるための第２の指定情報出力手段と、
上記読出スレーブ指定情報が出力された後において、上記第１のスレーブ装置からのデータの読み出しの動作と、この読み出し動作と同期した上記第２のスレーブ装置におけるデータ書き込みの動作とが実行されるように制御するデータ読出／書込制御手段と、
上記第１の指定情報出力手段により上記書込スレーブ指定情報が出力されるとき、及び上記データ読出／書込制御手段による上記第１のスレーブ装置からのデータの読み出しと上記第２のスレーブ装置のデータ書き込みの動作が実行されているときには、上記マスタ装置と上記第１のスレーブ装置と上記第２のスレーブ装置との間での上記信号線の共有された接続状態を形成し、上記第２の指定情報出力手段により上記読出スレーブ指定情報が出力されるときには、上記マスタ装置と上記第１のスレーブ装置との間で上記信号線が共有され、上記第２のスレーブ装置は、上記信号線から切り離されるようにして、上記接続手段としての回路の切り換えを行う第１の接続切換手段と、
を備えることを特徴とするデータ通信装置。
【請求項２】
上記接続手段は、
上記マスタ装置と上記第１のスレーブ装置とを接続する上記信号線の接続点と、上記第２のスレーブ装置との間に挿入されて、上記信号線のオン／オフが可能に構成される第１のスイッチを備え、
上記第１の接続切換手段は、
上記第１の指定情報出力手段により上記書込スレーブ指定情報が出力されるとき、及び上記データ読出／書込制御手段による上記第１のスレーブ装置からのデータの読み出しと上記第２のスレーブ装置のデータ書き込みの動作が実行されているときには、上記第１のスイッチをオンとし、
上記第２の指定情報出力手段により上記読出スレーブ指定情報が出力されるときには、上記第１のスイッチをオフとするように制御する、
ことを特徴とする請求項１に記載のデータ通信装置。
【請求項３】
上記信号線は、データ線とクロック線を対として成り、
上記スイッチは、上記データ線とクロック線の何れか一方に対して備えられる、
ことを特徴とする請求項２に記載のデータ通信装置。
【請求項４】
所定単位のデータの書き込みに応じた上記第２のスレーブ装置からの応答出力が行われるときに、上記マスタ装置には上記応答出力が入力され、上記第１のスレーブ装置には、上記応答出力に相当する信号が入力されないように、上記接続手段としての回路の切換を行う第２の接続切換手段、
を備えることを特徴とする請求項１に記載のデータ通信装置。
【請求項５】
上記接続手段は、
上記マスタ装置と上記第２のスレーブ装置とを接続する上記信号線の接続点と、上記第１のスレーブ装置との間に挿入されて、上記信号線のオン／オフが可能に構成される第２のスイッチと、上記第１のスレーブ装置が信号線と接続される端子を所定電位とする電圧を印加する電圧印加回路を備え、
上記第２の接続切換手段は、
所定単位のデータの書き込みに応じた上記第２のスレーブ装置からの応答出力が行われるときには、上記第２のスイッチをオフの状態とするようにされている、
ことを特徴とする請求項４に記載のデータ通信装置。
【請求項６】
上記第１の指定情報出力手段は、上記データ書込対象スレーブであることをスレーブアドレスにより指定するものとされており、上記第１のスレーブ装置と上記第２のスレーブ装置とでスレーブアドレスが異なる場合には、
所定のビット値による原スレーブアドレスを出力させる原スレーブアドレス出力手段と、
上記原スレーブアドレス出力手段により出力される原スレーブアドレスについて、上記第１のスレーブ装置のスレーブアドレスに変換されるようにして所定のビット位置にて反転制御を行って上記第１のスレーブ装置に入力する第１の反転制御手段と、
上記原スレーブアドレス出力手段により出力される原スレーブアドレスについて、上記第２のスレーブ装置のスレーブアドレスに変換されるようにして所定のビット位置にて反転制御を行って上記第２のスレーブ装置に入力する第２の反転制御手段とを備えて構成される、
ことを特徴とする請求項１に記載のデータ通信装置。
【請求項７】
上記接続手段は、上記原スレーブアドレスが伝送される信号線における、上記マスタ装置と上記第２のスレーブ装置とを接続する接続点と、上記第１のスレーブ装置との間に挿入されて、この信号線のオン／オフが可能に構成される第１スレーブ側スイッチと、上記第１のスレーブ装置がこの信号線と接続される端子を所定電位とする電圧を印加する第１スレーブ側電圧印加回路を備えるとともに、
上記原スレーブアドレスが伝送される信号線における、上記マスタ装置と上記第１のスレーブ装置とを接続する接続点と、上記第２のスレーブ装置との間に挿入されて、この信号線のオン／オフが可能に構成される第２スレーブ側スイッチと、上記第２のスレーブ装置がこの信号線と接続される端子を所定電位とする電圧を印加する第２スレーブ側電圧印加回路を備え、
上記第１の反転制御手段は、上記第１スレーブ側スイッチのオン／オフ制御により反転制御を行い、
上記第２の反転制御手段は、上記第２スレーブ側スイッチのオン／オフ制御により反転制御を行うようにされる、
ことを特徴とする請求項６に記載のデータ通信装置。
【請求項８】
マスタ装置と、データ読出対象となる第１のスレーブ装置と、データ書込対象となる第２のスレーブ装置とを、信号線が共有されるようにして接続して成るデータ通信装置におけるデータ通信方法であって、
上記マスタ装置から、上記第１のスレーブ装置と上記第２のスレーブ装置がデータ書込対象スレーブであることを指定する内容を有する書込スレーブ指定情報を出力させるための第１の指定情報出力手順と、
上記書込スレーブ指定情報が出力された後に、上記マスタ装置から、上記第２のスレーブ装置がデータ読出対象スレーブであることを指定する内容を有する読出スレーブ指定情報を出力させるための第２の指定情報出力手順と、
上記読出スレーブ指定情報が出力された後において、上記第１のスレーブ装置からのデータの読み出しの動作と、この読み出し動作と同期した上記第２のスレーブ装置におけるデータ書き込みの動作とが実行されるように制御するデータ読出／書込制御手順と、
上記第１の指定情報出力手順により上記書込スレーブ指定情報が出力されるとき、及び上記データ読出／書込制御手段による上記第１のスレーブ装置からのデータの読み出しと上記第２のスレーブ装置のデータ書き込みの動作が実行されているときには、上記マスタ装置と上記第１のスレーブ装置と上記第２のスレーブ装置との間での上記信号線の共有された接続状態を形成し、上記第２の指定情報出力手順により上記読出スレーブ指定情報が出力されるときには、上記マスタ装置と上記第１のスレーブ装置との間で上記信号線が共有され、上記第２のスレーブ装置は、上記信号線から切り離されるようにして、上記接続手段としての回路の切り換えを行う接続切換手順と、
を実行することを特徴とするデータ通信方法。
【請求項９】
マスタ装置と、データ読出対象となる第１のスレーブ装置と、データ書込対象となる第２のスレーブ装置とを、信号線が共有されるようにして接続してデータ通信装置を形成する場合において、上記マスタ装置に実行させるプログラムであって、
上記マスタ装置から、上記第１のスレーブ装置と上記第２のスレーブ装置がデータ書込対象スレーブであることを指定する内容を有する書込スレーブ指定情報を出力させるための第１の指定情報出力手順と、
上記書込スレーブ指定情報が出力された後に、上記マスタ装置から、上記第２のスレーブ装置がデータ読出対象スレーブであることを指定する内容を有する読出スレーブ指定情報を出力させるための第２の指定情報出力手順と、
上記読出スレーブ指定情報が出力された後において、上記第１のスレーブ装置からのデータの読み出しの動作と、この読み出し動作と同期した上記第２のスレーブ装置におけるデータ書き込みの動作とが実行されるように制御するデータ読出／書込制御手順と、
上記第１の指定情報出力手順により上記書込スレーブ指定情報が出力されるとき、及び上記データ読出／書込制御手段による上記第１のスレーブ装置からのデータの読み出しと上記第２のスレーブ装置のデータ書き込みの動作が実行されているときには、上記マスタ装置と上記第１のスレーブ装置と上記第２のスレーブ装置との間での上記信号線の共有された接続状態を形成し、上記第２の指定情報出力手順により上記読出スレーブ指定情報が出力されるときには、上記マスタ装置と上記第１のスレーブ装置との間で上記信号線が共有され、上記第２のスレーブ装置は、上記信号線から切り離されるようにして、上記接続手段としての回路の切り換えを行う接続切換手順と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マスタ、スレーブとなる各デバイス（装置）が信号線を共有するようにして接続されて成るべきデータ通信システムが備えるデータ通信装置と、その方法、及びデータ通信装置におけるマスタとしての装置が実行するプログラムに関するものである。
【背景技術】
【０００２】
シリアルデータ通信規格の１つとして、Ｉ２Ｃ(Inter Integrated Circuit)が知られている。Ｉ２Ｃは、現状では、例えば各種電子機器におけるマイクロコンピュータ（ＣＰＵ）などのコントロールデバイスと、ＥＥＰＲＯＭ(Electrically Erasable and Programmable Read Only Memory)などのメモリデバイス、あるいはA/Dコンバータ、D/Aコンバータなどのデバイスとの間での通信を行うためのバスとして採用されている。
【０００３】
このようなＩ２Ｃを利用して、例えば、コピー元となるデータが記憶保持されたＥＥＰＲＯＭから、コピー先となる他のＥＥＰＲＯＭに対してデータをコピーする場合のシステム構成例を図７に示す。
【０００４】
一般に、Ｉ２Ｃでは、マスタとなるデバイス（ノード）と、スレーブとなるデバイス（ノード）を、データ線とクロック線を対とする信号線により接続するようにされる。図７では、マスタとしてマイクロコンピュータ１を備えることとし、スレーブとして、コピー元メモリ２（スレーブ１）及びコピー先メモリ３（スレーブ2）を備える。コピー元メモリ２及びコピー先メモリ３は、この場合には何れもＥＥＰＲＯＭとされる。コピー元メモリ２には、コピー先メモリ３に対して書き込んで記憶保持させるべき、所定内容のデータが記憶済みの状態にある。
【０００５】
Ｉ２Ｃでは、データ線とクロック線の2本を対とする信号線が、各ノードにより共有されるようにして接続を行うようにされる。そこで、図７にあっては、データ線Ｌdtを、マイクロコンピュータ１のデータ端子DATM、コピー元メモリ２のデータ端子DAT1、コピー先メモリ３のデータ端子DAT2のそれぞれと接続するようにされる。また、クロック線Ｌclを、マイクロコンピュータ１のクロック端子CLKM、コピー元メモリ２のデータ端子CLK1、コピー先メモリ３のデータ端子CLK2のそれぞれと接続するようにされる。このようにして、いわゆるワイヤードオア（wired or）接続が形成される。また、各ノードは、オープンコレクタである。
また、クロック線Ｌclに対しては、プルアップ抵抗Ｒ１を介して直流電圧Ｖccが印加されており、データ線Ｌdtに対しては、プルアップ抵抗Ｒ２を介して直流電圧Ｖccが印加されている。これにより、クロック線Ｌcl及びデータ線Ｌdtは、それぞれ所定電位によりプルアップされる状態が得られる。従って、各ノードが信号を出力する場合には、Lレベルを出力するようにされる。Hレベルはプルアップの状態時の電位となる。
【０００６】
上記図７に示すようにして構成されるデータ通信システムにより、コピー元メモリ２に記憶されているデータをコピー先メモリ３にコピーするための手順について、図８を参照しながら説明する。
【０００７】
Ｉ２Ｃの通信プロトコルでは、マスタとなるノードが、スレーブに対する制御を行う。従って、図６に示す構成の下では、マスタであるマイクロコンピュータ１が、スレーブであるコピー元メモリ２、及びコピー先メモリ３に対するデータの読み出し、書き込みのためのコントロールを実行するようにされる。このとき、クロック線Ｌclに対するクロックの出力は、マスタであるマイクロコンピュータ１が行い、このクロックに応じたタイミングで、データ線Ｌdtに対するデータ入出力が行われる。
【０００８】
図８のステップＳ１０１として示す手順では、先ず、マイクロコンピュータ１が、コピー元メモリ２から、コピー元となるデータを一定量読み出す。このためには、マイクロコンピュータ１が、コピー元メモリ２に対してデータリードを要求し、これに応答したコピー元メモリ２が、データリード要求により指定されたアドレスからデータの読み出しを実行して、そのデータの信号を出力する。そして、このようにして読み出されたデータを、例えばマイクロコンピュータ１が取り込んで、内部に備えるとされるＲＡＭ（バッファ）１ａに対して書き込んで一旦保持させる（バッファリングする）。
そして、続くステップＳ１０２としての処理によって、上記ステップＳ１０１によりＲＡＭ１ａに保持されたデータをコピー先メモリに対して書き込む。このためには、マイクロコンピュータ１が、コピー先メモリ３に対してデータの書き込みを実行することを通知したうえで、ＲＡＭ１ａからのデータを読み出して、データ端子DATMから出力する。コピー先メモリ３では、データ端子DATMに出力されたデータの読み込みを行って記憶保持するようにされる。これにより、コピー先メモリ３に対するデータ書き込みが行われたことになる。
【０００９】
そして、上記ステップＳ１０１，Ｓ１０２の処理を、ステップＳ１０３により、コピー対象であるデータの全てについての書き込み（コピー）が終了したと判別されるまで、繰り返し実行するようにされる。
【００１０】
【特許文献１】特開２０００−１３２５０６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
例えば上記のようにしてコピー元からコピー先のメモリに対してデータをコピーする動作はできるだけ高速化されて、データコピーに要する時間としても短縮されることが好ましい。
しかしながら、上記図７及び図８により示したデータコピーの構成では、下記のような理由で、データコピー動作の高速化を図ることが困難となっている。
マイクロコンピュータ１が備えるＲＡＭ１ａについては、比較的小さい容量が設定されることが一般的となっている。このＲＡＭ１ａの容量の小さいことが、データコピーのときにはボトルネックとなる。つまり、ＲＡＭ１ａの容量が小さいことで、図８におけるステップＳ１０１によりコピー元メモリ２から読み出すデータ量も、ＲＡＭ１ａの容量に応じて制限されることとなる。このために、コピー対象となるデータのサイズにもよるが、コピー対象となるデータの全てを、コピー先メモリ３に対して記憶させるために繰り返すステップＳ１０１→Ｓ１０２の処理は、現実には相当の回数となる。つまり、コピー元メモリからデータを読み出してＲＡＭ１ａに保持し、この保持したデータをコピー先メモリ３に書き込む、という処理を多数回実行することが必要になる。このようなことが要因となって処理の高速化が妨げられている。
【課題を解決するための手段】
【００１２】
そこで本発明は上記した課題を考慮して、例えばデータコピーなどのためのデバイス間のデータの授受について高速化が図られるようにすることを目的とし、このために、データ通信装置として次のように構成することとした。
本発明のデータ通信装置としては、マスタ装置と、スレーブ装置として少なくとも第１のスレーブ装置と、第２のスレーブ装置とを、信号線が共有可能なようにして接続する接続手段と、マスタ装置から、第１のスレーブ装置と第２のスレーブ装置がデータ書込対象スレーブであることを指定する内容を有する書込スレーブ指定情報を出力させるための第１の指定情報出力手段と、書込スレーブ指定情報が出力された後に、マスタ装置から、第２のスレーブ装置がデータ読出対象スレーブであることを指定する内容を有する読出スレーブ指定情報を出力させるための第２の指定情報出力手段と、読出スレーブ指定情報が出力された後において、第１のスレーブ装置からのデータの読み出しの動作と、この読み出し動作と同期した第２のスレーブ装置におけるデータ書き込みの動作とが実行されるように制御するデータ読出／書込制御手段と、第１の指定情報出力手段により書込スレーブ指定情報が出力されるとき、及びデータ読出／書込制御手段による第１のスレーブ装置からのデータの読み出しと第２のスレーブ装置のデータ書き込みの動作が実行されているときには、マスタ装置と第１のスレーブ装置と第２のスレーブ装置との間での信号線の共有された接続状態を形成し、第２の指定情報出力手段により読出スレーブ指定情報が出力されるときには、マスタ装置と第１のスレーブ装置との間で信号線が共有され、第２のスレーブ装置は、信号線から切り離されるようにして接続手段としての回路の切り換えを行う第１の接続切換手段を備えることとした。
【００１３】
上記構成によれば、マスタ装置から書込スレーブ指定情報を出力するときには、信号線を経由して、第１のスレーブ装置と第２のスレーブ装置とに対して入力させることになる。この段階では、第１のスレーブ装置と第２のスレーブ装置は、ともに、データ書込対象スレーブであると認識する。またこの後において出力される読出スレーブ指定情報は、第１のスレーブ装置のみに対して入力され、第２のスレーブ装置には入力されない。従って、読出スレーブ指定情報を出力した段階では、第１のスレーブ装置は、自身は、データ書込対象スレーブではなく、データ読み出し対象スレーブであると認識し、第２のスレーブ装置は、依然として、自身はデータ書込対象スレーブであると認識することになる。
そして、この後において、第１のスレーブ装置と第２のスレーブ装置との間で信号線が共有された状態で、上記データ読出対象スレーブからのデータの読み出しと、データ書込対象スレーブのデータ書き込みを実行させるための制御が行われることで、自身をデータ読出対象スレーブであると認識している第１のスレーブ装置が読み出して信号線に出力したデータは、自身をデータ書込対象スレーブであるとして認識している第２のスレーブ装置が取り込むことが可能になる。このようにして、本願発明では、マスタ装置を介在することなく、データ読出対象スレーブとデータ書込対象スレーブとによるスレーブ装置間での直接的なデータの授受が可能となる。
【発明の効果】
【００１４】
上記のようにして本発明では、スレーブ装置間での直接的なデータの授受が可能なることで、従来のようにして、読出対象のスレーブ装置から読み出させたデータをマスタ装置が一時保持し、この保持したデータをデータ書込対象スレーブに対して出力して書き込ませる、というシーケンスを所要回数繰り返し実行する場合と比較して、データの授受が終了するまでに要する時間は短縮されることになる。つまり、データ授受の処理の高速化が図られる。本願発明において、この効果は、マスタ装置がデータ保持のために実際に備えるべきＲＡＭ（バッファ）などのメモリの容量が小さくなるほど、また、授受されるべきデータのサイズが相応に大きく、上記シーケンスの繰り返し回数が増加するほど、顕著となる。
【発明を実施するための最良の形態】
【００１５】
以下、本願発明の実施の形態としてのデータ通信システム（データ通信装置）について説明を行っていくこととする。
本実施の形態としては、データ通信システムを構成するのにあたり、データ通信規格としてＩ２Ｃ(Inter Integrated Circuit)を採用した場合を例に挙げる。
【００１６】
Ｉ２Ｃは、シリアルデータ通信の規格の１つであり、データ線とクロック線の２本を対とする信号線により、マスタとしてのノードとスレーブとしてのノードとの間での接続を行い、その接続態様としてはワイヤードオア(Wired Or)接続となる。各ノードの出力はオープンコレクタであり、データ線とクロック線のそれぞれは、所定電位によりプルアップされるように回路が形成される。
また、ノードが、データ若しくはクロックを出力する場合には、信号線についてアクティブに駆動せずにプルアップさせた状態とすることでHレベルとし、信号線のプルアップされた電位をグランド電位となるようにしてアクティブに駆動することでＬレベルを出力させることで行うようにされる。また、データのサンプルは、クロックがＨレベルに立ち上がったタイミングで実行するものとされている。
また、データの入出力はワード単位となる。1ワードは9ビットで、先頭の第０ビット〜第7ビットまでの8ビットがデータとなり、最後の第8ビットの1ビットはACK(ACKNOWLEDGE)となる。
本実施の形態としては、例えばこのようなＩ２Ｃバスを採用することとしたうえで、コピー元とされるＥＥＰＲＯＭに記憶されるデータを、コピー先のＥＥＰＲＯＭに対して書き込んで記憶させるためのデータコピーの処理の高速化が図られるようにする。このような目的を達成するのにあたり、先ず、本実施の形態にかかわるところのＩ２Ｃの基本的な通信プロトコルについて考察してみる。
【００１７】
図６（ａ）は、ランダムシーケンシャルリードといわれる、スレーブ及びアドレスを指定しての、特定のスレーブからのデータの読み出しを実行させる場合における、マスタのデータ出力端子（DAT）における信号状態を時間経過に従って示している。
先ず、マスタは、時点ｔ０において、Ｉ２Ｃバス（信号線）により接続されたスレーブとの通信を開始するために、スタートコンディション(STRT)の信号状態を発生させる。Ｉ２Ｃにおけるスタートコンディションは、周知のようにして、マスタが、クロックについてはHレベルとした状態で、データについてはLレベルに駆動することで発生する。
そして、このスタートコンディションの発生後の所定タイミングとなる時点ｔ１において、データ書込対象となるスレーブをスレーブアドレスにより指定するのための1ワードの出力期間が設定される。ここではスレーブアドレスは8ビットにより表現されるものとし、ここでのデータ書込対象となるスレーブを指定するスレーブアドレス(W)は、0xA0（0xは続く英数字が16進数表記のものであることを示す）とする。これに応じて、時点ｔ１からの1ワード区間における先頭の第０ビットから第７ビットまでの８ビットとしては、10100000(=0xA0)となるようにして駆動される。この場合、１＝Hレベル、０＝Lレベルである。但し、この1ワード区間における第７ビットは、実際にはデータ通信方向に対応するWRITE(WRTE)／READ（書き込み／読み出し）のモードを指定するためのビットとされており、WRITEを指定する場合には０（L）で、READを指定する場合には１（H）であることが規定されている。ビットが０でWRITEモードとされるときには、この1ワード区間により指定されたアドレスのスレーブは、データが書き込まれるべきスレーブ（データ書込対象スレーブ）であることになる。一方、ビットが１でREADモードとされるときには、この1ワード区間により指定されたアドレスのスレーブは、データが読み出されるべきスレーブ（データ読出対象スレーブ）であることになる。
また、第７ビットが上記の扱いとされる場合、8ビットによるスレーブアドレスは、実際には、最小ビットが１となるアドレスは設定しないようにされる。例えばスレーブのアドレスとして、0xA0の次に高い値としては、0xA1(＝10100001)ではなく、0xA2(＝10100010)とすべきことになる。
上記のようにして、マスタが、時点ｔ１から８ビットのスレーブアドレス(W)（WRITEモードのビットを含む）を出力したとされると、この信号が、データ線を介して接続されるスレーブの全てにおいて検知されることになる。そして、これらのスレーブのうちで、検知したスレーブアドレスと一致するスレーブアドレス(0xA0)が割り当てられているスレーブが、1ビット分のLレベル駆動をデータ線に対して行う。これが、時点ｔ１における1ワード区間の第8ビットにおけるACKとして、マスタ側にて検知される。マスタは、このACKを検知したのに応じて、時点ｔ１からの1ワード区間にて出力したスレーブアドレスに対する応答が正常に得られたものと認識し、次の手順に移行するようにされる。また、以降において通信が終了するまでは、この時点ｔ１からの1ワード区間の段階でデータ書込対象スレーブとして指定された、スレーブアドレス＝0xA0のスレーブのみが、マスタのコントロールに対して応答することになる。
【００１８】
時点ｔ１からの1ワード区間を終了した次の1ワード区間となる時点ｔ２からは、マスタは、サブアドレスを発生して出力する。サブアドレスは、スレーブ（ノード）内におけるデータ書込（読出）のアドレスを指定するもので、ここでも８ビットにより表現されるものとしている。今回、データ書込対象スレーブとして指定されたスレーブは、上記のようにして出力されたサブアドレスを検知すると、ここでもACKを出力することになり、マスタが、このACKを検知するようにされる。
【００１９】
この場合、マスタは、上記時点ｔ２からの1ワード区間を終了した後の時点ｔ３により、再度、スタートコンディション（リスタートコンディション）を発生させる。そして、続く時点ｔ４からの1ワード区間により、マスタは、データが読み出しされるべきスレーブ（データ読出対象スレーブ）を指定するためのスレーブアドレス(R)を出力する。このときのスレーブアドレス(R)は、先の時点ｔ１からの1ワード区間にて出力した、データ書込対象スレーブと同じスレーブを指定する。つまり、この場合には、スレーブアドレスとして0xA0を指定する。但し、このときには、データ読出対象スレーブを指定することから、この1ワード区間における第７ビットは、READを示すHレベルとなるようにされる。この場合、1ワード区間における第０〜第7ビットまでの8ビットの区間は、10100001(＝0xA1)となるが、前述もしたように、スレーブアドレスとして0xA1は存在しないこととされており、0xA1の値は、0xA0であるとみなすようにされる。アドレス＝0xA0のスレーブは、このスレーブアドレス(R)を検知したことに応答して、同じ1ワード区間の第8ビットとしてのACKを出力し、このACKをマスタが検知する。
【００２０】
Ｉ２Ｃでは、スレーブからデータを書き込むときと、読み出すときとにかかわらず、時点ｔ１からの1ワード区間として示すように、スレーブからのデータの読み出しを行いたいときには、先ず、WRITEモード指定のスレーブアドレス(W)を発行してデータ書込対象スレーブ、若しくはデータ読出対象スレーブを指定すべきものとされている。従って、時点ｔ１からの1ワード区間によるスレーブアドレス(W)に応答したスレーブは、先ず、自身がデータ書込対象スレーブとして指定されていると認識することになる。そして、読み出しの場合には、この後において、時点ｔ３、時点ｔ４からの動作として示すように、リスタートコンディションを発生させたうえで、READモード指定のスレーブアドレス(R)を発行させて、通信方向の切り換えを行うようにされる。データ書込対象スレーブとして先に指定されたスレーブが、このスレーブアドレス(R)を検知すると、そのスレーブは、改めて、自身がデータ読出対象スレーブとして指定されていると認識するようにされる。なお、読み出しのためのデバイス内のメモリアドレスについては、先の時点ｔ２からの1ワード区間により発行されたサブアドレスが有効となる。
【００２１】
図６（ａ）において、上記時点ｔ４からの1ワード区間が終了したとすると、次の時点ｔ５以降において、データ読出対象スレーブからのデータの読み出しを実行させて、この読み出されたデータがデータ線に出力されるようにする動作を、1ワード区間ごとに実行する。このためには、マスタが、1ワード区間(９ビット)ごとのタイミングでのクロックの出力を行うようにされる。このクロックは、クロック線を伝達するようにしてスレーブであるデータ読出対象スレーブにて検知される。そして、データ読出対象スレーブは、このようにして検知したクロックのタイミングに同期するようにして、内部メモリから8ビット単位データの読み出しを行ってデータ線に対してシリアルに出力する。また、この場合には、マスタがデータを受信する側となるので、データ読出対象スレーブから出力された8ビット単位のデータをマスタが入力したのに応答して、1ワード区間における最終ビットとして、マスタがACKを出力することになる。マスタは、例えばデータ読出対象スレーブから出力されたデータの読み込み動作として、受信したデータを自身が備えるＲＡＭなどの作業領域に保持させる。このようにして、1ワード区間ごとのデータの読み込みを開始していき、時点ｔ６からの最後のデータ＃ｎにおける8ビットのデータの読み込みを終了したとされると、この段階では、マスタはACKを発生させずに(NACK)、1ワード区間における最終ビットとしてはHレベルとなるように駆動する。
データ読出対象スレーブが上記のようにして発生されたNACKを検知した場合、データ読出対象スレーブは、それ以上のデータの読み出しを停止することになる。
そして、例えば時点ｔ７において、マスタがストップコンディション(STOP)を発生させることで、マスタとデータ読出対象スレーブとの間の通信が終了する。ストップコンディションは、周知のようにして、クロック線をLレベルに駆動し、かつデータ線もLレベルとした状態から、クロック線をＨレベルに切り換え、さらに、この状態から、データ線をＨレベルに立ち上げる。
【００２２】
図６（ｂ）は、ランダムシーケンシャルライトといわれる、スレーブ及びアドレスを指定しての、特定のスレーブに対するデータの書き込みを実行させる場合における、マスタのデータ出力端子（DAT）における信号状態を時間経過に従って示している。
【００２３】
この場合にも、先ず、マスタは、時点ｔ０において、スレーブとの通信を開始するために、スタートコンディション(STRT)の信号状態を発生させ、この後の時点ｔ１からの1ワード区間により、データ書込対象となるスレーブをスレーブアドレス(W)により指定する。ここでも、データ書込対象となるスレーブのスレーブアドレス(W)は、0xA0としている。従って、図６（ｂ）においても、時点ｔ１からの1ワード区間における先頭の８ビットとしては、10100000(=0xA0)となるようにして駆動される。なお、この場合にも、第７ビットは、通信方向としてWRITEモードを指定するために０（Ｌレベル）となっている。そして、この8ビットのスレーブアドレス(W)を受信したスレーブのうちで、指定されたスレーブアドレスが割り当てられたスレーブが、1ビットのACKを出力し、以降は、このスレーブがマスタに対して応答する。
さらに、時点ｔ１からの1ワード区間を終了した次の1ワード区間となる時点ｔ２からは、マスタは、サブアドレスを発生して出力し、今回、データ書込対象スレーブとして指定されたスレーブは、このサブアドレスに応答してACKを出力する。
【００２４】
上記時点ｔ２からの1ワード区間の終了までは、上記した図６（ａ）のランダムシーケンシャルリードの場合と同様となる。しかしながら、図６（ｂ）におけるランダムシーケンシャルライトの場合には、スレーブに対してデータを書き込むべきモードとなるために、ランダムシーケンシャルリードの場合のようにして通信方向の切り換えを行う必要はない。このために、図６（ａ）との比較として示すようにして、時点ｔ３におけるリスタートと、時点ｔ４からのスレーブアドレス(R)を出力する1ワード区間は省略され、時点ｔ２からのサブアドレスの区間に続けて、時点ｔ５からのデータの書き込みを実行していくことができる。
【００２５】
図６（ｂ）の場合における時点ｔ５からのデータ＃０〜データ＃ｎまでの書き込みにあたっては、マスタが、1ワード区間ごとのタイミングで9ビット対応のクロックを出力させるとともに、書き込みデータに応じてデータ線を駆動する。つまり、マスタ側においては、先の図６（ａ）に示したシーケンスにより読み出したデータをＲＡＭに保持している。マスタは、図６（ｂ）の時点ｔ５からの動作として、クロックに同期させるようにして、最初の1ワード区間におけるデータ＃０としての最初の8ビットの書き込み用のデータを内部ＲＡＭから読み出し、この読み出したデータに応じたビット値に応じて、データ線を駆動する。
このようにしてデータ線が駆動されることで、データ書込対象スレーブでは、このデータ線に発生した電位をデータとして検知して入力し、例えば内部のメモリに対して記憶保持するようにされる。そして、上記8ビットの書き込み用データの検知を終了したとされる次のビットのタイミングで、ACKを発生させる。このACKを検知することで、マスタは、自身が出力したデータが、正常にデータ書込対象スレーブに書き込まれたことを認識する。
そして、この場合にも、時点ｔ６からの1ワード区間は、最後のデータ＃ｎとしての8ビットを出力する期間となる。マスタは、この1ワード区間における先頭からの8ビットにより最後のデータをＲＡＭから読み出してデータ線に出力する。このときにも、ACKはデータ書込対象スレーブから出力される。
マスタは、時点ｔ６からの1ワード区間により最後のデータを出力したとされると、以降においてデータ出力期間は設けないようにされる。スレーブに対するデータの書き込みは、これで終了する。また、この場合にも、例えば時点ｔ７によりストップコンディション(STOP)を発生させ、マスタとデータ書込対象スレーブとの間の通信を終了させる。
【００２６】
例えば、従来として図７及び図８に示した構成、手順により、コピー元メモリ２に記憶されているデータを、コピー先メモリ３に記憶させるためには、先ず、ステップＳ１０１の処理として、図６（ａ）に示すシーケンスに従って、スレーブアドレス(W)、及びサブアドレスの発行により、コピー元メモリ２をデータ読出対象スレーブとして指定すると共に、デバイス内のアドレスを指定し、さらに、スレーブアドレス(R)により通信方向の切り換えを行ったうえで、データの読み込みを開始するようにされる。そして、例えば、マスタ側のＲＡＭにおいて一時保持するデータ量が一定以上になったとされると、時点ｔ６からの1ワード区間におけるようにして、NACKを発生させて、コピー元メモリ２からのデータの読み出し出力を停止させて通信を一旦終了する。
続いては、図６（ｂ）に示すシーケンスに従って、ステップＳ１０２の処理を実行する。つまり、スレーブアドレス(W)、及びサブアドレスの発行により、コピー先メモリ３をデータ読出対象スレーブとして指定し、続けてマスタは、ＲＡＭに保持されているデータに応じてデータ線を駆動して、コピー先メモリ３にデータを書き込むことを行い、ＲＡＭに保持している書き込み用データを全て出力したとされると、通信を一旦終了させる。
そして、上記図６（ａ）に示される読み出しのシーケンスと、この後に実行される図６（ｂ）に示される書き込みのシーケンスとを、図８のステップＳ１０３により、コピー元メモリ２からコピー先メモリに転送してコピーすべき全データのコピーが終了したことが判別されるまで、繰り返すようにされる。
【００２７】
このようなデータコピーの処理シーケンスでは、ＲＡＭ容量とコピーすべきデータのサイズとの兼ね合いに応じて決まる所要回数分、上記図６（ａ）のシーケンスと、これに続く図６（ｂ）のシーケンスの組み合わせを繰り返し実行する必要がある。データのコピーは、ＥＥＰＲＯＭなどの物理的なメモリ素子を対象として行われることから、実際のデータの書き込みにあたっては、メモリ素子に対して物理的にデータが書き込まれるまでの待機時間が存在する。従って、例えば図６（ｂ）に示すシーケンスに従ったステップＳ１０２としてのデータ書き込みの実行時においても、実際には、上記した待機時間を含むことになる。さらに、例えば図６（ａ）のシーケンスごとには、時点ｔ５から実データの読み出しが開始される以前において、時点ｔ１から時点ｔ４までに対応したスレーブアドレス(W)、サブアドレス、及びスレーブアドレス(R)の出力期間が存在する。同様にして、図６（ｂ）のシーケンスごとには、時点ｔ５の実データの読み出しが開始される以前において、時点ｔ１から時点ｔ３までに対応するスレーブアドレス(W)、サブアドレスの出力期間が存在する。
従って、データコピーのために、図６（ａ）と図６（ｂ）に示されるシーケンスを繰り返すことにより、上記した待機時間や、実データの書込／読出以前のアドレス指定などのための期間が蓄積されることになる。このことが、従来におけるデータコピー処理の速度が遅いことの要因となっている。
【００２８】
この問題に関しては、マスタが作業領域として備えるＲＡＭの容量を増加することが１つの解決策ではあるが、現実的なこととして、例えばマスタが各種の制御処理を実行するマイクロコンピュータである場合に、そのＲＡＭ容量は、コストなどの問題を考慮して、マイクロコンピュータ１が通常に制御処理を実行することを考えたときにほぼ必要最小限とされる容量を設定することが一般的である。従って、データコピーのみのために、ＲＡＭ容量を増加させることは現実的には困難である。換言すれば、マスタが備えるＲＡＭの容量は、相応に制限されているものであり、これにより、図６（ａ）と図６（ｂ）に示されるシーケンスを多数回繰り返さざるを得ない。つまりは、ＲＡＭの容量の少ないことがボトルネックとなって、データコピーの高速化を困難としている。そこで、本実施の形態としては、ＲＡＭの容量増加に頼ることなく、データコピーの高速化が図られるようにすることを目的として、Ｉ２Ｃを適用したデータコピーのためのデータ通信システムを構成するものとする。
【００２９】
ここで、上記図６（ａ）（ｂ）に示したランダムシーケンシャルリード（データ読出）とランダムシーケンシャルライト（データ書込）とを比較してみると、ワード単位によるシーケンスとしては共通の手順が多いことが分かる。具体的には、時点ｔ０におけるスタートコンディション、時点ｔ１からのスレーブアドレス(W)の区間、時点ｔ２からのサブアドレスの区間は、図６（ａ）（ｂ）とで何れもマスタがデータ線を駆動して発生させる。また、時点ｔ５以降の実データの読み出し，書き込みは、図６（ａ）ではデータ読出対象スレーブがデータ線を駆動し、マスタがACK，NACKを発生させ、図６（ｂ）ではマスタがデータ線を駆動して、データ書込対象スレーブがACKを発生させる相違はあるが、1ワード区間における先頭8ビットが実データであり、最後の1ビットがACK（あるいはNACK）であるという点では共通である。つまり、ランダムシーケンシャルリード（データ読出）にあって、時点ｔ３、時点ｔ４に対応するスレーブアドレス(R)の出力（通信方向切り換え）のためのリスタートが行われる以外は、共通しているものであるとみることができる。本実施の形態としては、このことを利用して、以降説明する構成により、Ｉ２Ｃの通信プロトコルを破綻させることなく、データコピーの高速化を図るようにされる。
【００３０】
図１は、本発明の第１の実施の形態としてのデータコピーのためのデータ通信システムの構成例を示している。
この図に示すようにして、このデータ通信システムは、Ｉ２Ｃに対応する装置（ノード）として、マイクロコンピュータ１、コピー元メモリ２、及びコピー先メモリ３を備える。Ｉ２Ｃでは、マスタとスレーブとの間でのデータ通信となるのであるが、この場合において、マイクロコンピュータ１がマスタとして機能し、コピー元メモリ２及びコピー先メモリ３がそれぞれスレーブとして機能する。ここでは便宜上、コピー元メモリ２をスレーブ1とし、コピー先メモリ３をスレーブ２としている。
マイクロコンピュータ１は、例えばＣＰＵ、ＲＯＭ等を備え、その動作は、例えばＣＰＵがＲＯＭに格納されるプログラムを実行することで得られる。あるいは、次に説明するコピー元メモリ２にプログラムを記憶させ、ＣＰＵが、このプログラムを読み出して実行するような構成とすることも考えられる。
コピー元メモリ２及びコピー先メモリ３は、それぞれＥＥＰＲＯＭとされる。コピー元メモリ２には、コピー先メモリ３に対して書き込んで記憶させるべきコピー用のデータが記憶されている。コピー先メモリ３は、上記しているように、コピー元メモリ２に記憶されるコピー用のデータがコピーされる空き領域を有していることになる。
【００３１】
また、Ｉ２Ｃでは、先の図６による説明からも理解されるように、スレーブアドレスにより、マスタと通信を行うスレーブを指定する。第１の実施の形態としては、コピー元メモリ２とコピー先メモリ３に対して割り当てられるスレーブアドレスについて、同一の値を設定するものとする。ここでは、具体的には、0xA0を設定するようにされる。
【００３２】
Ｉ２Ｃは、先にも述べたように、各ノードをワイヤードオアにより信号線で接続する。また、信号線は、データ線とクロック線の2本を対とする。図１に示すシステムにおいても、基本的には、マイクロコンピュータ１、コピー元メモリ２、及びコピー先メモリ３は、この信号線を相互に共有するようにしてワイヤードオア接続される。ただし、次に説明するようにして、所要の信号線の部位に対してスイッチSW1、SW2を挿入している。スイッチSW1、SW2は、それぞれ、オン／オフ（開閉）の切り換えが可能な構成となっている。
【００３３】
先ず、この場合のマスタであるマイクロコンピュータ１は、Ｉ２Ｃに対応する端子（ポート）として、クロック端子CLKM、データ端子DATM、スイッチ制御端子SWM1、SWM2を備える。また、コピー元メモリ２は、Ｉ２Ｃに対応する端子（ポート）として、クロック端子CLK1、データ端子DAT1を備える。コピー先メモリ３は、Ｉ２Ｃに対応する端子（ポート）として、クロック端子CLK2、データ端子DAT2を備える。
【００３４】
信号線のうち、クロック線Lclは、マイクロコンピュータ１のクロック端子CLKMとコピー元メモリ２のクロック端子CLK1とを、ａ点が共有されるようにして接続する。また、このａ点と、コピー先メモリ３のクロック端子CLK2とを、スイッチSW1を介するようにして接続する。
また、データ線Ldtは、マイクロコンピュータ１のデータ端子DATMとコピー先メモリ３のデータ端子DAT1とを、ｂ点が共有されるようにして接続する。また、このｂ点と、コピー元メモリ２のデータ端子DAT2とを、スイッチSW2を介するようにして接続する。
【００３５】
また、Ｉ２Ｃでは、信号線としてのデータ線、クロック線は、それぞれ、所定電位（例えば５Ｖ）によりプルアップされるべきこととなっている。このために、図1に示す構成の下では、クロック線Lclについては、マイクロコンピュータ１のクロック端子CLKMとコピー元メモリ２のクロック端子CLK1とが共有する信号線部分（ａ点）に対して、プルアップ抵抗Ｒ１を介して直流電圧Ｖccを印加することとしている。また、スイッチSW1とコピー先メモリ３のクロック端子CLK2との間のクロック線Lclに対しては、アースとの間にプルダウン抵抗Ｒ4を挿入している。
なお、スイッチSW1がオン状態では、直流電圧Ｖccとアース間に対してプルアップ抵抗Ｒ1とプルダウン抵抗Ｒ4の直列接続回路が形成され、このプルアップ抵抗Ｒ1とプルダウン抵抗Ｒ4の接続点に対してクロック線Ｌclが接続される状態となる。しかしながら、この場合のプルダウン抵抗Ｒ4としては、スイッチSW1がオフとなったときにオープンとなるコピー先メモリ３のクロック端子CLK2をアース電位で安定させるためのものであり、プルアップ抵抗Ｒ1に対して充分に大きなインピーダンス（抵抗値）を与えることとしている。このために、例えば、スイッチSW1がオフになったときとオンになったときとで、動作に支障を与えるようなプルアップ電位の変化は生じないものである。
また、データ線Ldtについては、マイクロコンピュータ１のデータ端子DATMとコピー先メモリ３のデータ端子DAT2とが共有する信号線部分（ｂ点）に対して、プルアップ抵抗Ｒ２を介して直流電圧Ｖccを印加することとしている。さらに、コピー元メモリ２のデータ端子DAT1とスイッチSW2の間のデータ線Ldtに対しても、プルアップ抵抗Ｒ3を介して直流電圧Ｖccを印加することとしている。
【００３６】
また、スイッチSW1は、マイクロコンピュータ１のスイッチ制御端子SWM1から出力されるスイッチ制御信号によりオン／オフ制御されるようになっている。同様にして、スイッチSW2は、マイクロコンピュータ１のスイッチ制御端子SWM2から出力されるスイッチ制御信号によりオン／オフ制御されるようになっている。
【００３７】
図２のタイミングチャートは、上記図1に示した回路構成を採るシステムにおけるデータコピーのための動作を示している。この図では、マイクロコンピュータ１のスイッチ制御端子SWM1、SWM2、クロック端子CLKM、データ端子DATM、コピー元メモリ２のクロック端子CLK1、データ端子DAT1、コピー先メモリ３のクロック端子CLK2、データ端子DAT2の各信号状態を示している。
【００３８】
図２において、先ず、通信を開始する時点ｔ０の時点において、スイッチ制御端子SWM1、SWM2から出力するスイッチ制御信号は、ともにＨレベルの状態としておくようにされる。この場合、スイッチSW1、SW2は、スイッチ制御信号がＨレベルのときにはオンとなるように制御され、スイッチ制御信号がＬレベルのときにはオフとなるように制御される。従って、時点ｔ０の時点ではスイッチSW1、SW2は共にオンの状態にあるようにされている。時点ｔ０におけるスイッチSW1がオンの状態は、後述する時点ｔ３に至るまで継続され、スイッチSW2がオンの状態は、後述する時点ｔ９に至るまで継続される。
【００３９】
そして、時点ｔ０において、マスタであるマイクロコンピュータ１は、Ｉ２Ｃの通信プロトコルに従って、スタートコンディション(STRT)を発生させる。このスタートコンディションは、信号線（クロック線Lcl、データ線Ldt）を介するようにして、コピー元メモリ２のクロック端子CLK1、データ端子DAT1と、コピー先メモリ３のクロック端子CLK2、データ端子DAT2とに伝達される。これにより、スレーブであるコピー元メモリ２及びコピー先メモリ３の各々は、スタートコンディションが発生したことを認識する。
【００４０】
上記のようにしてスタートコンディションを発生させるのに続き、マイクロコンピュータ１は、先ず、時点ｔ１からの1ワード区間において、先頭の8ビット（第０ビット〜第７ビット）により、データ書込対象スレーブを指定するためのスレーブアドレス(W)を発生させる。
このときには、マイクロコンピュータ１がクロックをドライブし、これがクロック線Lcl経由で、コピー元メモリ２及びコピー先メモリ３の各クロック端子CLK1、CLK2に入力される。そして、コピー元メモリ２及びコピー先メモリ３は、上記のようにして発生されたスレーブアドレス(W)を、クロックの立ち上がりタイミングによりサンプルして取り込むようにして入力する。
【００４１】
この場合のスレーブアドレス(W)は、10100000(第7ビットはWRITEモードを示す)となっていることから、データ書込対象スレーブとして、0xA0のスレーブアドレスを持つスレーブを指定していることになる。
このときにはスイッチSW1、SW2はオン状態となっている。スイッチSW1がオンとなっていることで、クロック線Lclは、マイクロコンピュータ１（マスタ）、コピー元メモリ2（スレーブ１）、及びコピー先メモリ３（スレーブ２）の３つのノードにより共有される状態となっている。従って、マイクロコンピュータ１が駆動してクロック線CLKMから出力されるクロックは、コピー元メモリ２だけではなく、コピー先メモリ３においても検知される。また、スイッチSW2がオンとなっていることで、データ線Ldtも、マイクロコンピュータ１、コピー元メモリ２、及びコピー先メモリ３の３つのノードにより共有される状態となっている。このために、時点ｔ１からの1ワード区間において発生されたスレーブアドレス(W)は、コピー元メモリ２とコピー先メモリ３の両者によりサンプルすることができる。つまり、スイッチSW1,SW2がともにオンの状態では、信号線（クロック線Lcl、データ線Ldt）が、マイクロコンピュータ１、コピー元メモリ２、及びコピー先メモリ３の３つのノードにより共有されており、通常の信号線の接続となっている。
さらに、先に述べたように、第１の実施の形態にあっては、コピー元メモリ２及びコピー先メモリ３のスレーブアドレスは、0xA0で同一であることとしている。従って、スレーブアドレス(W)をサンプルした結果として、コピー元メモリ２とコピー先メモリ３のそれぞれが、自身についてデータ書込対象スレーブとして指定されたものであると認識することになる。
これに応じて、時点ｔ１からの1ワード区間における最後のビット（第８ビット）のタイミングで、コピー元メモリ２及びコピー先メモリ３の両者が、データ線ＬdtをＬレベル駆動することでACKを出力する。これに応じて、このときのデータ線LdtとしてはLレベルとなり、マイクロコンピュータ１側にあってもACKを検知できることになる。なお、確認のために述べておくと、信号線はワイヤードオア接続であるから、コピー元メモリ２とコピー先メモリ３の少なくとも一方がACKとしてのLレベル駆動を行うことで、データ線LdtにはLレベルが現れることになる。
【００４２】
上記スレーブアドレス(W)に応答したACKを検知したマイクロコンピュータ１は、時点ｔ２からの1ワード区間における先頭の8ビット（第０ビット〜第７ビット）により、サブアドレスを発生させる。このサブアドレスも、コピー元メモリ２とコピー先メモリ３の両者においてサンプルされ、コピー元メモリ２とコピー先メモリ３のそれぞれが、自身についてのサブアドレスが指定されたものであると、この段階での認識を行うことになる。
そして、コピー元メモリ２とコピー先メモリ３は、８ビットのサブアドレスをサンプルした後の9ビット目のタイミングで、データ線LdtをＬレベル駆動してACKを出力する。
【００４３】
この場合、マイクロコンピュータ１は、サブアドレスの発生に応答したACKを受け取ると、次の手順として、時点ｔ3として示すように、スイッチ制御端子SWM1をLレベル駆動することで、スイッチSW1をオンからオフに切り換える。これにより、クロック線Lclは、マイクロコンピュータ１とコピー元メモリ２が共有する部分のみが有効となって、コピー先メモリ３は、クロック線Lclからは切り離される状態となる。これにより、コピー先メモリ３は、信号線を介して他のノード（マイクロコンピュータ１、コピー元メモリ２）との通信は行えなくなる。
なお、このようにして、或るノードが信号線を介して通信できなくなるようにするためには、信号線であるデータ線とクロック線の両方を遮断する必要はなく、少なくとも一方を遮断すればよい。Ｉ２Ｃでは、クロックの立ち上がりタイミングでデータをサンプルすることとされているので、データとクロックのうちの何れか一方が入力されない状態を形成すれば、そのノードにおいては、データを検知できることにはならないからである。本実施の形態では、このことに着目して、コピー先メモリ３の通信を不可とするために、クロック線Lclのみに対してスイッチSW1を設けている。そして、上記したことによれば、コピー先メモリ３の通信を不可とするためには、スイッチSW1を、クロック線Lcl側ではなく、データ線Ｌdtのｂ点とデータ端子DAT2との間に挿入するようにしてもよい。
このようにして、本実施の形態では、ノードの通信を一時的に不可となるように設定するために、例えばクロック線Lclとデータ線Ldtとの両方に対して、スイッチを備えることをしていないが、これにより、マスタであるマイクロコンピュータ１が消費するポート（端子）の数は削減されることになる。例えば、近年においては、マイクロコンピュータの多機能化などに伴い、消費されるポートの数が増加してきている。ポートの数は有限であるので、ポート数が削減されることの効果は高い。
【００４４】
また、スイッチSW1がオフのときには、コピー先メモリ３のクロック端子CLK2は、プルダウン抵抗Ｒ4を介してアースと接続される。これより、クロック端子CLK2は、アース電位（Ｌレベル）にて固定されるようにしてプルダウンされる状態となる。クロック端子CLK2を単純にオープンにすると、クロック端子CLK2の電位が不定となる可能性があるが、このようにしてプルダウンさせることで、Ｌレベルで安定させることができる。
なお、スイッチSW1がオフのときにおける、コピー先メモリ３のクロック端子CLK2の電位状態については、例えばプルアップ電位に応じたＨレベルで維持されるようにしてもよい。この場合には、プルダウン抵抗Ｒ4に代えて、例えばプルアップ抵抗Ｒを介して直流電圧Ｖccを印加するような回路とすればよい。ただし、現状における一般的なマイクロコンピュータをマスタとして実際に使用することを想定した場合、コピー先メモリ３のクロック端子CLK2についてＨレベルでプルアップさせるためのスイッチSW1の切り換え制御のタイミングを考慮すると、マイクロコンピュータ側のファームウェアのプログラムの記述の難易度が高くなる可能性がある。
【００４５】
上記のようにして時点ｔ３においてスイッチSW1をオフとして、コピー先メモリ３をＩ２Ｃバス（信号線）から切り離したのと等価の状態としたうえで、マイクロコンピュータ１は、時点ｔ４としてのタイミングでリスタートのコンディションを発生させる。続いて時点ｔ５からの1ワード区間において、8ビットのスレーブアドレス(R)を発生させる。このリスタートコンディションとスレーブアドレス(R)は、前述もしたように、通信方向の切り換えを指示するためのシーケンスであり、このスレーブアドレス(R)をスレーブ側にて受け取ることで、そのスレーブは、自身が読出対象スレーブとして指定されていることを認識し、データ読出のモードを設定できる。
上記リスタートコンディション及びスレーブアドレス(R)に対応してマイクロコンピュータ１が駆動したデータ及びクロックは、コピー元メモリ２のデータ端子DAT2及びクロック端子CLK1に対しては通常に入力される。確認のために、この場合のスレーブアドレス(R)は、10100001（第７ビットの1はREADモードを指定する）となっており、スレーブアドレスとして0xA0を指定している。従って、コピー元メモリ２では、リスタートコンディションとスレーブアドレス(R)が正常に検知され、自身がデータ読出対象スレーブであることを認識することになる。そして、コピー先メモリ３は、8ビットのスレーブアドレス(R)に続く9ビット目とされるタイミングで、ACKを出力し、マイクロコンピュータ１（マスタ）がこのACKを受け取ることになる。
一方、このときにはコピー先メモリ３は、スイッチSW1がオフとされてクロック端子CLK2がLレベルでプルダウンされている状態を維持する。このために、データ端子DAT2に対して、マイクロコンピュータ１が出力したスレーブアドレス(R)が入力されているとしても、クロックの立ち上がりタイミングは生じないために、スレーブアドレス(R)としてのビットを検知することはない。このようにしてコピー先メモリ３は、Ｉ２Ｃバスから切り離された状態となっている。そして、このようにして、コピー先メモリ３がスレーブアドレス(R)を検知しないことで、コピー先メモリ３は、自身がデータ書込対象スレーブであるとして認識したままであることになる。また、コピー先メモリ３は、スレーブアドレス(R)を検知しないので、ACKの出力は行わない。
【００４６】
そして、この時点ｔ５の1ワード区間が終了した後の時点ｔ６のタイミングで、マイクロコンピュータ１は、スイッチ制御端子SWM1から出力するスイッチ制御信号についてHレベルに反転させることで、再度、スイッチSW1をオン状態に切り換える。このとき、スイッチSW2はオン状態を維持している。これにより、コピー先メモリ３は、マイクロコンピュータ１、及びコピー元メモリ２と信号線を共有して、Ｉ２Ｃバスにより通信が可能な状態に復帰する。
【００４７】
そして、上記時点ｔ６によるスイッチSW1の切り換えを実行した後において、マイクロコンピュータ１は、時点ｔ７から、1ワード単位に対応するクロックの出力を開始する。つまり、クロック端子CLKMについて、1ワード単位に対応して所定タイミングでＨ／Ｌレベルの反転駆動を行う。
ここで、時点ｔ５からの1ワード区間が終了して以降においては、コピー元メモリ２は、自身がデータ読出対象スレーブとして指定されているものであると認識してREADモードとしており、一方、コピー先メモリ３は、自身がデータ書込対象スレーブとして指定されているものであると認識してWRITEモードとしていることになる。時点ｔ７から開始されるクロックの出力は、このようにして、コピー元メモリ２がREADモードで通信可能な状態で待機し、コピー先メモリ３がWRITEモードで通信可能な状態で待機している状況で行われる。
このようにしてマイクロコンピュータ１（マスタ）が出力したクロックは、クロック線Lclを介するようにして、コピー元メモリ２のクロック端子CLK1にて検知されるので、READモードで待機していたコピー元メモリ２は、検知したクロックタイミングに応じて、サブアドレスにより指定された内部アドレスを起点として、データ＃０としての8ビットのデータを読み出して、この読み出したデータに応じてデータ端子DAT2を駆動する。このときスイッチSW2はオンとなっているので、データ線Ldtには、コピー元メモリ２の駆動に応じた電位としてのデータが現れることになる。
また、同じ時点ｔ７から開始されるクロックは、スイッチSW1がオンとなっていることで、コピー先メモリ３のクロック端子CLK2にても検知されることとなる。これまでコピー先メモリ３は、WRITEモードで待機していたことから、このクロックに応じてデータ端子DAT2に入力されてくるデータをサンプリングしてサブアドレスにより指定された内部アドレスを起点として書き込んで記憶させる動作を実行することになる。このときにデータ端子DAT2にて取り込まれるデータは、上記もしているように、コピー元メモリ２から読み出してデータ線Ldtに出力されたものである。つまり、本実施の形態では、時点ｔ７以降において、マイクロコンピュータ１が出力するクロックに応じて、コピー元メモリ２から読み出したデータを、コピー先メモリ３に転送して書き込むという、メモリデバイス間での直接的なデータの授受によるコピー処理が実現されていることになる。
【００４８】
また、時点ｔ７から開始されるクロックに応じてコピー元メモリ２が出力するデータ＃０は、データ線Ldtを介するようにして、マイクロコンピュータ１（マスタ）のデータ端子DATMにも入力されることになる。マイクロコンピュータ１（マスタ）は、このようにして入力されるデータに基づいてそのビット数のカウントを行って、コピーされるデータサイズを判定するようにされる。ただし、従来のようにして、次のデータ書き込みのシーケンスのために内部ＲＡＭにそのまま保持する必要はない。
【００４９】
なお、ここで留意すべきことは、メモリデバイスであるコピー元メモリ２としては、通常のＩ２Ｃの通信プロトコルによる通信を行っているときと同様にして、通信相手がマスタである場合と同様のデータ読出の動作、振る舞いをしていることである。同じく、コピー先メモリ３としても、通信相手がマスタである場合と同様のデータ書込の動作、振る舞いをしている。
このために、例えば時点ｔ７からのデータ＃０としての8ビットをコピー元メモリ２が出力した次の9ビット目のタイミングにおいてACKを返すのは、従来であれば、マスタということなるのであるが、本実施の形態では、データを受信して書き込んだコピー先メモリ３が行うこととなる。このようにして、コピー先メモリ３から出力されたACKは、マイクロコンピュータ１のデータ端子DATM、及びコピー元メモリ２のデータ端子DAT1にて検知される。マイクロコンピュータ１は、このACKを検知することで、コピー元メモリ２とコピー先メモリ３との間でのデータ＃０の授受が正常に実行されたものと認識することができる。また、コピー元メモリ２としては、自身は、あたかも、マスタ（マイクロコンピュータ１）を通信相手と想定したデータ出力を行っているのではあるが、上記のようにしてコピー先メモリ３が出力するACKは、現象としてデータ線LdtがLレベルに駆動されるものである。従って、コピー元メモリ２としては、このACKを、例えばマスタが返してきたものとして受け取り、データ＃０の授受は、正常に終了したものと認識できる。
【００５０】
そして、時点ｔ７以降において、マイクロコンピュータ１が1ワード区間ごとに対応するクロックを順次、所定のタイミングで出力していくことにより、コピーに必要なデータを、データ＃０〜＃ｎまでの1ワード単位のシーケンスにより8ビット（1バイト）ずつ、コピー元メモリ２からデータ線Ldtに出力させ、この出力されたデータをコピー先メモリ３が入力して書き込むというコピー動作が繰り返し実行されることになる。
また、最後の1つ前の1バイト分のデータであるデータ＃ｎ−１をコピーするまでの1ワード区間におけるACKの授受は、データ#0の1ワード区間におけるACKと同様となる。
【００５１】
ここで、先に説明したように、マスタであるマイクロコンピュータ１は、時点ｔ７以降において、コピー元メモリ２から出力されるデータをデータ端子DATMにて検知することで、コピー先メモリ３に書き込まれた（コピーされた）データのサイズを認識することができる。また、マイクロコンピュータ１は、コピー元メモリ２からコピー先メモリ３に対してコピーすべきデータのサイズを把握している。このためにマイクロコンピュータ１は、コピーすべきデータの総サイズと、これまでに実際にコピーされたデータのサイズとを比較することで、データ＃ｎの出力の完了に応じて、データコピーを終了させるべきことを認識することができる。
【００５２】
そして、マイクロコンピュータ１は、データ＃ｎとしての最後の8ビットのデータをカウントし、全てのデータのコピーが終了したことを認識すると、このデータ＃ｎとしての8ビットに応答したACKの出力タイミングとなるビット期間ｔ９〜ｔ１０において、スイッチ制御端子SWM2から出力するスイッチ制御信号をLレベルに切り換える。これにより、スイッチSW2はオフ状態となって、データ線Ｌdtは、マイクロコンピュータ１のデータ端子DATMとコピー先メモリ３のデータ端子DAT2とをｂ点にて接続した部分のみが有効となり、コピー元メモリ２のデータ端子DAT1は、このデータ線Ldtから切り離されることになる。また、コピー元メモリ２のデータ端子DAT1は、プルアップ抵抗Ｒ3を介して直流電圧Ｖccが印加されているので、スイッチSW2がオフとなってデータ線Ldtから切り離されると同時に、無条件でＨレベルにプルアップされる。
【００５３】
データ書込対象スレーブであるコピー先メモリ３は、Ｉ２Ｃの通信プロトコルに従って、このデータ＃ｎとしての最後の8ビットを入力した場合にも、ACKを返すようにしてデータ端子DAT2をLレベル駆動する。Ｉ２Ｃの通信プロトコルでは、マスタとデータ書込対象スレーブとの関係において、データの授受を終了させるときは、マスタ側がデータ出力を停止すればよく、データ書込対象スレーブとしては、最後のデータ受信に応答して通常にACKを返してよいこととなっている。
マイクロコンピュータ１としては、期間ｔ９〜ｔ１０において、コピー先メモリ３が出力したとされるACKを検知することで、コピー元メモリ２からコピー先メモリ３へのデータ＃０の授受が正常に実行されたことを認識できる。この点で、コピー先メモリ３が出力したACKが、マイクロコンピュータ１に対して入力されるようにすることは必要である。
【００５４】
しかしながら、コピー元メモリ２はデータ読出対象スレーブとして機能している。Ｉ２Ｃの通信プロトコルでは、データ読出対象スレーブは、マスタからのACKが返されないこと（NACK）を以て、データ出力の終了であることを認識するようにされている。従って、期間ｔ９〜ｔ１０において、コピー元メモリ２がコピー先メモリ３により出力されたACKを検知すると、引き続き、読み出しデータの出力を継続してしまうことになる。つまり、コピー元メモリ２に対してはACKが返されない状態を作ることが必要になる。
このために、本実施の形態では、上記のようにして、スイッチSW2をオフとして、コピー元メモリ２のデータ端子DAT1がＨレベルでプルアップされるようにしている。これにより、コピー元メモリ２は、データ＃０に応答するACKが得られなかったと認識して、これ以上のデータの送信は停止することができる。
【００５５】
そして、マイクロコンピュータ１は、期間ｔ９〜ｔ１０を経過した後の時点ｔ１１のタイミングで、ストップコンディションを発生させ、時点ｔ０から開始されたデータコピーのための通信を終了させる。
【００５６】
Ｉ２Ｃは、本来はマスタとスレーブとの間での通信を行うべきものとされている。このために、従来としては、例えばメモリデバイス間でのデータの授受には、先ず、データ読出対象スレーブとマスタとの通信によりマスタがデータを読み出して保持し、次いで、マスタがこの保持したデータをデータ書込対象スレーブに対して書き込んで記憶させるという手順を実行することとなっていたものである。
これに対して、本実施の形態では、上記のようにして、メモリデバイス間での直接的なデータの授受を実現している。ただし、本実施の形態としては、先に説明したように、メモリデバイスであるコピー元メモリ２としては、通常のＩ２Ｃの通信プロトコルによる通信を行っているときと同様にして、通信相手がマスタである場合と同様のデータ読出の動作、振る舞いをしている。同じく、コピー先メモリ３としても、通信相手がマスタである場合と同様のデータ書込の動作、振る舞いをしている。また、データの読み出し／書き込みを実行させるまでの時点ｔ７以前におけるマイクロコンピュータ１（マスタ）の、スレーブ指定、サブアドレス指定の手順としても、基本的には、データ読み出しのためのＩ２Ｃの通信プロトコルに従い、スレーブアドレス(W)、サブアドレス、スレーブアドレス(R)を順次出力するシーケンスとなっている。そのうえで、マスタであるマイクロコンピュータ１が、スイッチSW1,SW2のオン／オフ制御をしかるべきタイミングで行うことで、上記のようにして、コピー元メモリ２の読み出し動作と、コピー先メモリ３のデータ書き込み動作を、クロックに同期させて同時的に実行させることを可能としている。これにより、Ｉ２Ｃの通信プロトコルに従ったうえで、マイクロコンピュータ１（マスタ）におけるデータ保持の動作を介在させることなく、コピー元メモリ２からコピー先メモリ３に対する直接的なデータ授受によるデータコピーを実現している。
【００５７】
このようにして、コピー元メモリ２からコピー先メモリ３に対する直接的なデータコピーの動作が実現されることで、一定サイズのデータをコピーするために要する時間が短縮されることになり、データコピー処理の高速化が図られることになる。その効果は、従来との比較では、コピーすべきデータサイズの総量が大きくなるほど顕著になる。従来においては、マスタ（マイクロコンピュータ）の作業領域であるＲＡＭサイズに制限があり、このＲＡＭサイズとコピーすべきデータサイズの容量との関係によっては、図６（ａ）（ｂ）に示したマスタによるデータの読み込み／書き込みの手順（図８のステップＳ１０１、Ｓ１０２）を多数回繰り返して実行する必要があったからである。このデータの読み込み／書き込みの手順においては、アドレス指定のための通信（スレーブアドレス(W)、サブアドレス、スレーブアドレス(R)）を行う必要がある。また、実際には、ＥＥＰＲＯＭに対して物理的にデータが書き込まれるまでの待機時間などが含まれる。このために、現実には、データの読み込み／書き込みの手順の繰り返し回数が多くなるほど、上記アドレス指定の通信及び待機時間などが累積されて、処理時間の遅延が増長していたものである。
また、例えば、マスタとして機能するマイクロコンピュータ１などのデバイスについては、コピーするべきデータを一時保持（バッファリング）するためのＲＡＭ領域は不要となる。これにより、例えば、ＲＡＭの必要最小限なサイズはより縮小されることとなって、現実に実装されるＲＡＭの容量についても、これまでより小さいものとすることができる。このことは、例えばコストダウンなどにつなげることができる。
【００５８】
図３は、第２の実施の形態としてのデータ通信システムの構成例を示している。なお、この図において図１と同一部分については同一符号を付すこととして、その説明は省略する。
先ず、図３においても、スレーブ１，２として、コピー元メモリ２及びコピー先メモリ３が示されている。ただし、第１の実施の形態では、コピー元メモリ２とコピー先メモリ３とでスレーブアドレスについては同じく設定していたのに対して、第２の実施の形態では、互いに異なるスレーブアドレスを設定する。第２の実施の形態としては、このようにして、コピー元メモリ２とコピー先メモリ３とでスレーブアドレスが異なる場合に対応したデータコピーのための構成となる。
【００５９】
このために、図３に示す回路構成においては、スイッチSW3が追加される。このスイッチSW3は、データ線Ldtにおけるｂ点と、コピー先メモリ３のデータ端子DAT2との間に挿入されるようにして設けられる。また、マスタであるマイクロコンピュータ１には、スイッチSW3に対応したスイッチ制御端子SWM3が設けられ、このスイッチ制御端子SWM3から出力されるスイッチ制御信号に応じて、スイッチSW3は、オン／オフの切り換えが行われるようにして制御される。スイッチSW3も、スイッチ制御信号がＨレベルのときにオンとなり、Ｌレベルのときにオフとなるようにされる。また、コピー先メモリ３のデータ端子DAT2に対しては、プルアップ抵抗Ｒ5を介して直流電圧Ｖccが印加されている。
【００６０】
図４は、第２の実施の形態に対応して、コピー元メモリ２からコピー先メモリ３に対してデータをコピーするための動作を示すタイミングチャートとして、時点ｔ１からの1ワード区間においてスレーブアドレス(W)を出力する期間を示している。
先ず、時点ｔ０においては、例えば図２における時点ｔ０と同様にして、マイクロコンピュータ１から通信開始のためのスタートコンディションが発生される。そして、続く時点ｔ１からの1ワード区間における先頭8ビットのスレーブアドレス(W)として、この場合のマイクロコンピュータ１は、00000000をシリアルに出力するようにされる。つまり、8ビットの全てのタイミングで、データ線LdtをLレベルにより駆動する。
そのうえで、マイクロコンピュータ１は、スレーブアドレス(W)の8ビットのシリアル出力に対応させて、スイッチ制御端子SWM2から出力するスイッチ制御信号については、LHLHHHLHのようにして駆動する。また、スイッチ制御端子SWM3から出力するスイッチ制御信号については、HLLLLLHHのようにして駆動する。
【００６１】
上記のようにして、スイッチ制御端子SWM2、SWM3からスイッチ制御信号が出力されることで、スイッチSW2は、スレーブアドレス(W)の8ビットのシリアル出力に対応してオフ・オン・オフ・オン・オン・オン・オフ・オンとなるようにして制御される。また、スイッチSW3は、スレーブアドレス(W)の8ビットシリアル出力に対応してオン・オフ・オフ・オフ・オフ・オフ・オン・オンとなるようにして制御される。
スイッチSW2がオンのときには、データ線Ldt上で、マイクロコンピュータ１のデータ端子DATMとコピー元メモリ２のデータ端子DAT1とが接続されることになって、データ端子DAT1はＬレベルを検知することになる。このときには、データ端子DATMによりＬレベルによる駆動が行われているからである。スイッチSW2がオフのときには、コピー元メモリ２のデータ端子DAT1は、プルアップ抵抗Ｒ3を介して接続される直流電圧Ｖccの印加によりプルアップされ、Ｈレベルが検知される。
また、スイッチSW3がオンのときには、データ線Ldt上で、マイクロコンピュータ１のデータ端子DATMとコピー先メモリ３のデータ端子DAT2とが接続されることになって、データ端子DAT2はＬレベルを検知する。また、スイッチSW3がオフのときには、コピー先メモリ３のデータ端子DAT2は、プルアップ抵抗Ｒ4を介して接続される直流電圧Ｖccの印加によりプルアップされ、Ｌレベルが検知される。
データ端子DAT1，DAT2にて検知される信号のHレベルはビット値１として、Lレベルはビット値０として扱われる。このことから、時点ｔ１からのスレーブアドレス(W)の期間において、コピー元メモリ２がデータ端子DAT1により入力するビット値としては、10100010となる。この値はコピー元メモリ２に割り当てられたスレーブアドレス＝0xA2と一致するものであり、また、第７ビットが０であることでWRITEモードについても適正に指定している。また、コピー先メモリ３がデータ端子DAT2により入力するビット値としては、01111100となる。この値も、コピー先メモリ３に割り当てられたスレーブアドレス＝0x7Cと一致し、第７ビットが０であることでWRITEモードについても適正な指定を行っている。
【００６２】
このようにして、第２の実施の形態では、スレーブアドレス(W)を指定するときには、マイクロコンピュータ１が出力する8ビット分のＨ／Ｌのパターンと、スイッチSW2、SW3の切り換えパターンとを組み合わせて動作させる。これによって、1回のスレーブアドレス(W)の出力により、スレーブアドレスの異なるコピー元メモリ２（スレーブ1）とコピー先メモリ３（スレーブ２）とに対して、同時にスレーブアドレス(W)を出力して、双方との通信を確立することができるようになっている。
この場合において、マイクロコンピュータ１が出力する8ビット分のＨ／Ｌのパターンと、スイッチSW2、SW3の切り換えパターンとをどのように設定するのかについては、簡単なビット演算に基づいて求めることができる。
この第２の実施の形態の場合には、マイクロコンピュータ１（マスタ）のデータ端子DATMから出力する、スレーブアドレスの元となるべきビットパターン（原スレーブアドレス）としては、8ビットを全てＬレベル（ビット値０）としている。そのうえで、スイッチSW2については、コピー元メモリ２のスレーブアドレスである0xA2＝(10100010)を反転した01011101を求め、この01011101に対応して、スイッチSW2のオン／オフ（スイッチ制御信号のH/L）を設定している。スイッチSW3については、コピー先メモリ３のスレーブアドレスである0x7C＝(01111100)を反転した10000011を求め、このビット値に対応して、スイッチSW3のオン／オフ（スイッチ制御信号のH/L）を設定している。
【００６３】
図４に示される時点ｔ１からの1ワード区間を終了した後の手順は、図２における時点ｔ２に準じたものとなる。ただし、時点ｔ５からのスレーブアドレス(R)のための1ワード区間においては、マイクロコンピュータ１（マスタ）のデータ端子DATMから出力するスレーブアドレス(R)の8ビットのパターンと、スイッチSW1についての切り換えパターンは、図４の時点ｔ１からのスレーブアドレス(W)の8ビット区間と同様とする。これにより、コピー元メモリ２に対して、READモードを設定できる。
また、図４に示される時点ｔ１以降の手順として期間ｔ９〜ｔ１０に至ったときにも、図２に準じて、スイッチSW2を制御して、コピー元メモリ２のデータ端子DAT1をＨレベルとして、コピー元メモリ２のデータ端子DAT1にはコピー先メモリ３からのACK（Lレベル信号）が入力されないのと等価の状態を発生させる。つまり、第２の実施の形態では、コピー用データ転送の終了タイミングで、コピー元メモリ２のデータ端子DAT1にNACKを生じさせるためのスイッチSW2を、コピー元メモリ２側のスレーブアドレス(W)を発生させるためのスイッチとしても共用しているものである。
なお、スイッチSW3については、オン/オフ切り換えは行わずに、例えばオン状態（あるいはオフ状態でもより）のままとしておいてもよい。第２の実施の形態においても、図２における時点ｔ３〜時点ｔ６までの期間においては、スイッチSW1をオフとして、コピー先メモリ３を信号線から切り離して、コピー先メモリ３にスレーブアドレス(R)を受信させないほうが好ましいからである。
そして、例えば図２の時点ｔ６と同様にして、この時点からマイクロコンピュータ１が1ワード区間ごととなるタイミングでクロックを出力していくことで、第１の実施の形態と同様にして、コピー先メモリ３のデータ読み出し出力と、コピー元メモリ２のデータ入力書き込みとが同期して実行され、コピー先メモリ３からコピー元メモリ２への直接的なデータコピーが実現される。
【００６４】
なお、コピー元メモリ２とコピー先メモリ３とで異なるスレーブアドレスを設定した場合としては、上記図4に示したようにスイッチSW2、SW3を切り換えることを行わなくとも、適正に、コピー元メモリ２をデータ読出対象スレーブとして指定し、コピー先メモリ３をデータ書込対象スレーブとして指定し、コピー先メモリ３からコピー元メモリ２への直接的なデータコピーを実行させることは可能である。
このためには、例えば、マイクロコンピュータ１は、先ず所定の信号線の回路切り換えを行って、コピー先メモリ３の通信を不可としておいて、コピー元メモリ２のスレーブアドレスによりスレーブアドレス(W)を指定し、次にサブアドレスを指定し、さらにスレーブアドレス(R)を指定して通信方向の切り換えを行う。つまり、コピー元メモリ２に対してデータ読出対象スレーブとしての指定を行う。
続いては、マイクロコンピュータ１は、コピー先メモリ３の通信が可能な状態に復帰させ、コピー元メモリ２は通信不可の状態となるようにして信号線の回路切り換えを行う。そして、この状態で、コピー先メモリ２のスレーブアドレスによりスレーブアドレス(W)を指定し、次にサブアドレスを指定するようにされる。つまり、コピー先メモリ３に対してデータ書込対象スレーブとしての指定を行う。
そして、ここまでの手順を実行したうえで、マイクロコンピュータ１と、コピー元メモリ２と、コピー先メモリ３との間での信号線を接続するようにして回路を切り換え、マイクロコンピュータ１による1ワード区間ごとのタイミングでのクロックの駆動を行うようにする。
【００６５】
しかしながら、このような手順では、上記のようにして、コピー元メモリ２とコピー先メモリ３とについて、時分割的にデータ読出対象スレーブ、データ書込対象スレーブの指定を行うことになる。図4に示した手順であれば、このようなコピー元メモリ２とコピー先メモリ３に対するデータ読出対象スレーブ、データ書込対象スレーブの指定は、1回のデータ読出対象スレーブを指定するためのシーケンスにより同時的に行えるものであり、それだけ効率が高く、また、時間短縮も図られることになるので、高速化に有利である。
【００６６】
ここで、これまでに説明した本実施の形態としてのデータ通信システムの実用例を挙げることとする。また、ここでは第１の実施の形態を適用した実用例を挙げることとするが、第２の実施の形態によるデータ通信システムも同様に適用が可能である。
【００６７】
実用例として先ず、製造工程において電子機器に実装されるＥＥＰＲＯＭに対してデータを書き込む作業を行うのにあたって、本実施の形態のデータ通信システムを適用することが考えられる。このようなシステムの構成例を図５に示す。
この図においては、大きく、書込治具１０と、コピー対象機器２０とに分けられる。
コピー対象機器２０は、所定機能に対応した例えば量産型の電子機器である。この図においては、コピー対象機器２０の内部構成として、本実施の形態に関連する、ＣＰＵ２１とＥＥＰＲＯＭ２２のみを示している。ＣＰＵ２１は、完成されたコピー対象機器２０の動作を制御するもので、ＥＥＰＲＯＭ２２には、ＣＰＵ２１が利用すべき所定のデータが格納される。ＥＥＰＲＯＭ２２が、コピー先メモリ３に相当する。また、ＣＰＵ２１がＥＥＰＲＯＭ２２による通信にはＩ２Ｃを採用している。このために、ＣＰＵ２１においてはＩ２Ｃに対応したクロック端子CLKCとデータ端子DATCを備えている。また、ＥＥＰＲＯＭ２２も、Ｉ２Ｃに対応したクロック端子CLKCとデータ端子DATCを備える。また、ＣＰＵ２１のクロック端子CLKCとクロック線Lclの間にはスイッチSW11が挿入され、ＣＰＵ２１のデータ端子DATCとデータ線Ldtの間にはスイッチSW12が挿入されている。これらスイッチSW11、SW12は、ＣＰＵ２１のスイッチ制御端子SWCから出力されるスイッチ制御信号により同期してオン/オフ制御される。
また、この場合のクロック線Lclは、コネクタCN2における所定の端子と接続され、データ線Ldtも、コネクタCN2における所定の端子と接続される。
また、この場合のＣＰＵ２１は、共通端子COMMを備えている。この共通端子COMMもコネクタCN2における所定の端子と接続される。
【００６８】
書込治具１０は、コピー対象機器２０のＥＥＰＲＯＭ２２（スレーブ２）に対してデータをコピーさせるための治具であり、図示するようにして、マイクロコンピュータ１１及びＥＥＰＲＯＭ１２を備える。ＥＥＰＲＯＭ１２（スレーブ１）には、コピー対象機器２０のＥＥＰＲＯＭ２２（スレーブ２）にコピーして格納（記憶）させるべきデータが既に記憶されている。マイクロコンピュータ１１とＥＥＰＲＯＭ１２が、図１に示したマイクロコンピュータ１とコピー元メモリ２に相当する。
【００６９】
この書込治具１０におけるＩ２Ｃに対応した構成をみると、コネクタＣＮ１におけるクロック線Ｌclとデータ線Ldtの接続端子が、コピー先メモリ３のクロック端子CLK1、データ端子Ldt2に置き換わっているものと考えれば、図１と同様となっていることがわかる。但し、この場合におマイクロコンピュータ１１においては、共通端子COMMも設けられており、コネクタCN1における所定端子と接続されている。
【００７０】
コピー対象機器２０のＥＥＰＲＯＭ２２に対してデータをコピーするための作業を行うのに当たっては、先ず、書込治具１０のコネクタＣＮ１と、コピー対象機器のコネクタＣＮ２とを接続する。これにより、書込治具１０のマイクロコンピュータ１とコピー対象機器２０のＣＰＵ２１との共通端子COMMが相互に接続されることになるが、この状態となると、ＣＰＵ２１は、スイッチ制御端子SWCから制御信号を出力して、スイッチSW11、SW12をオフ状態とする。これにより、ＣＰＵ２１は、Ｉ２Ｃの信号線と切り離されることになるが、この結果、Ｉ２Ｃに対応したノードの接続態様としては、マイクロコンピュータ１１をマスタとし、ＥＥＰＲＯＭ１２をスレーブ1とし、ＥＥＰＲＯＭ２２をスレーブ２とすれば、図1と同様となる。
そして、この状態のもとで、書込治具１０のマイクロコンピュータ１１は、先の図2に示した手順によるデータコピーのための通信手順を開始する。これにより、ＥＥＰＲＯＭ１２からＥＥＰＲＯＭ２２へのデータコピーが実行されることになる。
このようにして、本実施の形態の構成を、電子機器の製造工程におけるＥＥＰＲＯＭのデータコピーに適用すれば、コピーに要する時間がこれまでよりも短縮されることとなって、作業効率が向上することになる。
【００７１】
また、図示は省略するが、以下のような適用も考えられる。
先ず、或る電子機器が、特定のＥＥＰＲＯＭに記憶されるプログラム、設定データなどを使用して動作するメインシステムの構成である場合に、上記特定のＥＥＰＲＯＭを、本実施の形態のコピー先メモリ３とし、この特定のＥＥＰＲＯＭと同一のデータを記憶したバックアップ用のＥＥＰＲＯＭを、コピー元メモリ２として実装する。
そして、システムに何らかの異常が生じたときに、本実施の形態としてのデータコピーを実行させる。つまり、バックアップ用のＥＥＰＲＯＭから、上記特定のＥＥＰＲＯＭに対してデータをコピーする。本実施の形態のデータコピーは、高速であると共に、マスターにおいてコピー用データを一時保持する必要性がないので、システムになんらかの障害が生じているときにも、より安定した動作でのコピーが実行されるのを期待できる。
また、例えば、自動車、列車、航空機などにあって、走行履歴、運行履歴などをはじめとして、例えば事故原因等の解析に利用できる情報を、コピー元メモリ２に対して逐次書き込んで記憶させていくこととする。そして、実際に事故などが生じて、システムが緊急にシャットダウンすることとなった場合において、バックアップ先として実装したコピー先メモリ３に対してデータをコピーするようにされる。このようにして、コピー先メモリ３にデータがバックアップされることで、例えば、コピー元メモリ２が衝撃などで不具合が生じたとしても、コピー先メモリ３が正常であれば、このコピー先メモリ３に記憶されたデータを利用した解析が行える。また、このような状況では、システムが緊急にシャットダウンしないうちに、できるだけ速くコピーが完了することが好ましいことから、本実施の形態のデータコピーの構成を適用することは非常に有効である。
【００７２】
なお、本発明の概念として、データ通信装置を構成する必要最小限の要素としては、マスタとして機能するマスタ装置と、本願発明に基づいた信号線の接続回路部位となる。実施例との対応では、図１又は図２の構成から、コピー元メモリ２とコピー先メモリ３を省略したものが相当する。これまでの説明から理解されるように、コピー元メモリ２とコピー先メモリ３そのものは、I2Cの通信プロトコルに従って、あくまでも、マスタとの通信を行うという振る舞いをするものだからである。
【００７３】
また、上記各実施の形態として示したシステム構成は必要に応じて適宜変更されてよい。例えば、実施の形態では、１つのデータ読出対象スレーブと１つのデータ書込対象スレーブとの関係により説明したが、例えば１つのデータ読出対象スレーブに対して、2以上のデータ書込対象スレーブを設け、これらのデータ書込対象スレーブに対して、同時的にデータコピーがされるように構成することも、先に説明した実施の形態の通信手順に準じて構成することは可能である。
また、このような変更に応じて、信号線の回路系も適宜変更されて良い。特に、所定のノードを信号線から切り離すためのスイッチについては、上記各実施の形態では、必要最小限のものを備えることとしているが、しかるべき位置に対してさらにスイッチを挿入するようにして、信号切り換えの自由度、汎用性が高められるようにすることも考えられる。また、実施の形態では、コピー元メモリとコピー先メモリとについてＥＥＰＲＯＭを挙げているが、例えばフラッシュメモリなど、これ以外の不揮発性のメモリデバイスなどとされてよい。
また、上記実施の形態では、本発明をデータコピーの用途に適用しているが、データ書込対象スレーブとしては、必ずしもデータ読出対象スレーブから読み込んだデータを内部に記憶保持させる動作を実行する必要はない。例えば、データ書込対象スレーブにて何らかのデータの解析を行うことなどを目的として、データ読出対象スレーブから読み出したデータをデータ書込対象スレーブ側に転送させる場合などにも本発明に基づく構成を適用できる。
【図面の簡単な説明】
【００７４】
【図１】本発明の第1の実施の形態としてのデータ通信システムの構成例を示すブロック図である。
【図２】第１の実施の形態におけるデータコピーの手順を示すタイミングチャートである。
【図３】第２の実施の形態としてのデータ通信システムの構成例を示すブロック図である。
【図４】第２の実施の形態におけるデータコピーの手順として、WRITEのスレーブアドレスを出力するときを示すタイミングチャートである。
【図５】実施の形態のデータ通信システムを、電子機器が実装するＥＥＰＲＯＭへのデータコピーに適用した場合の構成例を示すブロック図である。
【図６】Ｉ２Ｃにおける基本的なデータ読み出しとデータ書き込みの処理手順を示すタイミングチャートである。
【図７】Ｉ２Ｃの通信プロトコルに従ってメモリ間のデータコピーを行う場合の、従来としてのシステム構成例を示すブロック図である。
【図８】図７に示した構成のシステムによりメモリ間のデータコピーを行う場合の、手順を示すフローチャートである。
【符号の説明】
【００７５】
１  マイクロコンピュータ１、２  コピー元メモリ、３  コピー先メモリ、SW1,SW2,SW3  スイッチ
【図１】
2007004227.tif 000003
【図２】
2007004227.tif 000004
【図３】
2007004227.tif 000005
【図４】
2007004227.tif 000006
【図５】
2007004227.tif 000007
【図６】
2007004227.tif 000008
【図７】
2007004227.tif 000009
【図８】
2007004227.tif 000010