(57)【特許請求の範囲】
【請求項１】
データ記憶部に格納されているデータ列から所定の順序でデータを読み出し、通信相手装置からのデータ到達の確認応答を取りながらデータの送信を制御する方法において、
前記通信相手装置からクロック信号線により送信されるクロック信号を受信し、
予め前記データ記憶部から送信するデータを読み出して送信レジスタへ格納し、
前記通信相手装置から情報を受信したとき、前記クロック信号線を送信停止状態に設定し、
前記通信相手装置から受信した前記情報がデータ送信要求情報であることを判定し、
前記クロック信号線の前記送信停止状態を解除し、
データ送信タイミング検出時に前記送信レジスタに格納されているデータを送信する、
ことを特徴とするデータ送信制御方法。
【請求項２】
請求項１に記載のデータ送信制御方法において、
前記データ送信タイミングは、前記通信相手装置となるマスタ装置の制御に基づいてデータ送受信するスレーブ装置が前記マスタ装置から前記データ送信要求情報を受信した時、または、前記スレーブ装置が前記マスタ装置へ送信したデータに対するデータ到達の確認応答情報を前記マスタ装置から受信した時である、
ことを特徴とするデータ送信制御方法。
【請求項３】
請求項１に記載のデータ送信制御方法において、
I2Cシリアルインターフェースの通信プロトコルに準拠してデータ送信およびデータ到達の確認応答を行う、
ことを特徴とするデータ送信制御方法。
【請求項４】
送信するデータ列を格納するデータ記憶部と、
通信相手装置からクロック信号線により送信されるクロック信号を受信する手段と、
前記通信相手装置との間でデータ到達の確認応答を取りながらデータを送信する手段、
予め前記データ記憶部から送信するデータを読み出す手段と、
前記読み出したデータを格納する送信レジスタと、
前記通信相手装置から情報を受信したとき、前記クロック信号線を送信停止状態に設定して、受信した前記情報がデータ送信要求情報であることを判定してから、前記クロック信号線の前記送信停止状態を解除する手段と、
データ送信タイミング検出時に前記送信レジスタに格納されているデータを送信する手段を備える、
ことを特徴とするデータ送信制御装置。
【請求項５】
請求項４に記載のデータ送信制御装置において、
前記データ送信制御装置は前記通信相手装置となるマスタ装置の制御に基づいてデータ送受信を行い、前記データ送信タイミングは、前記マスタ装置から前記データ送信要求情報を受信した時、または、前記マスタ装置へ送信したデータに関するデータ到達の確認応答情報を前記マスタ装置から受信した時である、
ことを特徴とするデータ送信制御装置。
【請求項６】
請求項４に記載のデータ送信制御装置において、
I2Cシリアルインターフェースの通信プロトコルに準拠してデータ送信およびデータ到達の確認応答を行う、
ことを特徴とするデータ送信制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの送信技術に係り、特に、通信相手装置とデータ到達の確認応答を取りながら装置間でデータの伝送を行う際のデータ送信を高速化するためのデータ送信制御方法及びデータ送信制御装置に関する。
【背景技術】
【０００２】
装置間でのデータ伝送方法としては様々な方法があるが、シリアルインターフェースによりデータを伝送する方法としてはフィリップス社により提唱されたI2Cインターフェースが知られている。【０００３】
図５はデータ伝送のための装置間の接続概念で、上記のI2Cインターフェースによる装置間の接続の例を概念的に示したものである。
I2Cインターフェースでは、クロック信号線ＳＣＬ(Serial Clock Line)700、および、データ信号線ＳＤＡ(Serial Data Line)800の２種類の信号線を用いて、マスター装置500と複数のスレーブ装置100、200、900との間でデータの伝送を行うことができる。図５ではスレーブ装置が３台の場合を示しているが、スレーブ装置には７ビットのスレーブアドレスが割り当てられ、そのスレーブアドレスであらわされる範囲の任意台数のスレーブ装置が接続可能である。【０００４】
クロック信号線ＳＣＬ700はマスター装置からクロック信号を出力するための信号線であるが、スレーブ装置にてクロック信号線ＳＣＬを”Low”状態にしている場合はマスター装置はクロック信号線ＳＣＬ700の出力を一時停止する。この状態を”クロックストレッチ”という。データ信号線ＳＤＡ800はマスター装置とスレーブ装置の間でデータを送受信するための信号線であり、クロック信号線ＳＣＬ700およびデータ信号線ＳＤＡ800はそれぞれプルアップ抵抗(Rp)760、860を介して電源電圧(VDD)600に接続されている。【０００５】
図６はデータ伝送のための装置間の信号線接続概念で、I2Cインターフェースによるマスター装置とスレーブ装置との間の信号線接続の例を概念的に示したものである。ここでは、上記図５の装置間の接続概念で示したスレーブ装置100とマスタ装置500と間の接続を例として示している。
クロック信号線ＳＣＬ700およびデータ信号線ＳＤＡ800は共にオープンドレイン駆動の双方向通信が可能な構成となっており、スレーブ装置100はオープンドレイン回路170、180及び対応する受信バッファ171、181を備え、また、送受信するデータ列111を記憶するデータ記憶部110を備えている。
マスター装置500も同様に、クロック信号線ＳＣＬ700、データ信号線ＳＤＡ800に対応するオープンドレイン回路570、580及び受信バッファ571、581を備えている。ここでは、マスター装置500のデータ記憶部の記述は省略している。【０００６】
図７はデータ伝送シーケンス（１）で、I2Cインターフェースによりマスター装置からスレーブ装置へデータ伝送する際のシーケンス例である。上記図５の装置間の接続概念で示したマスター装置500からスレーブ装置100へデータ列（データ１〜データｎ）を送信する場合を代表例として示している。【０００７】
マスター装置500側からみたデータ伝送タイミングを時間軸850に沿って、またスレーブ装置100側からみたデータ伝送タイミングを時間軸810に沿って示している。
マスター装置500は、まずデータ伝送を開始するための条件であるスタート条件Ｓを生成した後（シーケンスMS01）、最初のバイトデータとして送信先となるスレーブ装置のアドレス（スレーブアドレス：７ビット）およびデータの伝送方向を示すR/W(Read/Write)ビット(１ビット）を送信する(シーケンスMS02、MS03)。図７の例では、データの伝送方向はマスター装置からみて送信つまり”Write”となるので、R/Wビットの値は”Write”を意味するビット値”0”に設定されている。スレーブ装置100は自装置に割り当てられたスレーブアドレスと、マスター装置から送信されてきたスレーブアドレス情報を照合し、一致した場合は確認応答情報であるアクノリッジ信号Ａをマスター装置へ返信する（シーケンスMS04）。I2Cインターフェースでは、アクノリッジ信号とはデータ信号線ＳＤＡを”Low”にすることを意味する。【０００８】
次にマスター装置500はスレーブ装置100のデータ記憶部110内のデータ格納領域のアドレスを意味するメモリアドレスを送信し（シーケンスMS05）、それに対するアクノリッジを受信後（シーケンスMS06）、マスタ装置500内のデータ記憶部から読み出した最初のデータであるデータ１を送信する（シーケンスMS07）。そして、それに対するアクノリッジが返送されたならば（シーケンスMS08）、同様にして順次データを送信していき、最後のデータであるデータｎを送信して（シーケンスMS09）それに対するアクノリッジＡを受信した（シーケンスMS10）後に、ストップ条件Ｐを生成して（シーケンスMS11）、データ伝送シーケンスを終結する。上記の伝送シーケンスの例では、データ列（データ１〜データｎ）を送信する直前に、そのデータ列を格納するスレーブ装置100のデータ格納領域のメモリアドレスを送信するシーケンスとなっているが、これについてはI2Cインターフェースでは特に規定されていない。【０００９】
図８はデータ伝送シーケンス（２）で、I2Cインターフェースによりスレーブ装置からマスター装置へデータ伝送する際のシーケンス例である。前記図５の装置間の接続概念で示したスレーブ装置100からマスター装置500へデータ列（データ１〜データｎ）を送信する場合を代表例として示している。【００１０】
マスター装置500側からみたデータ伝送タイミングを時間軸850に沿って、またスレーブ装置100側からみたデータ伝送タイミングを時間軸810に沿って示している。
マスター装置500は、まずデータ伝送を開始するための条件であるスタート条件Ｓを生成した後（シーケンスSM01）、スレーブ装置のアドレス情報（スレーブアドレス：７ビット）および次に送信する情報（メモリアドレス）の伝送方向を示すR/W(Read/Write)ビット(１ビット）を送信する(シーケンスSM02、SM03)。図８の例では、「メモリアドレス」情報の伝送方向はマスター装置からみて送信つまり”Write”となるので、”Write”を意味するビット値”0”にしておく。スレーブ装置100は自装置に割り当てられたスレーブアドレスと、マスター装置から送信されてきたスレーブアドレス情報を照合し、一致した場合は確認応答情報であるアクノリッジＡをマスター装置へ返信する（シーケンスSM04）。次にマスター装置500はスレーブ装置100のデータ記憶部110内のデータ格納領域のアドレスである「メモリアドレス」情報を送信し（シーケンスMS05）、それに対するアクノリッジＡを受信する（シーケンスSM06）。【００１１】
引き続いてマスタ装置500は再びスタート条件Ｓを生成し(シーケンスSM07)、同じスレーブ装置100のスレーブアドレス情報（７ビット）及び次のデータの伝送方向としてスレーブ装置100からマスター装置500への方向を意味するR/Wビット情報(“1”)を送信し(シーケンスSM08、SM09)、それに対する確認応答情報であるアクノリッジＡを受信した後（シーケンスSM10）、スレーブ装置100からデータが送信されてくるのを待ち合わせる。【００１２】
一方、上記のシーケンスSM08、SM09でスレーブアドレス情報およびスレーブ装置からマスター装置へのデータ伝送を意味する値”1”のR/Wビットを受信したスレーブ装置100は、データ記憶部110内の上記シーケンスSM05で指定された「メモリアドレス」が示すデータ領域から最初のデータであるデータ１を読み出してマスター装置500へ送信し（シーケンスSM11）、マスタ装置からの確認応答情報であるアクノリッジＡが返信されるのを待ち合わせる（シーケンスSM12）。以後順次データ記憶部110からデータを読み出して同様の手順でマスター装置500へ送信し、最後のデータであるデータｎを送信後（シーケンスSM13、SM14）、マスター装置500が送信終了情報であるノンアクノリッジＮＡを返信し、その後ストップ条件を生成して（シーケンスSM15）データ伝送シーケンスを終結する。【００１３】
上記のシーケンスSM08、SM09でマスター装置からスレーブ装置へ送信されるデータ、つまり、スレーブアドレス情報（７ビット）と値”1”のR/Wビットは、スレーブ装置からマスター装置へのデータ送信要求を意味しているため、以降の記述ではこのデータのことを「データ送信要求」とも表記する。
また、上記の図８のデータ伝送シーケンス（２）に示されている「メモリアドレス」については、Ｉ２Ｃインターフェースでは特に規定されていない。【００１４】
図９はデータ伝送時の信号タイミング（１）で、I2Cインターフェースによるスタート条件の生成、データビットの伝送、及びストップ条件の生成の際のクロック信号ＳＣＬ701とデータ信号ＳＤＡ801との間の時間関係を示している。
スタート条件C01とはクロック信号ＳＣＬ701が”High”状態の間にデータ信号ＳＤＡ801が”High”から”Low”に変化した状態のことで、データ伝送の開始を意味する。I2Cインターフェースではスタート条件C01のセットアップ時間を示すtSU.STAおよびスタート条件C01のホールド時間を示すtHD.STAのそれぞれ最小値が規定されている。【００１５】
データビットの伝送の際は、クロック信号ＳＣＬ701が”High”の間はデータ信号ＳＤＡ801の状態は一定でなければならず、データ信号ＳＤＡ801が”High”と”Low”の間で状態を変更できるのはクロック信号ＳＣＬ701が”Low”のときに限られ、データ信号ＳＤＡ801はクロック信号ＳＣＬ701の立ち上がりでサンプルされる。I2Cインターフェースでは、データ信号ＳＤＡ801のセットアップ時間tSU.DAT、データ信号ＳＤＡ801のホールド時間tHD.DAT、クロック信号ＳＣＬ701の Low信号パルス幅tLOW、およびクロック信号ＳＣＬ701のHigh信号パルス幅tHIGHのそれぞれの最小値が規定されている。【００１６】
ストップ条件C02とはクロック信号ＳＣＬ701が”High”状態の間にデータ信号ＳＤＡ801が”Low”から”High”に変化した状態のことで、データ伝送の終結を意味する。I2Cインターフェースでは、ストップ条件C02のセットアップ時間tSU.STO、およびストップ条件C02と次のスタート条件C03との間隔tBUFのそれぞれの最小値が規定されている。【００１７】
図１０はデータ伝送時の信号タイミング（２）で、I2Cインターフェースにおけるデータ信号ＳＤＡ801の確定時間tAAとクロックストレッチ許容時間tStrechの時間関係について示している。
前記図９のデータ伝送時の信号タイミング（１）で示したように、データ信号ＳＤＡ801はクロック信号ＳＣＬ701の立ち上がりでサンプルされる。このため、例えば、スレーブ装置からマスター装置にデータを送信する際に、スレーブ装置のデータ記憶部からのデータ読み出しに時間を要し、データ信号ＳＤＡ801の確定時間tAAが大きくなり、その結果データ信号ＳＤＡ801の出力が遅延する場合がある。このようなときは、クロックストレッチ、つまり、スレーブ装置側でクロック信号ＳＣＬ801を”Low”状態に保持しておくことによりデータ信号ＳＤＡ801のサンプリングが行われないようにすることができ、これによりデータ信号ＳＤＡ801の確定時間tAAを引き延ばすことができる。図１０のデータ伝送時の信号タイミング（２）はこのような状況を示している。I2Cインターフェースではデータ信号ＳＤＡ801の確定時間tAA、およびクロックストレッチ許容時間tStrechについてはその上限値は規定されていない。【００１８】
図１１は従来技術のデータ送信制御の信号タイミング概要で、I2Cインターフェースにおいて、マスター装置500から従来技術で構成されるスレーブ装置900へ最初の１バイトを送信し、それに対してスレーブ装置900が最初の送信データであるデータ１をマスター装置500へ送信開始するまでの信号タイミング関係を概念的に示している。
従来技術で構成されているスレーブ装置900は、マスター装置500により生成されたスタート条件Ｓを検出後(タイミングT901)、マスター装置500から送信されてくる７ビットのスレーブアドレス情報と（タイミングT902）引き続いて送信されてくるR/Wビットを受信した時点（１バイト受信）でクロックストレッチを設定し、受信した１バイトに含まれるスレーブアドレス情報とR/Wビット情報を解析し、スレーブアドレスが自装置のアドレスと一致しかつR/Wビットの値が”1”であることから、マスター装置500からのスレーブ装置900に対するデータ送信要求であると判定する (タイミングT903) 。そして、データ記憶部910から最初の送信データであるデータ１を読み出した後に(タイミングT904)、アクノリッジＡを送信してクロックストレッチを解除し(タイミングT905)、読み出したデータ１の送信を開始する(タイミングT906)。この例では、スレーブ装置900の内部メモリであるデータ記憶部910からのデータ読み出しに時間を要し（タイミングT904）、データ信号ＳＤＡ801の確定時間tAAおよびクロックストレッチ時間tStrechが大きな値となっている場合を示している。【００１９】
図１２は従来技術のデータ送信制御装置の構成で、上記図５の接続概念で示したスレーブ装置900を従来技術で構成されているものとして示している。
マスタ装置500よりクロック信号線ＳＣＬ700の制御の基にデータ信号線ＳＤＡ800を介して送信されてくる情報はバッファ981を経由して受信レジスタ901に入力される。受信データ解析部902はクロックストレッチを設定した後、受信レジスタ901に格納されているデータを読み込んでその内容を解析し、例えば、それがマスター装置からのデータ送信要求を意味する情報であれば、データ読み出し送信部903を起動してデータ記憶部910に格納されているデータ列911から最初のデータを読み出して確認応答（アクノリッジ）を送信し、クロックストレッチ解除後にその読み出した最初のデータを送信する。
以降、マスタ装置500からの確認応答情報の受信を待ち合わせ、確認応答情報受信後にクロックストレッチを設定した状態でデータ列911から次に送信すべきデータを読み出し、クロックストレッチを解除してその読み出したデータを送信する、処理をマスター装置500から送信終了情報（ノンアクノリッジ）が返信されるまで繰り返す。ここで、クロックストレッチの設定および解除はオープンドレイン回路970を駆動することにより行われ、データおよび確認応答情報の送信はオープンドレイン回路980を駆動することにより行われる。【００２０】
一方、データ読み出し送信部903は、受信データ解析部902から起動された時のみ、データ記憶部910に格納されているデータ列911から所定の順序でデータを読み出し、その読み出したデータを受信データ解析部902に引き渡す。
このように、従来技術のデータ送信制御では、クロックストレッチの状態でデータ記憶部910からデータ読み出した後にその読み出したデータをデータ信号線ＳＤＡ800へ出力する構成になっており、データ信号線ＳＤＡ800へのデータ送出タイミングがデータ記憶部910からのデータ読み出し時間に影響され、その分だけ遅延する方向に変動していた。【００２１】
図１３は従来技術のデータ送信制御の動作フロー（１）で、マスター装置よりデータ送信要求情報の１バイト情報を受信した時点以降のスレーブ装置900（従来技術の送信制御装置として構成されている）のデータ送信制御の処理手順を示している。
従来技術で構成されているスレーブ装置900は、マスター装置500から最初の１バイト目のデータを受信すると（ステップS901）、まずクロックストレッチを設定してクロック信号線ＳＣＬ900を”Low”に保持した後(ステップS902)、この受信した最初のバイトに含まれるスレーブアドレスとR/Wビットの内容を解析し、スレーブアドレスが自装置アドレスと一致しR/Wビットの値が”1”の場合は、スレーブ装置からマスター装置方向へのデータ送信要求を意味していると判定する(ステップS903)。そして、データ記憶部910内の送信データ列が格納されている領域の先頭から最初のデータを読み出した後（ステップS904）、上記ステップS901で受信した第１バイト目の情報に対する確認応答情報（アクノリッジ）をマスター装置500へ送信した後に（ステップS905）クロックストレッチを解除し（ステップS906）、上記ステップS904で読み出したデータをマスター装置500へ送信する（ステップS907）。【００２２】
次に、マスター装置500から確認応答情報（アクノリッジ）または送信終了情報（ノンアクノリッジ）が受信されるのを待ち合わせ（ステップS908）、受信情報がアクノリッジかノンアクノリッジかを判定し（ステップS909）、ノンアクノリッジの場合（YES）は処理を終了し、アクノリッジの場合（NO）は次の処理を行う。
クロックストレッチを設定した後に（ステップS910）、データ記憶部910内の送信データ列911より次に送信するデータを読み出して(ステップS911)クロックストレッチを解除した後（ステップS912）読み出したデータを送信し（ステップS913）、ステップS908に戻る。
ここで、上記のデータ記憶部910内に格納されているデータ列911の先頭領域アドレスの決定方法については本動作フローには記載されていないが、前記図８のデータ伝送シーケンス（２）で示したシーケンスSM05において、マスター装置500からスレーブ装置900に予め通知される。【００２３】
図１４は従来技術のデータ送信制御の動作フロー（２）で、従来技術のデータ送信制御装置として構成されたマスター装置が自律的にスレーブ装置に対してデータを送信する場合のマスター装置側のデータ送信制御の処理手順を示している。
従来技術で構成されているマスター装置は、自装置のデータ記憶部内に記憶されているデータ列からデータを読み取った後（S921）そのデータをスレーブ装置へ送信し（ステップS922）、スレーブ装置からの確認応答情報（アクノリッジ）の返信を待ち合わせる（ステップS923）。スレーブ装置から確認応答情報を受信したら、直前に送信したデータがデータ列の最終データか否かを判定し（S924）、最終データでなければ（NO）ステップS921に戻って次のデータ読み出しを行い、最終データの場合は（YES）処理を終了する。このように、従来技術のデータ送信制御方法では、自律的なタイミングで自装置からデータを送信する場合は、まずデータ記憶部よりデータを読み出した後にその読み出したデータを送信し、その送信したデータに対する確認応答情報が通信相手装置から返送されるのを待ち合わせる。そして、この処理手順を繰り返すことによりデータ列を送信するため、データ記憶部からのデータ読み出し処理時間の変動によりデータ送信タイミングが変動することになり、データ列全体の送信完了時間もかなり変動することになる。【００２４】
以上に述べたI2Cインターフェースによるデータ伝送技術については、非特許文献１にその詳細が開示されている。
【非特許文献１】I2Cバス仕様書、バージョン2.1、2000年1月、日本フィリップス社発行。
【発明の開示】
【００２５】
（発明が解決しようとする課題）
従来のI2Cインターフェース仕様に準拠したスレーブ装置は、前記のようにクロックストレッチを利用してデータ送信のタイミング調整を行っていた。例えば、マスター装置からのデータ送信要求に対してスレーブ装置がデータ列を送信する際は、データ記憶部からデータを読み出すのに時間を要するため読み出し時間の間はクロックストレッチによりデータの伝送を一時停止させていた。このクロックストレッチ状態は１バイトのデータを読み出す毎に発生し、大量のデータ列の伝送の際はシステム全体のデータ伝送性能を低下させる要因になっていた。
また、前記のような従来のI2Cインターフェースをベースにしたデータ送信制御では、例えば、光モジュールの設計に使用されているＳＦＰ(Small Form-factor Pluggable)仕様に適合させようとする場合などは、データ信号ＳＤＡの確定時間tAA（例えば4.5μs以内）やクロックストレッチ許容時間tStrech(例えば5μs以内)が非常に短い為、マスター装置からデータを受信したらスレーブ装置は直ちにマスター装置へデータを送信しなければならず、従来のデータ送信制御方法では対応が困難な場合がある。
本発明は、装置間でデータ到達の確認応答を取りながらデータの送受信を行う際のデータ伝送を高速化するデータ送信制御方法及びデータ送信制御装置を提供することを目的とする。
（課題を解決するための手段）
【００２６】
本発明は、データ記憶部に格納されているデータ列から所定の順序でデータを読み出し、通信相手装置からのデータ到達の確認応答を取りながらデータの送信を制御する方法において、予め前記データ記憶部から送信するデータを読み出して送信レジスタへ格納し、データ送信タイミング検出時に前記送信レジスタに格納されているデータを送信する、ように構成した。
これにより、データの送信タイミング検出時点にはすでに送信レジスタに次に送信すべきデータが格納されており、送信レジスタからデータ信号線へ送信スイッチを切り替えるだけの処理時間でデータを送出することができ、データ送信タイミングの遅延を最小限に抑えることができる。
【００２７】
また本発明は、前記データ送信タイミングは通信相手装置からのデータ送信要求情報受信時、自装置からの自律的なデータ送信要求発生時、および通信相手装置からのデータ到達の確認応答情報受信時のいずれかである、ように構成することもできる。
これにより、データを送信する条件として考えられる全ての場合を網羅した形でデータ送信のタイミング遅延を抑制でき、装置全体のデータ送信の高速化を図ることができる。
【００２８】
本発明はさらに、I2Cシリアルインターフェースの通信プロトコルに準拠してデータ送信およびデータ到達の確認応答を行う、ように構成することができる。
これによれば、I2Cシリアルインターフェースの通信プロトコルに準拠した形で、様々の装置間の接続に汎用的に対応しながらデータ送信の高速化を図ることができる。
【００２９】
（発明の効果）
装置間でデータの確認応答を取りながらデータを伝送する際に、次に送信すべきデータを送信タイミング検出前に予めデータ記憶部から読み出して送信レジスタに格納しておくことにより、送信タイミング検出時点では送信レジスタに格納されているデータを直ちにデータ信号線へ出力することができ、データ伝送の高速化を図ることができる。
【図面の簡単な説明】
【００３０】
【図１】本発明のデータ送信制御装置の構成
【図２】本発明のデータ送信制御の動作フロー（１）
【図３】本発明のデータ送信制御の動作フロー（２）
【図４】本発明のデータ送信制御の信号タイミング概要
【図５】データ伝送のための装置間の接続概念
【図６】データ伝送のための装置間の信号接続概念
【図７】データ送受信シーケンス（１）
【図８】データ送受信シーケンス（２）
【図９】データ伝送時の信号タイミング（１）
【図１０】データ伝送情報の信号タイミング（２）
【図１１】従来技術のデータ送信制御の信号タイミング概要
【図１２】従来技術のデータ送信制御装置の構成
【図１３】従来技術のデータ送信制御の動作フロー（１）
【図１４】従来技術のデータ送信制御の動作フロー（２）
【発明を実施するための最良の形態】
【００３１】
（実施例）
図１は本発明のデータ送信制御装置の構成で、ここでは前記図５の接続概念で示したスレーブ装置100が本発明のデータ送信制御装置として構成されている場合の例を示している。
本発明のデータ送信制御装置では、まずデータ読み出し部103はデータ記憶部110内に格納されているデータ列111からデータを読み出して送信レジスタ104に格納し、その旨を受信データ解析部102に通知する。
一方、マスター装置500よりデータ信号線ＳＤＡ800を介して送信されてくる情報はバッファ181を経由して受信レジスタ101に入力され、受信データ解析部102は受信レジスタ101に格納されているデータを読み込んでクロックストレッチを設定した後その内容を解析し、それがマスター装置からのデータ送信要求情報の場合は確認応答情報（アクノリッジ）を返信した後クロックストレッチを解除する。クロックストレッチの設定および解除はクロック信号線ＳＣＬ700のオープンドレイン回路170を駆動することにより行う。
その後送信スイッチ105をONにし、送信レジスタに格納されているデータをオープンドレイン回路180に出力してデータ信号線ＳＤＡ800にシリアル信号として送信すると同時に、データ読み出し部103を起動してデータ記憶部110からの次のデータの読み出し処理を開始する。
一方、受信データ解析部102は上記で起動したデータ読み出し部103の次のデータ読み出し処理と並行してマスター装置からの確認応答情報（アクノリッジ）の受信を待ち合わせ、確認応答情報を受信した時点でデータ読み出し部103からの次のデータ読み出し完了の通知がきていれば送信スイッチ105をONにして送信レジスタに格納されているデータをマスター装置へ送信する。この時点では、次のデータ読み出し処理は先行して実施されているため、通常は送信レジスタ104には既に次に送信すべきデータが格納されており、送信スイッチ105をONにする処理のみで直ちに送信レジスタに格納されているデータがマスター装置へ送信される。ここで、確認応答情報を受信したか否かの判定処理の間は実際はクロックストレッチを設定する場合があるが、メモリからのデータ読み出し時間に比べると無視できる時間であるため、本発明の本質には影響しない。【００３２】
また、受信データ解析部102はデータ読み出し部103の次のデータ読み出し処理と並行動作するのではなく、データ読み出し部103からの次のデータの読み出し完了通知を待ち合わせ、読み出し完了通知を認知した時点でマスター装置からの確認応答情報（アクノリッジ）の受信を待ち合わせるように構成してもよい。この場合でも、通常は確認応答情報（アクノリッジ）の受信タイミングの方がデータ記憶部からのデータ読み出し完了タイミングより遅くなるため、同様にデータの送信タイミングを速めることができる。
上記の処理手順を、マスター装置からのデータ送信の終了を示す送信終了情報（ノンアクノリッジ）を受信するまで繰り返して、データ送信シーケンスを終結する。
このようにして、従来技術のようにデータ記憶部110からデータを読み出した後にそのデータを送信するのではなく、通信相手装置からの応答確認情報の受信待ちの間に並行して次に送信するデータをデータ記憶部110から読み出して準備しておくために、データ読み出し時間の分だけデータ送信タイミングが速くなり、データ送信の高速化を図ることができる。
上記の実施例は、スレーブ装置側に本発明のデータ送信制御の構成を組み込んだ場合で説明したが、これをマスター装置に組み込んでマスター装置からスレーブ装置へデータ送信した場合も同様に構成することができ、データの送信相手であるスレーブ装置からの確認応答情報の受信待ちの間に次の送信データを送信レジスタに格納しておくことにより、データ記憶部からのデータ読み出し時間分の処理スピードを向上させることができる。【００３３】
図２は本発明のデータ送信制御の動作フロー（１）で、マスター装置500からデータ送信要求情報を受信した際のスレーブ装置100のデータ送信制御の処理手順を示している。
本発明の送信制御装置で構成されているスレーブ装置100は、まずデータ記憶部110から最初に送信すべきデータを予め読み出して送信レジスタ104に格納しておく(ステップS101)。
次に、マスター装置500から最初の１バイトを受信した時点で（ステップS102）クロックストレッチを設定してクロック信号線ＳＣＬ700を”Low”に保持した後(ステップS103)、受信した１バイト目に格納されているスレーブアドレス情報とR/Wビットの内容を解析し、スレーブアドレスが自装置に割り当てられているアドレスと一致し、R/Wビットの値が”1”でスレーブ装置からマスター装置へのデータ送信要求であると判定した場合は(ステップS104)、確認応答情報（アクノリッジ）をマスター装置500へ送信した後（ステップS105）、クロックストレッチを解除し（ステップS106）、送信スイッチ105をON(接続)状態に切り替えて送信レジスタのデータをマスター装置へ送信する（ステップ107）。ここで、データ記憶部110内の送信データ列111の先頭領域アドレスについては、本動作フローには記述されていないが、前記図８のデータ伝送シーケンス（２）で示したシーケンスSM05においてマスター装置500からスレーブ装置100に予め通知される。
次にデータ記憶部110内のデータ列111より次のデータを読み出して送信レジスタ104に格納した後（ステップS108）、マスター装置500からの確認応答情報（アクノリッジ）または送信終了情報（ノンアクノリッジ）の受信を待ち合わせ（ステップS109）、受信した情報がノンアクノリッジかアクノリッジかを判定し（ステップS110）、ノンアクノリッジの場合は（YES）処理を終了し、そうでなくアクノリッジの場合は（NO）、送信レジスタ104に格納されているデータを送信スイッチ105を切り替えて送信し（ステップS111）、上記のステップS108へ戻る。上記のステップS110の処理では、受信したデータが確認応答情報（アクノリッジ）か否かを判定する処理の間クロックストレッチを設定する場合があるが、メモリからのデータ読み出し時間に比較すると無視できるため、本発明の本質には影響しない。
このように、時間を要するメモリからのデータ読み出し処理の間ではクロックストレッチが設定されないためデータ送信タイミングの遅延が最小限に抑えられ、データ送信の高速化を図ることができる。【００３４】
図３は本発明のデータ送信制御の動作フロー（２）で、本発明のデータ送信制御装置により構成されたマスター装置500が自律的にスレーブ装置100に対してデータを送信する場合のデータ送信制御の処理手順を示している。
マスター装置500は、自装置のデータ記憶部から送信データを読み出した後そのデータを送信レジスタへ格納する（ステップS121）。そして、送信レジスタに格納されているデータを送信スイッチを切り替えて送信した後（ステップS122）、データ記憶部から次に送信すべきデータを読み出して送信レジスタへ格納し（ステップS123）、直前にスレーブ装置100へ送信したデータに対するスレーブ装置100からの確認応答情報（アクノリッジ）の受信を待ち合わせ、確認応答情報を受信したら（ステップS124）直前に送信したデータが最終データか否かを判定し（ステップS125）、最終データでない場合は(NO)上記のステップS122に戻り、最終の場合は（YES）処理を終了する。このようにして、送信レジスタに格納されているデータを送信スイッチを切り替えるだけの処理で行い、時間を要するデータ記憶部からのデータ読み出し処理を、直前に送信したデータにたいする通信相手装置からの確認応答情報（アクノリッジ）の返送に要する時間帯の間に行うため、確認応答情報を受信した時点では通常は既に送信レジスタに次に送信すべきデータが格納された状態になっており、最小限の処理時間で次のデータを送信することができる。【００３５】
図４は本発明のデータ送信制御の信号タイミング概要で、I2Cインターフェースにより、本発明のデータ送信制御装置として構成されているスレーブ装置100がマスター装置500からデータ送信要求を受信時点から、最初の送信データであるデータ１をマスター装置500へ送信開始するまでの信号タイミング関係を概念的に示している。
スレーブ装置100は、マスター装置500により生成されたスタート条件Ｓを検出後(タイミングT101)、マスター装置500から送信されてくる７ビットのスレーブアドレス情報を受信し（タイミングT102）、引き続いて送信されてくるR/Wビットを受信した時点でクロックストレッチを設定して、受信した最初の１バイトに含まれるスレーブアドレス情報とR/Wビット情報を解析し、スレーブアドレスが自装置のアドレスと一致しかつR/Wビットの値が”1”であることから、スレーブ装置100に対するデータ送信要求であると判定する (タイミングT103) 。その後スレーブ装置100は確認応答情報（アクノリッジ）Ａを送信してクロックストレッチを解除した後(タイミングT104)、送信レジスタ104に格納されているデータを送信開始する(タイミングT105)。このように、本発明の構成では、上記のタイミングT103とT104の間に従来技術では必要だったデータ記憶部110からのデータ読み出し処理時間が不要となり、クロックストレッチ状態の継続時間が最小限に抑制され、高速にデータ送信を行うことができる。【００３６】
以上実施例においては、装置間の通信インターフェースとしてＩ２Ｃインターフェースを用いた場合を代表例として説明したが、他の通信インターフェースを用いた場合でも本発明は同様に適用できる。
また、本発明は実施例の構成の中のマスター装置、スレーブ装置のいずれにも適用できるだけでなく、データの到達の確認応答を行いながらデータ通信する任意の装置に対しても同様に適用できる。
【符号の説明】
【００３７】
100,200,900    スレーブ装置
101    受信レジスタ
102    受信データ解析部
103    データ読み出し部
104    送信レジスタ
105    送信スイッチ
110,910    データ記憶部
111,911    データ列
170,180,570,580,970,980    オープンドレイン回路
171,181,571,581,971,981    バッファ
500    マスター装置
600    電源電圧
700    クロック信号線ＳＣＬ
701    クロック信号ＳＣＬ
760,860    プルアップ抵抗(Rp)
800    データ信号線ＳＤＡ
801    データ信号ＳＤＡ
810    スレーブ装置側の時間軸
850    マスター装置側の時間軸
【図１】
0004801658.tif 000002
【図２】
0004801658.tif 000003
【図３】
0004801658.tif 000004
【図４】
0004801658.tif 000005
【図５】
0004801658.tif 000006
【図６】
0004801658.tif 000007
【図７】
0004801658.tif 000008
【図８】
0004801658.tif 000009
【図９】
0004801658.tif 000010
【図１０】
0004801658.tif 000011
【図１１】
0004801658.tif 000012
【図１２】
0004801658.tif 000013
【図１３】
0004801658.tif 000014
【図１４】
0004801658.tif 000015