(57)【要約】【課題】通信データの解析により通信速度の検出を行い、検出結果に応じて通信速度調整を行う装置および方法を実現する。【解決手段】調歩同期方式のシリアル通信を実行する通信装置において、受信データを構成するスタートビットの開始位置以後、ワード前半部に存在する次のビット変化位置までのタイマ計測時間と予め設定した基準ビット幅を適用して暫定ビット幅を算出し、さらにスタートビットの開始位置からワードの最終的なビット変化位置までのタイマ計測時間を最終計測時間として取得し、最終計測時間と暫定ビット幅とに基づいてビット幅を算出し、算出したビット幅を適用して通信速度の算出処理を行う。本構成により通信相手に合わせた通信速度調整が可能となる。【選択図】図１２
2010124267.tif 000002
【特許請求の範囲】
【請求項１】
調歩同期方式のシリアル通信を実行する通信実行部と、
前記通信実行部が通信相手から受信する通信データのビット変化を検出するビット変化検出部と、
前記ビット変化検出部の検出するビット変化位置によって規定されるパルス期間を計測するタイマと、
前記タイマによって計測されるパルス期間情報を入力して、前記通信データの通信速度判定処理を行う制御部を有し、
前記制御部は、
スタートビットとデータビットおよびストップビットを含むワード単位で通信速度判定処理を行う構成であり、
前記タイマによって計測されるスタートビットの開始位置以後の次のビット変化位置がワード前半部に存在する場合、スタートビットから次のビット変化位置までのタイマ計測時間と予め設定した基準ビット幅を適用して暫定ビット幅を算出し、
算出した暫定ビット幅を適用して通信速度の算出処理を行う構成であるデータ通信装置。
【請求項２】
前記制御部は、
スタートビットの開始位置以後の次のビット変化位置がワード前半部に存在し、さらに後続する異なるビット変化位置が存在する場合、スタートビットの開始位置からワードの最終的なビット変化位置までのタイマ計測時間を最終計測時間として取得し、該最終計測時間と前記暫定ビット幅とに基づいてビット幅を算出し、算出したビット幅を適用して通信速度の算出処理を行う構成である請求項１に記載のデータ通信装置。
【請求項３】
前記ワードは８ビットのデータビットを含む構成であり、
前記制御部は、
前記タイマによって計測されるスタートビットの開始位置以後の次のビット変化位置がワード前半部であるデータビットの第４ビットまでに存在する場合、スタートビットから次のビット変化位置までのタイマ計測時間と予め設定した基準ビット幅を適用して暫定ビット幅を算出し、算出した暫定ビット幅を適用して通信速度の算出処理を行う構成である請求項１に記載のデータ通信装置。
【請求項４】
前記制御部は、
前記タイマによって計測されるスタートビットの開始位置以後の次のビット変化位置がワード前半部に存在する場合、スタートビットから次のビット変化位置までのタイマ計測時間と予め設定した基準ビット幅を適用して、スタートビットの開始位置以後の次のビット変化位置までの暫定ビット数を算出し、算出した暫定ビット数とタイマ計測時間とを適用して、以下の式、すなわち、
暫定ビット幅＝（タイマ計測時間）／（暫定ビット数）
上記式に従って暫定ビット幅を算出し、算出した暫定ビット幅を適用して通信速度の算出処理を行う構成である請求項１に記載のデータ通信装置。
【請求項５】
前記制御部は、
スタートビットの開始位置以後の次のビット変化位置がワード前半部に存在し、さらに後続する異なるビット変化位置が存在する場合、スタートビットの開始位置からワードの最終的なビット変化位置までのタイマ計測時間を最終計測時間として取得し、
該最終計測時間と前記暫定ビット幅とに基づいて、以下の式、すなわち、
確定ビット数＝（最終計測時間）／（暫定ビット幅）
上記式に従って確定ビット数を算出し、算出した確定ビット数を適用してさらに以下の式、すなわち、
ビット幅＝（最終計測時間）／（確定ビット数）
上記式に従ってビット幅を算出し、算出したビット幅を適用して通信速度の算出処理を行う構成である請求項４に記載のデータ通信装置。
【請求項６】
前記データ通信装置は、情報処理装置本体に着脱可能な通信部を有するバッテリーであり、前記通信相手との通信処理を実行する構成である請求項１〜５いずれかに記載のデータ通信装置。
【請求項７】
前記通信相手は、バッテリーの装着されるカメラである請求項６に記載のデータ通信装置。
【請求項８】
データ通信装置において実行する通信制御方法であり、
通信実行部が、調歩同期方式のシリアル通信を実行する通信実行ステップと、
ビット変化検出部が、前記通信実行部が通信相手から受信する通信データのビット変化を検出するビット変化検出ステップと、
タイマが、前記ビット変化検出部の検出するビット変化位置によって規定されるパルス期間を計測する時間計測ステップと、
制御部が、前記タイマによって計測されるパルス期間情報を入力して、前記通信データの通信速度判定処理を行う制御ステップを有し、
前記制御ステップは、
スタートビットとデータビットおよびストップビットを含むワード単位で通信速度判定処理を行うステップであり、
前記タイマによって計測されるスタートビットの開始位置以後の次のビット変化位置がワード前半部に存在する場合、スタートビットから次のビット変化位置までのタイマ計測時間と予め設定した基準ビット幅を適用して暫定ビット幅を算出し、算出した暫定ビット幅を適用して通信速度の算出処理を行うステップである通信制御方法。
【請求項９】
データ通信装置において通信制御処理を実行させるプログラムであり、
通信実行部に、調歩同期方式のシリアル通信を実行させる通信実行ステップと、
ビット変化検出部に、前記通信実行部が通信相手から受信する通信データのビット変化を検出させるビット変化検出ステップと、
タイマに、前記ビット変化検出部の検出するビット変化位置によって規定されるパルス期間を計測させる時間計測ステップと、
制御部に、前記タイマによって計測されるパルス期間情報を入力して、前記通信データの通信速度判定処理を行わせる制御ステップを有し、
前記制御ステップは、
スタートビットとデータビットおよびストップビットを含むワード単位で通信速度判定処理を行わせるステップであり、
前記タイマによって計測されるスタートビットの開始位置以後の次のビット変化位置がワード前半部に存在する場合、スタートビットから次のビット変化位置までのタイマ計測時間と予め設定した基準ビット幅を適用して暫定ビット幅を算出し、算出した暫定ビット幅を適用して通信速度の算出処理を行わせるステップであるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ通信装置、および通信制御方法、並びにプログラムに関する。さらに詳細には、調歩同期方式によるシリアル通信を行うデータ通信装置、および通信制御方法、並びにプログラムに関する。
【背景技術】
【０００２】
シリアル通信によるデータ通信の通信方式として調歩同期方式が知られている。調歩同期方式に従ったシリアルデータ通信の概要について図１を参照して説明する。図１には、
（ａ）調歩同期方式に従ったシリアルデータ通信を行う通信構成例、
（ｂ）通信データのデータ構成例、
これらの一例を示している。
【０００３】
例えば、図１（ａ）に示す通信部Ａ１０と通信部Ｂ２０との間でシリアルデータ通信が行われる。通信部Ａ１０と通信部Ｂ２０の各々は、それぞれ送受信端子を有し、送受信端子を介してデータ送信またはデータ受信を行う。
【０００４】
通信部Ａ１０と通信部Ｂ２０との間で転送される通信データは、図１（ｂ）に示すように、スタートビットとストップビットとの間に送信対象とするデータを設定した構成となる。具体的には、例えば、
スタートビット＝１ビット
データビット=８ビット
ストップビット＝１ビット
このような構成からなる通信データを送信側で生成して受信側に出力する。このようにデータビットを１バイト（８ビット）単位でスタートビットとストップビットで挟む設定とした通信データを生成して送信する。
【０００５】
なお、図１（ｂ）に示す通信データは、送信データを構成するデータ量に応じて連続して転送されることになる。例えば１６バイトデータを送信する場合は、図１（ｂ）に示す通信データが１６個設定されて所定間隔で送信される。データ受信側では、スタートビットとストップビットとの間にあるデータを受信対象のデータとして識別することができる。例えばスタートビットは１ビットの［Ｌｏｗ（０）］、ストップビットは１ビットの［Ｈｉｇｈ（１）］と規定する。受信側ではこのルールに従ってスタート／ストップビットを識別して、その間のデータを取得して解析することができる。
【０００６】
なお、図１（ｂ）に示す例は、スタート／ストップビット間に８ビットのデータビットを設定した例であるが、スタート／ストップビット間に設定するデータは８ビットのデータビットに限るものではない。例えば８ビットデータにさらにエラー訂正用のパリティビットを付加する構成なども可能である。
【０００７】
なお、データ受信側においてスタート／ストップビットを識別するためには、１ビット幅についての情報が必要となる。１ビット幅はデータ送受信双方において一致した認識を持つことが必要となる。データ受信側ではクロックを用いて１ビット幅を検出し、上記の手法に従ってデータの取得を行うことができる。
【０００８】
１ビットの幅は様々な設定が可能である。１ビット幅を短い時間に設定すれば通信速度を速めることが可能となる。データ受信側では、スタートビットの１ビット幅を測定することによりデータ通信速度の判定を行う。具体的には、スタートビットの１ビット幅が、受信側で利用するクロック信号の何クロック分に相当するかをカウントする。
【０００９】
なお、シリアルデータ通信における通信速度は、１秒あたりのビット数（ｂｐｓ：ｂｉｔ  ｐｅｒ  ｓｅｃｏｎｄ）として規定されるボーレート（Ｂａｕｄ  Ｒａｔｅ）で表現されることが多い。データ送信側とデータ受信側では同じボーレートでの処理が必要となる。このため、シリアル通信では予め固定されたボーレートを利用するか、または、送信側が、受信側の利用ボーレートを確認して受信側のボーレートに併せて送信データを生成して送信する処理が行われる。
【００１０】
しかし、データ送信側とデータ受信側とで利用するクロックの誤差などが発生すると、正確なデータ受信ができなくなる場合がある。データ送受信の成功例と失敗例について図２を参照して説明する。図２（１）はデータ送信側の送信データである通信部Ａ出力に対して、データ受信側のデータ読み取りが正確に実行された例である。
【００１１】
図２（１）に示す例は、データ送信側である通信部Ａ出力に対して、通信部Ｂ入力の波形が完全に一致している。通信部ＢではクロックＢ側のクロックに基づいて、スタートビットの位置からクロック数に応じてパルス幅を区切り、各パルスがハイ（１）であるかロー（０）であるかを判定していく。スタートビット１ビットの次の８ビットをデータビットとして取得し、その後の１ビットをストップビットとして識別する。図２（１）に示す例は、通信部Ｂのクロックに従ってデータ読み取りを行った場合に性格にデータ読み取りが実行される例である。
【００１２】
図２（２）に示す例は、通信部Ｂにおいてデータ読み取りが正確に実行されていない例を示している。図２（１）に示す例と同様、通信部Ｂは、クロックＢ側のクロックに基づいて、スタートビットの位置からクロック数に応じてパルス幅を区切り、各パルスがハイ（１）であるかロー（０）であるかを判定していく。
【００１３】
しかし、通信部Ａと通信部Ｂの通信速度の認識が異なっている場合や、通信部Ａの利用クロックと通信部Ｂの利用クロックにずれがある場合には、通信部Ａからの送信データを通信部Ｂにおいて正確に把握できないことになる。
【００１４】
通信部Ａと通信部Ｂの通信速度の認識が一致していても通信部Ａの利用クロックと通信部Ｂの利用クロックにずれがある場合には正確な受信データの解析ができない。すなわち、通信部Ａと通信部Ｂの双方が一致した通信速度の認識に従って、１つのパルス幅を同一のクロック数としてカウントする設定とした場合でも、通信部Ａの利用クロックと通信部Ｂの利用クロックにずれがある場合には、送信側で出力したデータのパルス幅と受信側で認識するパルス幅に差が発生する。この差分は、基準位置であるスタートビットの位置から離れるに従って蓄積することになる。
【００１５】
図２（２）に示す例は、通信部Ａの利用クロックと通信部Ｂの利用クロックに５％のずれがある場合の例を示している。この場合、矢印３１に示すように、受信データの解析を行う通信部Ｂがストップビットの位置であると判定したパルス位置が、実際は送信データのデータビットの最終ビット位置に対応するといったことになる。結果として、通信部Ｂは通信部Ａの送信したデータを正確に取得することができなくなり、通信エラーが発生してしまう。
【００１６】
このような通信エラーの発生を防止するためには、データ送受信を行う２つの通信部の処理精度を高めることが必要となる。例えば各通信部の利用クロックの誤差が２．５％以内になるように保証し、全体で５％以内の精度を保てるように設定した上で通信を行うといったことが必要となる。
【００１７】
各通信部の送受信データに発生するずれを５％以内にする方法としては以下の方式がある。
Ａ）各通信部の利用クロックの周波数精度を各々２．５％以内に収める。
しかし、この方法を適用する場合、周波数の精度保証を行うことが必要であり、各通信部の回路コストや規模が大きくなるという問題がある。
【００１８】
Ｂ）データ送受信を行う１つの通信部が、もう一方の通信部の処理態様に整合させる調整を行い、双方の誤差を５％以内に納まる設定とする。
この方法は、例えばデータ送受信を行う１つの通信部が通信相手側から予め規定したビットパターンのデータを受信し、受信側でビット変化位置に従ってビット幅を計測する。このビット幅が何クロック分かを確認し、そのクロック数をビット幅として設定してその後の受信データの解析を行う方法である。
しかし、このような処理を行うためには、本来の通信データとは異なったデータを事前に送受信することが必要になり、データ送受信効率が低下するという問題がある。
【００１９】
データ送信側の送信するデータのビット幅の計測を行って、受信側で正確な受信処理を可能とする構成を開示した従来技術とし、例えば特許文献１（特開２００７−２５９０９４号公報）がある。特許文献１はスタートビットを２ビットの交番データ、すなわち［１０］または［０１］の２ビット構成としている。この構成により、受信側ではスタートビットに含まれるパルスの立ち下がりと立ち上がりの双方を確実に検出することが可能となり、精度の高いビット幅検出を行うことを可能としている。
【００２０】
また、特許文献２（特開２００１−１６８８５３号公報）では、ビット幅計測用の特別のコマンドを用意して、受信側ではこのコマンドを利用してスタートビットのビット幅の計測を行う構成としている。
【００２１】
このような従来技術の構成によって１ビット幅の計測を高精度に行うことは可能となる。しかし、特許文献１の手法では、スタートビットに２ビットを使用することになり、転送データに対するスタートビットの占有率が高まり、結果としてデータ送信レートが低下してしまうという問題がある。
【００２２】
また、特許文献２の手法では、事前に特別のコマンドの送受信を行なって計測を行うことが必要であり、処理効率が低下するという問題がある。また、データ送信側で通信速度、すなわちボーレートの変更を行った場合、速度切り替え処理の発生ごとに、特別のコマンドを送信して計測を行うことが必要となり、通信速度の切り替えが発生する構成においては著しく処理効率が大きく低下してしまうという問題がある。
【００２３】
【特許文献１】特開２００７−２５９０９４号公報
【特許文献２】特開２００１−１６８８５３号公報
【発明の開示】
【発明が解決しようとする課題】
【００２４】
本願は、例えば上述の問題点に鑑みてなされたものであり、調歩同期方式によるシリアル通信処理を行う構成において、正確なデータ受信処理を実現するデータ通信装置、および通信制御方法、並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２５】
本発明の第１の側面は、
調歩同期方式のシリアル通信を実行する通信実行部と、
前記通信実行部が通信相手から受信する通信データのビット変化を検出するビット変化検出部と、
前記ビット変化検出部の検出するビット変化位置によって規定されるパルス期間を計測するタイマと、
前記タイマによって計測されるパルス期間情報を入力して、前記通信データの通信速度判定処理を行う制御部を有し、
前記制御部は、
スタートビットとデータビットおよびストップビットを含むワード単位で通信速度判定処理を行う構成であり、
前記タイマによって計測されるスタートビットの開始位置以後の次のビット変化位置がワード前半部に存在する場合、スタートビットから次のビット変化位置までのタイマ計測時間と予め設定した基準ビット幅を適用して暫定ビット幅を算出し、
算出した暫定ビット幅を適用して通信速度の算出処理を行う構成であるデータ通信装置にある。
【００２６】
さらに、本発明のデータ通信装置の一実施態様において、前記制御部は、スタートビットの開始位置以後の次のビット変化位置がワード前半部に存在し、さらに後続する異なるビット変化位置が存在する場合、スタートビットの開始位置からワードの最終的なビット変化位置までのタイマ計測時間を最終計測時間として取得し、該最終計測時間と前記暫定ビット幅とに基づいてビット幅を算出し、算出したビット幅を適用して通信速度の算出処理を行う構成である。
【００２７】
さらに、本発明のデータ通信装置の一実施態様において、前記ワードは８ビットのデータビットを含む構成であり、前記制御部は、前記タイマによって計測されるスタートビットの開始位置以後の次のビット変化位置がワード前半部であるデータビットの第４ビットまでに存在する場合、スタートビットから次のビット変化位置までのタイマ計測時間と予め設定した基準ビット幅を適用して暫定ビット幅を算出し、算出した暫定ビット幅を適用して通信速度の算出処理を行う構成である。
【００２８】
さらに、本発明のデータ通信装置の一実施態様において、前記制御部は、前記タイマによって計測されるスタートビットの開始位置以後の次のビット変化位置がワード前半部に存在する場合、スタートビットから次のビット変化位置までのタイマ計測時間と予め設定した基準ビット幅を適用して、スタートビットの開始位置以後の次のビット変化位置までの暫定ビット数を算出し、算出した暫定ビット数とタイマ計測時間とを適用して、以下の式、すなわち、
暫定ビット幅＝（タイマ計測時間）／（暫定ビット数）
上記式に従って暫定ビット幅を算出し、算出した暫定ビット幅を適用して通信速度の算出処理を行う構成である。
【００２９】
さらに、本発明のデータ通信装置の一実施態様において、前記制御部は、スタートビットの開始位置以後の次のビット変化位置がワード前半部に存在し、さらに後続する異なるビット変化位置が存在する場合、スタートビットの開始位置からワードの最終的なビット変化位置までのタイマ計測時間を最終計測時間として取得し、該最終計測時間と前記暫定ビット幅とに基づいて、以下の式、すなわち、
確定ビット数＝（最終計測時間）／（暫定ビット幅）
上記式に従って確定ビット数を算出し、算出した確定ビット数を適用してさらに以下の式、すなわち、
ビット幅＝（最終計測時間）／（確定ビット数）
上記式に従ってビット幅を算出し、算出したビット幅を適用して通信速度の算出処理を行う構成である。
【００３０】
さらに、本発明のデータ通信装置の一実施態様において、前記データ通信装置は、情報処理装置本体に着脱可能な通信部を有するバッテリーであり、前記通信相手との通信処理を実行する構成である。
【００３１】
さらに、本発明のデータ通信装置の一実施態様において、前記通信相手は、バッテリーの装着されるカメラである。
【００３２】
さらに、本発明の第２の側面は、
データ通信装置において実行する通信制御方法であり、
通信実行部が、調歩同期方式のシリアル通信を実行する通信実行ステップと、
ビット変化検出部が、前記通信実行部が通信相手から受信する通信データのビット変化を検出するビット変化検出ステップと、
タイマが、前記ビット変化検出部の検出するビット変化位置によって規定されるパルス期間を計測する時間計測ステップと、
制御部が、前記タイマによって計測されるパルス期間情報を入力して、前記通信データの通信速度判定処理を行う制御ステップを有し、
前記制御ステップは、
スタートビットとデータビットおよびストップビットを含むワード単位で通信速度判定処理を行うステップであり、
前記タイマによって計測されるスタートビットの開始位置以後の次のビット変化位置がワード前半部に存在する場合、スタートビットから次のビット変化位置までのタイマ計測時間と予め設定した基準ビット幅を適用して暫定ビット幅を算出し、算出した暫定ビット幅を適用して通信速度の算出処理を行うステップである通信制御方法にある。
【００３３】
さらに、本発明の第３の側面は、
データ通信装置において通信制御処理を実行させるプログラムであり、
通信実行部に、調歩同期方式のシリアル通信を実行させる通信実行ステップと、
ビット変化検出部に、前記通信実行部が通信相手から受信する通信データのビット変化を検出させるビット変化検出ステップと、
タイマに、前記ビット変化検出部の検出するビット変化位置によって規定されるパルス期間を計測させる時間計測ステップと、
制御部に、前記タイマによって計測されるパルス期間情報を入力して、前記通信データの通信速度判定処理を行わせる制御ステップを有し、
前記制御ステップは、
スタートビットとデータビットおよびストップビットを含むワード単位で通信速度判定処理を行わせるステップであり、
前記タイマによって計測されるスタートビットの開始位置以後の次のビット変化位置がワード前半部に存在する場合、スタートビットから次のビット変化位置までのタイマ計測時間と予め設定した基準ビット幅を適用して暫定ビット幅を算出し、算出した暫定ビット幅を適用して通信速度の算出処理を行わせるステップであるプログラムにある。
【００３４】
なお、本発明のプログラムは、例えば、様々なプログラム・コードを実行可能な汎用システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体によって提供可能なプログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【００３５】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００３６】
本発明の一実施例構成によれば、調歩同期方式のシリアル通信を実行する通信装置において、通信相手から受信する通信データを構成するワードのスタートビットの開始位置以後、次のビット変化位置がワード前半部に存在する場合、スタートビットから次のビット変化位置までのタイマ計測時間と予め設定した基準ビット幅を適用して暫定ビット幅を算出し、さらに後続する異なるビット変化位置が存在する場合、スタートビットの開始位置からワードの最終的なビット変化位置までのタイマ計測時間を最終計測時間として取得し、最終計測時間と暫定ビット幅とに基づいてビット幅を算出し、算出したビット幅を適用して通信速度の算出処理を行う。本構成により通信速度が不明の通信相手からの通信データの速度検出が可能となり、相手に合わせた通信速度に切り替えて通信を成立させる制御が可能となる。
【発明を実施するための最良の形態】
【００３７】
以下、図面を参照しながら本発明のデータ通信装置、および通信制御方法、並びにプログラムの詳細について説明する。説明は以下の項目に従って行う。
（１）データ通信システムの構成例
（２）調歩同期方式における通信速度調整について
（３）本発明のデータ通信装置における通信速度調整処理について
（４）本発明のデータ通信装置の構成および処理の概要
（５）本発明のデータ通信装置の実行する処理シーケンス
【００３８】
（１）データ通信システムの構成例
まず、本発明の適用可能なデータ通信システムの概要について説明する。本発明のデータ通信装置は調歩同期方式のシリアル通信を行う。さらにデータ受信側において精度の高い受信データの解析を可能とした構成を持つ。具体的にはデータ受信側で、受信データの１ビットのビット幅、例えば１ビット対応のクロックカウント数を高精度に計測して、計測結果としてのビット幅を適用してデータ解析を行う。
【００３９】
図３に本発明のデータ通信装置を利用したデータ通信システムの構成例を示す。図３において、通信部Ａ１１０と通信部Ｂ１２０は調歩同期方式のシリアル通信を行う。
【００４０】
通信部Ａ１１０と通信部Ｂ１２０の一構成例としては、例えば、通信部Ａが情報処理装置の本体、通信部Ｂがバッテリーとする組み合わせなどが想定される。具体的には、ビデオカメラやスチルカメラなどのカメラ本体と、カメラ本体に装着されるバッテリーの組み合わせである。
【００４１】
例えば、バッテリーである通信部Ｂ１２０にはＣＰＵ、メモリなどが備えられ、カメラ本体である通信部Ａ１１０との通信を行い、例えばカメラの機種名などの情報をバッテリー内のメモリに記録し、本体からの要求に応じてこれらの記録データの読み出しや書き込みを行う。バッテリーとカメラ本体とは、データ書き込み要求やデータ読み取り要求などのコマンドや、書き込みデータや読み取りデータの送受信をシリアル通信によって行う。通信部Ａ１１０も通信制御などを行うＣＰＵ等からなる制御部を備えている。
【００４２】
（２）調歩同期方式における通信速度調整について
シリアル通信では、先に説明したように、スタートビットとストップビットとの間に送信対象とするデータを設定して送信が行われる。例えば、
スタートビット＝１ビット
データビット=８ビット
ストップビット＝１ビット
このような構成からなる通信データを１ワード(１ｗｏｒｄ)とする。データ送信側では、このワード単位のデータを生成して受信側に出力する。
【００４３】
また、先にも説明したように、通信速度は１秒あたりのビット数（ｂｐｓ）として規定されるボーレートで表現されることが多い。データ送信側とデータ受信側では同じボーレートでの処理が必要となる。
【００４４】
しかし、例えばデータ送信側とデータ受信側とで通信速度の認識に差があるとデータ受信側は、正確な受信データの解析ができなくなることがある。具体的には、例えばデータ送信側とデータ受信側の双方が共通するボーレートでデータ送受信を行う場合でも、データ送信側とデータ受信側との利用するクロックに差があると１ビット幅の計測に差が発生する。
【００４５】
例えば、一例として１ビット幅を計測する際のクロック数が２００クロック数とした設定において、データ送信側の利用クロックとデータ受信側の利用クロックが異なり差があると、データ送信側の想定した１ビット幅と、データ受信側で計測する１ビット幅には差が発生することになる。この差がわずかの差であれば許容誤差として、データ受信側において正確なデータ取得が可能となるが、差が大きくなるとデータ受信側において正確なデータ取得が不可能となることがある。
【００４６】
具体的な例について、図４を参照して説明する。図４には、データ送信側の処理データを示している。すなわち、
（Ａ）送信予定データ（理想的な誤差のないクロックによる仮想的なデータ）
（Ｂ１）送信データ（誤差なし）
（Ｂ２）送信データ（誤差あり）
（Ｂ３）送信データ（誤差あり）
これらのデータ例を示している。図に示す例は、
スタートビット（１ビット）＝Ｌｏｗ（０）、
データビット中のビット０＝Ｌｏｗ（０）、
データビット中のビット１＝Ｈｉｇｈ（１）、
データビット中のビット２＝Ｈｉｇｈ（１）、
このような設定で、（Ａ）送信予定データをデータ送信側のクロックを利用して送信データ（Ｂ１）〜（Ｂ３）を生成した例である。
【００４７】
（Ｂ１）送信データ（誤差なし）は、（Ａ）送信予定データと全くずれのないデータであり、精度が高いずれのないクロックで信号変化（ハイ／ロー）を設定して生成した送信データである。データビットのビット０（Ｂｉｔ０）ロー（Ｌｏｗ）からビット１（Ｂｉｔ１）のハイ（Ｈｉｇｈ）への立ち上がりが（Ａ）送信予定データと一致している。
【００４８】
これに対して、（Ｂ２）、（Ｂ３）はビット０（Ｂｉｔ０）ロー（Ｌｏｗ）からビット１（Ｂｉｔ１）のハイ（Ｈｉｇｈ）への立ち上がりが（Ａ）送信予定データと一致していない。これは、例えば、送信データの生成に適用したクロックの精度が高くなく、正確なクロックとの誤差があるなどの理由によって発生する。
【００４９】
（Ｂ２）は、ローからハイへの立ち上がりが、（Ａ）送信予定データに比較して前の位置に設定された送信データの例である。（Ｂ３）は、ローからハイへの立ち上がりが、（Ａ）送信予定データより後ろの位置に設定された送信データの例を示している。
【００５０】
例えばこのような送信データがデータ受信側に送信される。データ受信側では、スタートビットの開始位置をクロックのスタート基準位置としたクロックカウントによりビット幅を識別して、各ビット位置のハイ／ローを識別していく。データ受信側において正しくデータ解析が行われるか否かは、データ受信側のクロック精度にも依存するが、例えば、ビット幅の中央位置のほぼ５０％部分でハイ／ローが正しく認識できていれば、そのビット値を読み取ることができる。
【００５１】
図に示す例では、図の上部に示す５０％の矢印が、ビット０の中央位置とビット１の中央位置の約５０％位置に相当する。（Ｂ１）〜（Ｂ３）のいずれも、この位置では、ビット０（Ｂｉｔ０）がロー、ビット１（Ｂｉｔ１）＝ハイと認識可能であり、データ受信側では、（Ｂ１）〜（Ｂ３）のいずれの送信データを受信しても誤りなく、データを取得することができる。
【００５２】
すなわち、（Ｂ２），（Ｂ３）は、送信データの誤差の許容範囲を示している。この図４に示す例は、データビットのビット０からビット１の位置で信号変化（ローからハイ）があるデータの場合である。クロックの誤差は、カウントが増加すればそれだけ蓄積されることになる。
【００５３】
例えば図に示すようにデータビットの前半における信号変化位置は、クロックのずれによる影響はさほど高くない。しかし、データビットの後半のビット６（Ｂｉｔ６）やビット７（Ｂｉｔ７）などではクロックのずれによる影響が大きくなることになる。このことについて図５を参照して説明する。
【００５４】
図５には、スタートビット（１ビット）、データビット（８ビット）、ストップビット（１ビット）のデータの送受信例として以下のデータを示している。
（Ａ）受信側のビット認識位置
（Ｂ）出力データ例（ローからハイへの変化位置が異なる複数の例（Ｂ１）〜（Ｂ９））
（Ｃ）（Ｂ１）〜（Ｂ９）の各信号変化位置対応の許容誤差
【００５５】
図５（Ａ）に示すように、データを受信する受信側では、各ビット幅の中央部の５０％の位置でハイまたはローが正しく検出されれば、ビット値を正しく認識できる。図５（Ａ）に示す斜線部の位置である。
【００５６】
図５（Ｂ）には、ローからハイに変化する位置がビット０〜ストップビットの９パターンを示している。受信側がこれらのデータを受信した場合について考察する。
例えば、最上段にある（Ｂ１）１ビット目で変化する場合、すなわちスタートビット（ロー）からデータビットの第１ビット（ビット０）でハイに遷移する信号の場合、受信側は、図に示すグレー部分でローからハイに遷移していることが認識できれば、
スタートビット＝ロー
第１ビット（ビット０）＝ハイ
このような正しいデータビットの識別が可能となる。
【００５７】
（Ｂ１）の例の場合、データ送信側とデータ受信側との通信速度認識の差異、例えば許容される利用クロックの差異に相当する許容誤差は、図５の右端に記載のように、図に示す（ビット幅（Ｌ１）と、許容誤差幅（Ｌ２）の比率（Ｌ２／Ｌ１）として示される。（Ｂ１）の例の場合、許容誤差は２５％となる。
【００５８】
しかし、先に説明したように、クロックの誤差は、カウントが増加すればそれだけ蓄積されることになる。（Ｂ２）の例は、２ビット目で変化する場合、すなわちデータビットの第１ビット（ビット０）がローで、データビットの第２ビット（ビット２）においてハイに遷移する信号の場合、受信側は、図に示すグレー部分でローからハイに遷移していることが認識できれば、
第１ビット（ビット０）＝ロー
第２ビット（ビット１）＝ハイ
このような正しいデータビットの識別が可能となる。
【００５９】
（Ｂ２）の例の場合、データ送信側とデータ受信側との通信速度認識の差異、例えば許容される利用クロックの差異は、図５の右端に記載のように、１６％となる。
【００６０】
さらに、最下段に記載の（Ｂ９）の例は、データビットの第８ビット（ビット７）がローで、ストップビットにおいてハイに遷移する信号の場合を示している。（Ｂ９）の例の場合、データ送信側とデータ受信側との通信速度認識の差異、例えば許容される利用クロックの差異は、図５の右端に記載のように５％となる。
【００６１】
このように、データ送受信双方における通信速度認識の差やクロックの差の影響は、データビットの前半に信号変化位置がある場合は小さい。すなわち、ある程度の差が存在しても正しくビット値判別を行うことが可能であり許容誤差が大きい。しかし、データビットの後半に信号変化位置がある場合は、許容誤差が小さくなる。
【００６２】
図５に示すように、データ送受信双方の通信速度認識の許容誤差は以下の通りとなる。
（Ｂ１）データビットの１ビット（ビット０）でビット値変化＝２５％
（Ｂ２）データビットの２ビット（ビット１）でビット値変化＝１６％
（Ｂ３）データビットの３ビット（ビット２）でビット値変化＝１２％
（Ｂ４）データビットの４ビット（ビット３）でビット値変化＝１０％
（Ｂ５）データビットの５ビット（ビット４）でビット値変化＝８％
（Ｂ６）データビットの６ビット（ビット５）でビット値変化＝７％
（Ｂ７）データビットの７ビット（ビット６）でビット値変化＝６％
（Ｂ８）データビットの８ビット（ビット７）でビット値変化＝５％
（Ｂ９）ストップビットでビット値変化＝５％
このようにデータ後半に進むに従って許容誤差は小さくなる。
【００６３】
図５は、ビット値変化位置が異なる送信データと許容誤差の例を示したが、データ受信側の機器における受信データと許容誤差との対応について図６を参照して説明する。
【００６４】
図６には、スタートビット（１ビット）、データビット（８ビット）、ストップビット（１ビット）のデータの送受信例として以下のデータを示している。
（Ａ）正確なビット認識位置
（Ｂ）受信データ例（ローからハイへの変化位置が異なる複数の例（Ｂ１）〜（Ｂ９））
（Ｃ）（Ｂ１）〜（Ｂ９）の各信号変化位置対応の許容誤差
【００６５】
図６（Ｂ）には、ローからハイに変化する位置がビット０〜ストップビットの９パターンを示している。受信側がこれらのデータを受信して、各ビットの値を判別する場合、信号変化部分（ローからハイまたはハイからロー）の位置を基準として判定する。従って、図６（Ｂ）に示すグレー部分に信号変化位置が認識できれば、その前後のビット値を正確に判別できる。
【００６６】
例えば、最上段にある（Ｂ１）１ビット目で変化する場合、すなわちスタートビット（ロー）からデータビットの第１ビット（ビット０）でハイに遷移する信号の場合、受信側は、図に示すグレー部分でローからハイに遷移していることが認識できれば、
スタートビット＝ロー
第１ビット（ビット０）＝ハイ
このような正しいデータビットの識別が可能となる。
【００６７】
（Ｂ１）の例の場合、データ送信側とデータ受信側との通信速度認識の差異、例えば許容される利用クロックの差異は、図６の右端に記載のように、図に示す（ロー間隔（Ｌ１）と、許容誤差（Ｌ２）の比率として示される。（Ｂ１）の例の場合、５０％となる。
【００６８】
これは、先に図５を参照して説明した例の倍の許容誤差である。これは、図６の下部に記載の理由による。すなわち、受信側での判断は信号変化（ハイ／ロー）に基づく識別となる。送信データの見地からは、図５に示すビットの中心部５０％を正確なビット値の必須領域とするが、受信データの見地からは、前後に許容領域が設定されるため、許容誤差が倍になる。
【００６９】
しかし、受信データから求められる許容誤差もデータ後半において小さくなる。すなわち、クロックの誤差は、カウントが増加すればそれだけ蓄積されることになる。（Ｂ２）の例は、２ビット目で変化する場合、すなわちデータビットの第１ビット（ビット０）がローで、データビットの第２ビット（ビット２）においてハイに遷移する信号の場合、受信側は、図に示すグレー部分でローからハイに遷移していることが認識できれば、
第１ビット（ビット０）＝ロー
第２ビット（ビット１）＝ハイ
このような正しいデータビットの識別が可能となる。
【００７０】
（Ｂ２）の例の場合、データ送信側とデータ受信側との通信速度認識の差異、例えば許容される利用クロックの差異は、図６の右端に記載のように、３３％となる。
【００７１】
さらに、最下段に記載の（Ｂ９）の例は、データビットの第８ビット（ビット７）がローで、ストップビットにおいてハイに遷移する信号の場合を示している。（Ｂ９）の例の場合、データ送信側とデータ受信側との通信速度認識の差異、例えば許容される利用クロックの差異は、図６の右端に記載のように１０％となる。
【００７２】
図６に示すように、受信データから算出されるデータ送受信双方の通信速度認識の許容誤差は以下の通りとなる。
（Ｂ１）データビットの１ビット（ビット０）でビット値変化＝５０％
（Ｂ２）データビットの２ビット（ビット１）でビット値変化＝３３％
（Ｂ３）データビットの３ビット（ビット２）でビット値変化＝２５％
（Ｂ４）データビットの４ビット（ビット３）でビット値変化＝２６％
（Ｂ５）データビットの５ビット（ビット４）でビット値変化＝１６％
（Ｂ６）データビットの６ビット（ビット５）でビット値変化＝１４％
（Ｂ７）データビットの７ビット（ビット６）でビット値変化＝１２％
（Ｂ８）データビットの８ビット（ビット７）でビット値変化＝１１％
（Ｂ９）ストップビットでビット値変化＝１０％
このようにデータ後半に進むに従って許容誤差は小さくなる。
【００７３】
以上、説明したように、データ送信側とデータ受信側との間の通信速度認識の差、例えば利用クロックの差に対応する許容誤差は以下のような傾向がある。
すなわち、１つのワード（スタートビット／データビット／ストップビット）の前半の信号変化（ビット値変化）に対する許容誤差は大きいが、後半の信号変化（ビット値変化）に対する許容誤差は小さくなる。これはスタートビットをクロック計測の開始点としており、ワード後半に進むに従って誤差が蓄積されることに基づくものである。
【００７４】
（３）本発明のデータ通信装置における通信速度調整処理について
本発明のデータ通信装置は、このような許容誤差の変化を考慮した処理を行うことで、通信データの正確な送受信を実現するものである。図７以下を参照して、本発明のデータ通信装置の実行する処理について説明する。
【００７５】
図７には、スタートビット（１ビット）、データビット（８ビット）、ストップビット（１ビット）のデータの送受信例として以下のデータを示している。
（Ａ）正確なビット認識位置
（Ｂ）受信データ例（ローからハイへの変化位置が異なる複数の例（Ｂ１）〜（Ｂ９））
（Ｃ）（Ｂ１）〜（Ｂ９）の各信号変化位置対応の許容誤差
（Ｄ）（Ｂ１）〜（Ｂ９）の各信号変化位置が発生する確率
（Ｅ）各（Ｂｎ）における（Ｂ１）〜（Ｂｎ）の累計発生確率
【００７６】
（Ａ）〜（Ｃ）は図６を参照して説明したデータと同じデータである。すなわち、図７（Ｂ）には、ローからハイに変化する位置が、ビット０〜ストップビットの９パターン示している。受信側がこれらのデータを受信して、各ビットの値を判別する場合、信号変化部分（ローからハイまたはハイからロー）の位置を基準として判定する。従って、図６（Ｂ）に示すグレー部分に信号変化位置が認識できれば、その前後のビット値を正確に判別できる。
【００７７】
先に、図６を参照して説明したように、受信データから算出されるデータ送受信双方の通信速度認識の許容誤差は、図７（Ｃ）に示すデータであり、以下の通りとなる。
（Ｂ１）データビットの１ビット（ビット０）でビット値変化＝５０％
（Ｂ２）データビットの２ビット（ビット１）でビット値変化＝３３％
（Ｂ３）データビットの３ビット（ビット２）でビット値変化＝２５％
（Ｂ４）データビットの４ビット（ビット３）でビット値変化＝２６％
（Ｂ５）データビットの５ビット（ビット４）でビット値変化＝１６％
（Ｂ６）データビットの６ビット（ビット５）でビット値変化＝１４％
（Ｂ７）データビットの７ビット（ビット６）でビット値変化＝１２％
（Ｂ８）データビットの８ビット（ビット７）でビット値変化＝１１％
（Ｂ９）ストップビットでビット値変化＝１０％
【００７８】
図７（Ｄ）は、（Ｂ１）〜（Ｂ９）の各信号変化位置が発生する確率を示している。
例えば、データビットの最初のビット（ビット０）がローであるかハイであるかの確率は１／２である。従って、（Ｂ１）に示す信号変化、すなわち、データビットの最初のビット（ビット０）位置でローからハイになる確立は１／２＝５０％である。
【００７９】
また、（Ｂ２）に示すように、データビットの最初のビット（ビット０）がローであり、第２ビット（ビット１）がハイとなる確立は、（１／２）×（１／２）＝２５％となる。このように、図７（Ｄ）には、（Ｂ１）〜（Ｂ９）の信号変化の発生する確率を示している。
【００８０】
図７（Ｅ）は、各（Ｂｎ）における（Ｂ１）〜（Ｂｎ）の累計発生確率を示している。
（Ｂ１）の累計発生確率は５０％となる。
（Ｂ２）の累計発生確率は、（Ｂ１）に対応する（Ｃ）の値５０％と、（Ｂ２）の（Ｃ）の値２５％を加算して７５％となる。
（Ｂ３）の累計発生確率は、（Ｂ１）に対応する（Ｃ）の値５０％と、（Ｂ２）の（Ｃ）の値２５％と、（Ｂ３）の（Ｃ）の値１２．５％とを加算して８７．５％となる。
このようにして算出した累計発生確率を（Ｅ）に示している。
【００８１】
（Ｂ１）〜（Ｂ９）の各信号変化パターンにおける（Ｃ）許容誤差、（Ｄ）発生確率、（Ｅ）累計発生確率は、以下の通りである。
（Ｂ１）Ｃ＝５０％、Ｄ＝５０．０％、Ｅ＝５０．０％
（Ｂ２）Ｃ＝３３％、Ｄ＝２５．０％、Ｅ＝７５．０％
（Ｂ３）Ｃ＝２５％、Ｄ＝１２．５％、Ｅ＝８７．５％
（Ｂ４）Ｃ＝２０％、Ｄ＝  ６．２％、Ｅ＝９３．７％
（Ｂ５）Ｃ＝１６％、Ｄ＝  ３．１％、Ｅ＝９６．８％
（Ｂ６）Ｃ＝１４％、Ｄ＝  １．５％、Ｅ＝９８．４％
（Ｂ７）Ｃ＝１２％、Ｄ＝  ０．７％、Ｅ＝９９．２％
（Ｂ８）Ｃ＝１１％、Ｄ＝  ０．３％、Ｅ＝９９．６％
（Ｂ９）Ｃ＝１０％、Ｄ＝  ０．１％、Ｅ＝９９．８％
【００８２】
このデータから理解されるように、例えば（Ｂ１）〜（Ｂ４）のいずれかの信号パターン、すなわち、データビットの第１〜第４番目のビットにおいてローからハイになる信号パターンの発生確率は９３，７％となる。
しかも、この（Ｂ４）における許容誤差は２０％と比較的大きな許容誤差が認められる。
【００８３】
本発明のデータ通信装置は、受信データに対するビット幅算出処理に際して、ワード（スタートビット／データビット／ストップビット）における許容誤差の大きなデータ領域、例えば（Ｂ１）〜（Ｂ４）の４つの信号パターンに基づいてビット幅算出を実行する。
【００８４】
これら（Ｂ１）〜（Ｂ４）は、比較的、許容誤差が大きく、データ送受信の双方で通信速度の認識やクロック誤差が、ある程度大きくても正確なビット値判別が可能となる。本発明のデータ通信装置では、これら（Ｂ１）〜（Ｂ４）に対応する信号変化がある場合は、（Ｂ１）〜（Ｂ４）に対応する信号変化位置に基づいて暫定ビット幅を算出する。
【００８５】
その後、１ワード内に発生する最終的な信号変化位置までの最終計測時間と、上記の暫定ビット幅を適用して、最終的な信号変化位置までのビット数（確定ビット数）を下式に従って算出する。
確定ビット数＝（最終計測時間）／（暫定ビット幅）
さらに、上記の確定ビット数と、最終計測時間を適用して以下の式に従って１ビット幅を算出する。
１ビット幅＝（最終計測時間）／（確定ビット数）
このような処理によって受信データの１ビット幅の算出を実行する。
【００８６】
さらに、その後の受信データの解析には、解析したビット幅に対応する通信速度での処理を実行し、また送信データの生成に際しても、解析したビット幅に対応するビット幅を設定した送信データを生成する。すなわち、データ通信相手に合わせた通信速度の調整を行う。
【００８７】
（４）本発明のデータ通信装置の構成および処理の概要
図８は、本発明の一実施例に係るデータ通信装置２００の構成を示す図である。図８に示すデータ通信装置２００は、図３に示す通信部Ａ１１０、または通信部Ｂ１２０の構成例に対応する。データ通信装置２００は以下に説明する通信速度切り替え機能を有している。
【００８８】
データ通信装置２００は、図８に示すように、通信実行部２１０、割り込み処理部２２０、タイマ２３０、制御部（ＣＰＵ）２４０、ＣＰＵバス２５０を有する。
【００８９】
通信実行部２１０は、出力部２１１、入力部２１２、通信速度設定部２１３を有する。出力部２１１は、シリアル通信データを通信相手（本例では通信部（ホスト））に出力し、入力部２１２は通信相手からのシリアル通信データを入力する。なお、通信データは、先に説明したスタートビット、データビット、ストップビットによって構成されるワードデータである。フレーム単位で出力または入力する。通信速度設定部２１３は、通信相手の通信速度に一致する通信速度の設定を行う。なお、通信実行部２１０は、例えばＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ  Ｔｒａｎｓｍｉｔｔｅｒ）等のシリアルインタフェースによって構成される。なお、ＰＩＯを利用した構成とすることも可能である。
【００９０】
割り込み処理部２２０は、通信相手からの送信データを入力し、ビット値（Ｈｉｇｈ／Ｌｏｗ）が変化する部分を検出するビット変化検出部２２１を有する。
タイマ２３０は、制御部２４０の指示により時間計測を行う時間計測部２３１を有する。ワード内の信号変化であるビット変化によって規定されるパルス期間を計測する。
【００９１】
制御部２４０は、プログラム実行部としてのＣＰＵを有し、図示しないメモリに格納されたプログラムに従った処理を行い、通信実行部２１０、割り込み制御部２２０、タイマ２３０の処理制御を実行する。なお、制御部２４０は、通信速度算出部２４１を有し、通信相手からの入力データの通信速度の算出処理を実行する。
ＣＰＵバス２５０は、通信実行部２１０、割り込み制御部２２０、タイマ２３０、制御部２５０間のデータやコマンド転送に利用されるバスである。
【００９２】
図に示す記号Ａ〜Ｎは、各構成部間で入出力されるデータやコマンドなどの信号である。以下、信号Ａ〜Ｎの意味について示す。
【００９３】
信号Ａは、シリアル出力データを示す信号であり、制御部２４０が生成し、通信実行部２１０に入力され、出力部２１１を介して外部に出力される。
信号Ｂは、シリアル入力データを示す信号であり、外部の通信相手から入力するシリアル通信データであり、入力部２１２を介して制御部２４０に入力される。
【００９４】
信号Ｃは、制御部２４０の通信速度算出部２４１の算出した通信速度、すなわち、通信相手から入力するシリアル通信データの解析によって算出した通信相手が適用している通信速度情報である。この通信速度情報が、通信実行部２１０の通信速度設定部２１３に提供される。通信速度設定部２１３は、制御部２４０から入力する通信速度に一致する通信速度でシリアル通信データの出力を行い、入力する通信データの処理を行うように通信実行部２１０を設定する。
【００９５】
信号Ｄは、制御部２４０から設定された通信速度の基準となる制御信号であり、出力部２１１、入力部２１２に提供される。出力部２１１はこの制御信号に従って出力するシリアル通信データのパルス幅の決定を行う。入力部２１２は、この制御信号に従って、通信相手から入力する通信データの解析を行う。例えばスタートビット、データビット、ストップビットなどの識別を行う。
【００９６】
信号Ｅは、シリアル通信の送信信号である。
信号Ｆは、シリアル通信の受信信号である。
これら信号Ｅ，Ｆは、先に説明したスタートビット、データビット、ストップビットによって構成されるワードを含む通信データである。さらに、１つ以上のワードからなるフレームが設定された通信データである場合もある。
【００９７】
信号Ｇは、制御部２４０がプログラムに従って設定する信号であり、割り込み処理部２２０のビット変化検出部２２１において検出すべき信号変化の態様を決定する信号である。具体的には、ビット変化がローからハイになる立ち上がり部を検出するか、ビット変化がハイからローになる立ち下がり部を検出するかを設定する信号である。なお、この制御信号を利用した具体的な処理シーケンスについては後述する。
【００９８】
信号Ｈは、シリアル通信の割り込み処理部２２０のビット変化検出部２２１においてビット変化部が検出された場合に、制御部２４０に対して出力する割り込み信号である。この割り込み信号が制御部２４０に入力に応じて、制御部２４０はタイマ２３０におけるパルス期間の時間計測の開始または終了させる制御などを行う。
【００９９】
信号Ｉは、通信相手からのシリアル通信の受信信号である。割り込み処理部２２０のビット変化検出部２２１は、通信相手からのシリアル通信データを入力して、ビット変化がローからハイになる立ち上がり部、またはビット変化がハイからローになる立ち下がり部を検出する処理を行う。
【０１００】
信号Ｊは、制御部２４０からタイマ２３０の時間計測部２３１に入力される信号であり、時間計測の開始または終了を指示する制御信号である。
信号Ｋは、タイマ２３０の時間計測部２３１の計測した時間の読み出しデータである。制御部２４０の指示に応じて読み出される。
【０１０１】
信号Ｌは、割り込み処理部２２０の出力する信号Ｈ（割り込み信号）と、タイマ２３０の出力する信号Ｋ（時間計測部２３１の計測した時間）に対応する制御部２４０に対する入力信号である。制御部２４０の通信速度算出部２４１は、これらの入力情報を利用して、通信相手から入力するシリアル通信データの通信速度の算出を行う。
【０１０２】
信号Ｍは、制御部の出力信号であり、以下の信号（Ｍ１）〜（Ｍ３）が含まれる。
（Ｍ１）制御部２４０の通信速度算出部２４１の算出した通信速度情報（通信実行部２１０に対する入力信号Ｃに相当する）
（Ｍ２）制御部２４０がプログラムに従って設定した信号であり、割り込み処理部２２０のビット変化検出部２２１において検出すべき信号変化の態様（ハイからローまたはローからハイ）を決定する信号（割り込み処理部２２０に対する入力信号Ｇに相当する）
（Ｍ３）制御部２４０からタイマ２３０の時間計測部２３１に出力される信号であり、時間計測の開始または終了を指示する制御信号（タイマ２３０に対する入力信号Ｊに相当する）
なお、各構成部間の信号はＣＰＵバス２５０を介して転送される。
【０１０３】
（５）本発明のデータ通信装置の実行する処理シーケンス
次に、図９〜図１２に示すフローチャートを参照してデータ通信装置２００の実行する処理シーケンスについて説明する。なお、図９〜図１２の各フローチャートは以下の処理に対応する。
図９＝全体処理を説明するフローチャート、
図１０＝図９に示すステップＳ１０１の初期設定処理の詳細処理を説明するフローチャート、
図１１＝図９に示すステップＳ１０３の処理の一部の処理として実行されるビット変化検出部の処理の詳細を説明するフローチャート、
図１２＝図９に示すステップＳ１０３の処理の一部の処理として実行されるビット幅算出処理および通信速度の調整処理の詳細を説明するフローチャート、
【０１０４】
なお、図９〜図１２の各処理は制御部２４０の制御の下で行われる。具体的には、制御部２４０のメモリに格納されたプログラムに従って各種の制御コマンドが各処理部、すなわち通信実行部２１０、割込み処理部２２０、タイマ２３０に対して制御部２４０から出力されて各処理部の制御が行われる。
【０１０５】
まず、図９に示す全体処理を説明するフローチャートについて説明する。ステップＳ１０１は初期設定である。この初期設定については後段で図１０を参照して説明する。ステップＳ１０１の初期設定の完了後、通信処理を開始する。なお、この通信処理は、先に説明した調歩同期方式に従った通信処理であり、スタートビット、データビット、ストップビットの構成からなるワード単位の通信データの送受信処理として実行される。
【０１０６】
ステップＳ１０２においては、１ワード単位の通信処理が完了したか否かを判定する。処理が完了した場合は、ステップＳ１０３に進む。ステップＳ１０３では、ビット幅算出処理と、算出したビット幅に基づく通信速度の調整処理を行う。この処理の詳細については後段において、図１１、図１２に示すフローチャートを参照して説明する。なお、本発明のデータ通信装置の制御部は、スタートビットとデータビットおよびストップビットを含むワード単位で通信速度判定処理を行う。
【０１０７】
ステップＳ１０３の処理が終了すると、ステップＳ１０４に進み通信処理を継続中か否かを判定し、継続中であれば、ステップＳ１０１に戻りステップＳ１０１以下を繰り返す。通信処理が終了した場合は処理を終了する。
【０１０８】
次に、ステップＳ１０２の初期設定処理の詳細について、図１０に示すフローチャートを参照して説明する。まず、ステップＳ２０１において、通信処理が処理中であることを示す設定を行う。これは例えば制御部２４０内のメモリにモード設定情報として通信中であることを示すフラグを設定することによって行われる。この初期設定の実行タイミングは例えば通信相手からワード単位のデータを受信し、スタートビットの検出を行った際に行われる。
【０１０９】
ステップＳ２０２とステップＳ２０３の処理は、割り込み処理部２２０の初期設定ステップである。割込み処理部２３０のビット変化検出部２３１において検出されたビット変化、すなわち、立ち下がり（ハイからロー）あるいは立ち上がり（ハイからロー）の検出回数をクリアする。なお、この検出回数は割込み処理部２３０や制御部２４０のアクセス可能なメモリに記録されるデータである。
【０１１０】
ステップＳ２０３では、割込み処理部２３０のビット変化検出部２３の設定ステップであり、ビット変化検出部２３の検出対象を立ち下がり検出、すなわちハイからローの信号線変化を検出する設定とする。さらに、割込み許可状態に設定する。
【０１１１】
ステップＳ２０４、ステップＳ２０５はタイマ２３０の初期設定ステップである。まずステップＳ２０４においてタイマ２３０の時間計測部２３１をすべてクリアする。ステップＳ２０４では、時間計測継続期間の上限の設定処理である。本実施例に係るデータ通信装置は１ワード単位で処理を実行する。すなわち、１ワード単位でビット幅の検出と、通信速度の算出を行う。従って、タイマ２３０の時間計測部２３１の計測する時間の上限は、１ワードの時間を基準として設定される。
【０１１２】
具体的には、初期的に設定された通信速度、例えば８１９２ｂｐｓの通信速度で設定される１ワード（スタートビット／データビット／ストップビット）の時間、例えばスタートビット＝１ビット、データビット＝８ビット、ストップビット＝１ビットの計１０ビット幅に対応する時間を基準時間として、時間計測の最大値を基準時間の２０％増しとして設定する。タイマ２３０の時間計測部２３１の計測する時間がこの最大値を超えた場合は、時間計測を停止し計測時間のリセットを行うように初期設定を行う。なお、これは一例であり、その他の設定構成としてもよい。
【０１１３】
次に、図１１、図１２に示すフローチャートを参照して図９に示すステップＳ１０３の処理、すなわち、ビット幅算出処理と、算出したビット幅に基づく通信速度の調整処理の詳細について説明する。
【０１１４】
まず、図１１に示すフローチャートを参照して、図９に示すステップＳ１０３の処理の一部の処理として実行される割込み処理部２２０のビット変化検出部２２１の処理を中心とした処理の詳細について説明する。なお、先に説明したように、ビット変化検出部２２１では、通信実行部２１０の通信処理によって通信相手から受信する通信データを解析し、受信信号の変化、例えば信号の立ち下がり（ハイからロー）や信号の立ち上がり（ローからハイ）を検出し検出情報を制御部２４０に提供する。制御部２４０はこの検出情報をトリガとしてタイマ２３０の時間計測部２３１に対する時間計測の開始や停止を命令する。
【０１１５】
図１１のフローの各ステップの処理について説明する。
ステップＳ３０１において、割込み処理部２２０のビット変化検出部２２１の検出した検出回数を確認する。なお、この図１１に示すフローに従った処理は、割込み処理部２２０のビット変化検出部２２１において、受信信号（ワード）における信号変化（ハイからローまたはローからハイ）が検出された場合に実行される処理である。
【０１１６】
ステップＳ３０１において確認する回数は受信データの１ワードに対する信号変化の検出回数であり、初期設定後に発生した信号変化の検出回数である。０回である場合は、初期設定段階であることを示す。すなわち、受信ワードのスタートビットの立ち下がり（ハイからロー）の検出時点である。この場合は、ステップＳ３０２に進む。
【０１１７】
ステップＳ３０２では、タイマ２３０の時間計測部２３１に時間計測を開始させる。すなわち、受信ワードのスタートビットの立ち下がり（ハイからロー）からの時間計測である。
【０１１８】
次にステップＳ３０４に進む。ステップＳ３０４では、割込み処理部２２０のビット変化検出部２２１の設定を変更する。例えば、現在の設定が、立ち上がり検出に設定されている場合は、立ち上がり検出から立ち下がり検出に変更する。また、現在が立ち下がり検出に設定されている場合は、立ち下がり検出から立ち上がり検出に変更する。ステップＳ３０２からステップＳ３０４に進む場合は、現設定が立ち下がり検出であるので、立ち下がり検出から立ち上がり検出に変更する。これにより、割込み処理部２２０のビット変化検出部２２１は次に受信ワードの立ち上がり（ローからハイ）を検出することになる。
【０１１９】
その後、ステップＳ３０５において、割込み処理部２２０のビット変化検出部２２１の信号変化の検出回数を（＋１）とする。この検出回数は、割込み処理部２２０および制御部２４０のアクセス可能なメモリに記録される。この処理によって、ワード受信時のスタートビットの信号変化（ハイからロー）の検出が行われた場合、割込み処理部２２０のビット変化検出部２２１の信号変化の検出回数は［１］としてメモリに記録されることになる。
【０１２０】
一方、ステップＳ３０１において、割込み処理部２２０のビット変化検出部２２１の検出した検出回数が０回以外である場合は、ステップＳ３０３に進む。この場合は、受信ワードのスタートビットの立ち下がり（ハイからロー）の検出時点の処理ではなく、ワードの途中段階での処理である。なお、ワードの途中である場合は、タイマ２３０の時間計測部２３１において計測が実行されている。具体的には、受信ワードのスタートビットの立ち下がり（ハイからロー）の検出時点からのロー期間の時間計測、あるいは、その後の立ち上がり（ローからハイ）の検出時点からのハイ期間の時間計測などが行われている。
【０１２１】
なお、タイマ２３０の時間計測部２３１における時間計測は、ワードのロー期間、ハイ期間それぞれにおいて実行されることになる。
【０１２２】
ステップＳ３０１において、割込み処理部２２０のビット変化検出部２２１の検出した検出回数が０回以外である場合は、ステップＳ３０３に進む。ステップＳ３０３では、タイマ２３０の時間計測部２３１において計測された時間の読み込みとメモリに対する格納を行う。この計測時間は、１ワード内に発生するロー期間、あるいはハイ期間に対応する。計測時間を格納するメモリは、割込み処理部２２０、制御部２４０のアクセス可能なメモリである。
【０１２３】
その後、ステップＳ３０４に進む。ステップＳ３０４では、割込み処理部２２０のビット変化検出部２２１の設定を変更する。前述したように、現在の設定が立ち上がり検出に設定されている場合は、立ち上がり検出から立ち下がり検出に変更する。また、現在が立ち下がり検出に設定されている場合は、立ち下がり検出から立ち上がり検出に変更する。
【０１２４】
その後、ステップＳ３０５において、割込み処理部２２０のビット変化検出部２２１の信号変化の検出回数を（＋１）とする更新処理を行う。この検出回数は、割込み処理部２２０および制御部２４０のアクセス可能なメモリに記録される。
【０１２５】
このように、割込み処理部２２０のビット変化検出部２２１は、通信相手から受信する１ワードにおいて発生する信号変化（ローからハイまたはハイからロー）を検出し、タイマ２３０の時間計測部２３１において、ロー期間、ハイ期間が計測され、この計測結果がメモリに格納されることになる。
【０１２６】
次に、図１２に示すフローチャートを参照して、図９に示すステップＳ１０３の処理、すなわち、ビット幅算出処理と、算出したビット幅に基づく通信速度の調整処理の詳細について説明する。
【０１２７】
この処理は、１つのワードの受信処理が行われ、タイマ２３０の時間計測部２３１において受信ワードに含まれるロー期間やハイ期間が計測された後に実行される。ステップＳ４０１において、ワードに対する１回目のタイマ計測時間Ｔｘについて判定を行う。ワードに対する１回目のタイマ計測時間Ｔｘは、ワードの先頭のスタートビットの立ち下がり（ハイからロー）からのロー期間の時間に対応する。
【０１２８】
ステップＳ４０１では、ワードに対する１回目のタイマ計測時間Ｔｘが下記（ａ）〜（ｄ）のいずれかに対応するか否かが判定される。
（ａ）Ｔｘ＝（基準ビット幅×１）±（基準ビット幅の５０％）
（ｂ）Ｔｘ＝（基準ビット幅×２）±（基準ビット幅の５０％）
（ｃ）Ｔｘ＝（基準ビット幅×３）±（基準ビット幅の５０％）
（ｄ）Ｔｘ＝（基準ビット幅×４）±（基準ビット幅の５０％）
なお、タイマ計測時間Ｔｘは、ビット変化検出部の検出するビット変化位置によって規定されるワード内のスタートビット開始位置から継続するローパルス期間に対応する。
【０１２９】
上記式において、基準ビット幅とは初期的に設定された通信速度、例えば８１９２ｂｐｓの通信速度で設定される１ワード（スタートビット／データビット／ストップビット）の時間をビット数、例えばスタートビット＝１ビット、データビット＝８ビット、ストップビット＝１ビットの計１０ビットで除算した値に設定される。基準となる１ビットの幅（時間）である。
【０１３０】
基準ビット幅の５０％は、許容される誤差範囲である。上記の（ａ）〜（ｄ）は、図６、図７を参照して説明した（Ｂ１）〜（Ｂ４）の各パターンに対応する。すなわち、スタートビットにおける信号変化（ハイからロー）の後の初めての信号変化（ローからハイ）が発生する位置が、
（ａ）データビットの第１ビット（ビット０）（＝図６、図７の（Ｂ１））
（ｂ）データビットの第２ビット（ビット１）（＝図６、図７の（Ｂ２））
（ｃ）データビットの第３ビット（ビット２）（＝図６、図７の（Ｂ３））
（ｄ）データビットの第４ビット（ビット３）（＝図６、図７の（Ｂ４））
これらいずれかのパターンである。
【０１３１】
これらのいずれかのパターンである場合は、ステップＳ４０２〜Ｓ４０５に進む。上記（ａ）〜（ｄ）のいずれのパターンにも該当しない場合は、ステップＳ４２０に進む。上記（ａ）〜（ｄ）のいずれのパターンにも該当しない場合は、ステップＳ４２０において、調整不可と判定し、ビット幅の算出や通信速度の算出、調整処理は行うことなく処理を終了する。
【０１３２】
このように、本発明のデータ通信装置の制御部は、スタートビットとデータビットおよびストップビットを含むワード単位で通信速度判定処理を行う構成であり、タイマによって計測されるスタートビットの開始位置以後の次のビット変化位置がワード前半部に存在する場合、スタートビットから次のビット変化位置までのタイマ計測時間と予め設定した基準ビット幅を適用して暫定ビット幅を算出し、算出した暫定ビット幅を適用して通信速度の算出処理を行う構成である。
【０１３３】
すなわちワードの前半部（データビットの第１〜第４ビット）で信号変化（ローからハイ）が発生した場合は、これらのロー期間計測時間を利用してビット幅の検出と通信速度の算出、調整処理を実行する。しかし、ワードの後半部（データビットの第５ビット以降）で信号変化（ローからハイ）が発生した場合は、これらのロー期間計測時間を利用したビット幅の検出や通信速度の算出、調整処理は実行しない。
【０１３４】
これは、先に図６、図７等を参照して説明したように、ワード後半においては許容誤差が小さくなり、正確なビット値検出が困難になるためであり、許容誤差が比較的大きいワード前半においてタイマ計測時間を利用してビット幅の算出を行うことで確実なビット幅算出を行うためである。なお、図６、図７を参照して説明したように、データビット１〜４においてローからハイになる確率は９０％以上あり、ほとんどの受信ワードにおいてステップＳ４０２〜Ｓ４０５のいずれかの処理によるビット幅算出が可能となる。
【０１３５】
なお、図１２のフローに示す実施例では図６、図７を参照して説明した（Ｂ１）〜（Ｂ４）の各パターンに対応する場合にのみビット幅の算出を行う設定としているが、これは一例であり、図６、図７を参照して説明した（Ｂ１）のみ、あるいは（Ｂ１）〜（Ｂ２）に対してのみ処理対象とするような様々な設定が可能である。
【０１３６】
図１２に示すステップＳ４２０〜Ｓ４０５の処理について説明する。
ステップＳ４０１において、ワードに対する１回目のタイマ計測時間Ｔｘが、
（ａ）Ｔｘ＝（基準ビット幅×１）±（基準ビット幅の５０％）
この条件に該当する場合は、ステップＳ４０２に進む。
【０１３７】
これは、データビットの第１ビット（ビット０）においてローからハイへの信号変化が発生した場合に相当する。図６、図７の（Ｂ１）に対応するパターンである。この場合は、ステップＳ４０２において暫定ビット数＝１とする。これは、タイマ２３０の時間計測部２３１において計測されたロー期間の時間が１ビット幅に相当するとの判定処理である。すなわち、ワードの開始ポイントであるスタートビットの信号変化位置（ハイからロー）から次の信号変化位置（ローからハイ）のロー期間が１ビット幅であるとの認識に基づく処理である。
【０１３８】
ステップＳ４０１において、ワードに対する１回目のタイマ計測時間Ｔｘが、
（ｂ）Ｔｘ＝（基準ビット幅×２）±（基準ビット幅の５０％）
この条件に該当する場合は、ステップＳ４０３に進む。
【０１３９】
これは、データビットの第２ビット（ビット１）においてローからハイへの信号変化が発生した場合に相当する。図６、図７の（Ｂ２）に対応するパターンである。この場合は、ステップＳ４０３において暫定ビット数＝２とする。これは、タイマ２３０の時間計測部２３１において計測されたロー期間の時間が２ビット幅に相当するとの判定処理である。すなわち、ワードの開始ポイントであるスタートビットの信号変化位置（ハイからロー）から次の信号変化位置（ローからハイ）のロー期間が２ビット幅であるとの認識に基づく処理である。
【０１４０】
ステップＳ４０１において、ワードに対する１回目のタイマ計測時間Ｔｘが、
（ｃ）Ｔｘ＝（基準ビット幅×３）±（基準ビット幅の５０％）
この条件に該当する場合は、ステップＳ４０４に進む。
【０１４１】
これは、データビットの第３ビット（ビット２）においてローからハイへの信号変化が発生した場合に相当する。図６、図７の（Ｂ３）に対応するパターンである。この場合は、ステップＳ４０４において暫定ビット数＝３とする。これは、タイマ２３０の時間計測部２３１において計測されたロー期間の時間が３ビット幅に相当するとの判定処理である。すなわち、ワードの開始ポイントであるスタートビットの信号変化位置（ハイからロー）から次の信号変化位置（ローからハイ）のロー期間が３ビット幅であるとの認識に基づく処理である。
【０１４２】
ステップＳ４０１において、ワードに対する１回目のタイマ計測時間Ｔｘが、
（ｂ）Ｔｘ＝（基準ビット幅×４）±（基準ビット幅の５０％）
この条件に該当する場合は、ステップＳ４０５に進む。
【０１４３】
これは、データビットの第４ビット（ビット３）においてローからハイへの信号変化が発生した場合に相当する。図６、図７の（Ｂ４）に対応するパターンである。この場合は、ステップＳ４０５において暫定ビット数＝４とする。これは、タイマ２３０の時間計測部２３１において計測されたロー期間の時間が４ビット幅に相当するとの判定処理である。すなわち、ワードの開始ポイントであるスタートビットの信号変化位置（ハイからロー）から次の信号変化位置（ローからハイ）のロー期間が４ビット幅であるとの認識に基づく処理である。
【０１４４】
ステップＳ４０２〜Ｓ４０５いずれかの処理が行われると、次にステップＳ４０６に進む。ステップＳ４０６では、暫定ビット幅を算出する。暫定ビット幅は以下の式に従って算出される。
暫定ビット幅＝（タイマ計測時間）／（暫定ビット数）
タイマ計測時間とは、ワードの開始ポイントであるスタートビットの信号変化位置（ハイからロー）から次の信号変化位置（ローからハイ）のロー期間に対応する時間である。暫定ビット数は、ステップＳ４０２〜Ｓ４０５の処理において算出したビット数：１〜４のいずれかである。
【０１４５】
ステップＳ４０６では、
暫定ビット幅＝（タイマ計測時間）／（暫定ビット数）
上記式に従って暫定ビット幅を算出する。
次に、ステップＳ４０７に進む。ステップＳ４０７では、割り込み処理部２２０のビット変化検出部２２１におけるビット変化、すなわち受信信号のハイからローまたはローからハイへの変化検出回数を確認する。１回である場合は、ワードの開始ポイントであるスタートビットの信号変化位置（ハイからロー）から次の信号変化位置（ローからハイ）のロー期間に対応する時間を計測したのみである。この場合は、ステップＳ４１０に進む。
【０１４６】
ステップＳ４１０では、ステップＳ４０６において算出した暫定ビット幅を最終的なビット幅とする。すなわち、
ビット幅＝暫定ビット幅
上記式に従って通信データに対応するビット幅を決定する。
【０１４７】
一方、ステップＳ４０７において、割り込み処理部２２０のビット変化検出部２２１におけるビット変化、すなわち受信信号のハイからローまたはローからハイへの変化検出回数が１回以外である場合は、ステップＳ４０８に進む。
【０１４８】
この場合は、ワードの開始ポイントであるスタートビットの信号変化位置（ハイからロー）から次の信号変化位置（ローからハイ）のロー期間に対応する時間を計測したものではなく、その後のハイ期間、またはロー期間の計測が行われた場合である。この場合は、ステップＳ４０８に進む。
【０１４９】
ステップＳ４０８では、確定ビット数を算出する。確定ビット数は以下の式に従って算出する。
確定ビット数＝（最終計測時間）／（暫定ビット幅）
最終計測時間とは、タイマ２３０の時間計測部２３１における時間計測の最終計測時間である。
【０１５０】
タイマ２３０の時間計測部２３１における時間計測例について、図１３を参照して説明する。例えば図１３に示すデータ４０１が解析対象の受信ワードであるとする。図１３に示すデータは、
スタートビット＝０（ロー）
データビット＝０１１１００１０
ストップビット＝１（ハイ）
このようなワード構成である。
【０１５１】
このようなワードに対して、タイマ２３０の時間計測部２３１におけるパルス期間の時間計測は以下のように行われる。
１回目：スタートビットのビット変化（ハイからロー）〜データビット（ビット１）のビット変化（ローからハイ）に対応するロー期間、
２回目：データビット（ビット１）のビット変化（ローからハイ）〜データビット（ビット４）のビット変化（ハイからロー）に対応するハイ期間、
３回目：データビット（ビット４）のビット変化（ローからハイ）〜データビット（ビット６）のビット変化（ローからハイ）に対応するロー期間、
４回目：データビット（ビット６）のビット変化（ローからハイ）〜データビット（ビット７）のビット変化（ハイからロー）に対応するハイ期間、
５回目：データビット（ビット７）のビット変化（ローからハイ）〜ストップビットのビット変化（ローからハイ）に対応するロー期間、
これらの５回の時間計測が行われる。
【０１５２】
なお、ストップビットのビット変化（ローからハイ）以後も時間計測が行われるが、先に図１０のフローのステップＳ２０５の処理として説明したように、初期設定された１ワード対応の基準時間の２０％増しの時間が最長計測時間とされており、この最長計測時間において時間計測は終了する。
【０１５３】
この場合の有効最終計測時間は、５回目ビットの計測時間の終了時点となる。すなわち、最終計測時間は、図に示すようにスタートビットの開始位置（ハイからロー）からストップビットのビット変化（ローからハイ）までの時間となる。
【０１５４】
ステップＳ４０８では、以下の式、すなわち、
確定ビット数＝（最終計測時間）／（暫定ビット幅）
上記式に従って、最終計測時間までのビット数を確定ビット数として算出する。
【０１５５】
次に、ステップＳ４０９においてビット幅を算出する。ビット幅の算出は以下の式に従って行う。
ビット幅＝（最終計測時間）／（確定ビット数）
最終計測時間は、ステップＳ４０８の処理において利用した最終計測時間である。確定ビット数は、ステップＳ４０８の処理において算出したビット数である。
【０１５６】
ステップＳ４０９においてビット幅が算出される。なお、ここで算出されるビット幅は１ビット幅に対応する区間の時間値である。
【０１５７】
次に、ステップＳ４１１において、通信速度を算出する。通信速度は例えばボーレートである。ボーレートは１秒あたりのビット数である。すなわちｂｐｓ（ｂｉｔ／ｓｅｃｏｎｄ）を通信速度として算出する。
【０１５８】
なお、ステップＳ４０７において、割り込み処理部２２０のビット変化検出部２２１におけるビット変化、すなわち受信信号のハイからローまたはローからハイへの変化検出回数が１回である場合は、先に説明したように、ステップＳ４１０において、ビット幅＝暫定ビット幅
上記式に従って通信データに対応するビット幅を決定する。
【０１５９】
この場合は、このステップＳ４１０で決定したビット幅を適用してステップＳ４１１において通速度を算出する。この場合は、ワードの開始ポイントであるスタートビットの信号変化位置（ハイからロー）から次の信号変化位置（ローからハイ）のロー期間に対応する時間データのみを利用した処理となる。
【０１６０】
ステップＳ４１２では、ステップＳ４１１で算出した通信速度、例えばボーレートに応じて通信速度の調整処理を行う。具体的には、通信相手からの受信データの解析をステップＳ４１１において算出した通信速度（ボーレート（ｂｐｓ））に従って実行するように設定する。また、データ送信処理においても送信データの生成をテップＳ４１１において算出した通信速度（ボーレート（ｂｐｓ））に従って実行する。これらの制御は制御部２４０から通信実行部２１０の通信速度設定部２１３に対する制御によって行われる。
【０１６１】
このように、本発明のデータ通信装置では、ワードにおいて発生する最初のタイマ計測期間である１回目のタイマ計測期間、すなわちスタートビットから開始されるロー期間がワード前半（データビットの第１〜第４ビット）において収束する場合、このロー期間を計測してこのロー期間に基づいて暫定ビット幅を算出する。すなわち、
暫定ビット幅＝（計測時間）／（暫定ビット数）
上記式に従って暫定ビット幅を算出する。
【０１６２】
さらに、そのワードに２回目以降の有効なタイマ計測期間が発生した場合は、最終の有効計測期間までの計測期間を利用して確定ビット数を算出する。
確定ビット数＝（最終計測時間）／（暫定ビット幅）
上記式に従って確定ビット数を算出する。
【０１６３】
さらに、最終的なビット幅を以下の式に従って算出する。すなわち、
ビット幅＝（最終計測時間）／（確定ビット数）
上記式に従って、最終的なビット幅を算出し、この算出されたビット幅に基づいて通信速度（ボーレート）を算出し、算出した通信速度での受信データの解析、および送信データの生成、出力を行うように通信速度を制御する。
【０１６４】
なお、上記の各算出式に従った処理を実行するのは制御部２４０である。制御部２４０は予め規定されたプログラムに従って各種データの算出処理を行う。
【０１６５】
上記算出式に従ってビット幅や、通信速度を算出して通信速度を調整することにより、通信相手からの通信テータの通信速度に一致した通信速度での受信データの解析とデータ送信処理が可能となり、エラーのないデータ通信が実現される。
【０１６６】
最後に図１４を参照して、データ通信装置２００の構成要素と各処理との対応関係について説明する。
まず、通信実行部２１０は、初期設定された通信速度で通信を開始する。例えば、８１９２ｂｐｓ（ｂｉｔ／ｓｅｃｏｎｄ）の通信速度でデータを送受信する。すなわち、出力部２１１を介して出力するデータを８１９２ｂｐｓに対応したビット幅でスタートビット、データビット、ストップビットから構成されるワードを設定したシリアル通信データとして出力する。また入力部２１２を介して入力するシリアル通信データに対しても８１９２ｂｐｓ通信に対応したビット幅でスタートビット、データビット等を解析し、データを取得する。
【０１６７】
割り込み処理部２２０におけるビット変化検出部２２１は、初期状態では、立ち下がり検出処理を行い、割込許可状態に設定されている。
タイマ２３０における時間計測部２３１は、初期状態では、停止状態とする。
【０１６８】
この初期状態で、シリアル通信データが通信相手から入力される。入力データは、図１４（ａ）に示す入力データ５０１であるとする。時間［ｔ１］の位置において、信号線がハイからローへ変化する。すなわち立ち下がりを示す。
【０１６９】
この入力データは、図１４に示す経路［Ｉ］によって割り込み処理部２２０のビット変化検出部２２１に入力される。ビット変化検出部２２１は、初期状態で立ち下がり検出を行う設定であり、この時間［ｔ１］の立ち下がりが検出される。検出情報は、経路［Ｈ］，［Ｌ］によって制御部２４０の通信速度算出部２４１に入力される。
【０１７０】
制御部２４０の通信速度算出部２４１は、入力データの立ち下がりの検出をトリガとして、経路［Ｍ］，［Ｊ］を経由して、タイマ２３０の時間計測部２３１に時間計測を開始させる。この処理はローパルス幅の計測処理の開始である。さらに、制御部２４０の通信速度算出部２４１は、この時間計測の開始に併せて割り込み処理部２２０のビット変化検出部２２１の設定を立ち上がり検出／割込許可状態に設定変更する。
【０１７１】
次に、図１４（ａ）に示す時間［ｔ２］の位置において、信号線がローからハイへ変化するか否かが検証される。この時間［ｔ２］はデータビットの第１ビット〜第４ビットの期間である。時間［ｔ２］の位置において、信号線がローからハイへ変化した場合は、図１２に示すフローチャートのステップｓ４０２〜Ｓ４０５の処理が行われることになる。
【０１７２】
なお、通信相手からの入力データは、図１４に示す経路［Ｉ］によって割り込み処理部２２０のビット変化検出部２２１に入力される。ビット変化検出部２２１は、この時点で立ち上がり検出を行う設定であり、この時間［ｔ２］の立ち上がりが検出される。検出情報は、経路［Ｈ］，［Ｌ］によって制御部２４０の通信速度算出部２４１に入力される。
【０１７３】
制御部２４０の通信速度算出部２４１は、入力データの立ち上がりの検出をトリガとして、経路［Ｍ］，［Ｊ］を経由して、タイマ２３０の時間計測部２３１に時間計測を一旦、終了させ、再度計測を開始させる。なおここまでの計測時間が、ローパルス幅（ローパルス継続時間）として経路［Ｋ］，［Ｌ］を介して制御部２４０の通信速度算出部２４１に入力される。
【０１７４】
制御部２４０の通信速度算出部２４１は、この時間計測の終了に併せて割り込み処理部２２０のビット変化検出部２２１の設定を立ち下がり検出／割込許可状態に設定変更し、再度計測を開始する。この計測は、ハイパルス区間の計測となる。
【０１７５】
制御部２４０の通信速度算出部２４１は、入力した計測時間［Ｔ１２］を、１回目の計測時間として、この計測時間に応じて、図１２に示すステップｓ４０２〜Ｓ４０５のいずれかの処理を行い、暫定ビット数を算出する。
【０１７６】
さらに、ステップＳ４０６の処理によって、暫定ビット幅を算出する。
暫定ビット幅＝（計測時間）／（暫定ビット数）
上記式に従って暫定ビット幅を算出する。
【０１７７】
その後、図１４（ａ）に示す時間ｔ３の処理に以降する。ここでは、信号のビット変化に応じてハイ期間、ロー期間をそれぞれ計測することになる。なお、最終的に必要な時間は先に図１３を参照して説明した最終計測時間であるので、ハイ期間、ロー期間をそれぞれ個別に時間計測する場合は、これらの加算処理により、最終計測時間を算出する。あるいは各信号変化の発生時間のみをタイマ２３０から制御部２４０に通知して、タイマ２３０の時間計測部２３１における時間計測は継続的に行う設定としてもよい。
【０１７８】
図１４（ａ）に示す時間［ｔ３］の期間に最終の有効計測時間が存在する場合は、スタートビットから終の有効計測時間までの期間を最終計測時間として、制御部２４０の通信速度算出部２４１が、ビット幅と、通信速度を算出する。
【０１７９】
この処理は、図１２のフローのステップＳ４０８〜Ｓ４１２の処理に対応する。すなわち、ステップＳ４０８において、
確定ビット数＝（最終計測時間）／（暫定ビット幅）
上記式に従って確定ビット数を算出する。
【０１８０】
さらに、ステップＳ４０９において、最終的なビット幅を以下の式に従って算出する。すなわち、
ビット幅＝（最終計測時間）／（確定ビット数）
上記式に従って、最終的なビット幅を算出する。
【０１８１】
さらに、ステップＳ４１１において、算出されたビット幅に基づいて通信速度（ボーレート）を算出し、ステップＳ４１２において、算出した通信速度での受信データの解析、および送信データの生成、出力を行うように通信速度を制御する。なお、図１４（ａ）に示す時間ｔ４は、タイマによる時間計測の上限を示している。
【０１８２】
本発明のデータ通信装置を適用することで、例えば以下の効果を奏することができる。通信相手から受信するデータの通信速度がずれていた場合であっても通信速度のズレ量を算出することが可能となり、相手方に通信速度を合わせることで確実なデータ送受信が可能となる。
【０１８３】
また、例えばカメラ本体とバッテリー間の通信構成において、バッテリーの通信部として本発明の通信速度判定処理構成を備えることで、以下のようなメリットがある。例えば通常必要とされる通信速度精度を持たないカメラに装着可能なバッテリーが実現される。また、様々なカメラから異なるズレを持つ通信速度で受信する通信データについて正確な通信速度判定が可能となる。さらに、上述した本発明に従った速度補正処理は、現行のハードウェアの構成を大きく変更することなくプログラムの変更で対応可能であり、大きなコストアップを行うことなく対応できる。
【０１８４】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
【０１８５】
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【０１８６】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【０１８７】
以上、説明したように、本発明の一実施例構成によれば、調歩同期方式のシリアル通信を実行する通信装置において、通信相手から受信する通信データを構成するワードのスタートビットの開始位置以後、次のビット変化位置がワード前半部に存在する場合、スタートビットから次のビット変化位置までのタイマ計測時間と予め設定した基準ビット幅を適用して暫定ビット幅を算出し、さらに後続する異なるビット変化位置が存在する場合、スタートビットの開始位置からワードの最終的なビット変化位置までのタイマ計測時間を最終計測時間として取得し、最終計測時間と暫定ビット幅とに基づいてビット幅を算出し、算出したビット幅を適用して通信速度の算出処理を行う。本構成により通信速度が不明の通信相手からの通信データの速度検出が可能となり、相手に合わせた通信速度に切り替えて通信を成立させる制御が可能となる。
【図面の簡単な説明】
【０１８８】
【図１】調歩同期方式に従ったシリアルデータ通信の概要について説明する図である。
【図２】調歩同期方式に従ったシリアルデータ通信のデータ送受信成功例と失敗例について説明する図である。
【図３】本発明のデータ通信装置を利用したデータ通信システムの構成例を示す図である。
【図４】データ送受信両サイドにおける通信速度の認識の差に基づく問題点について説明する図である。
【図５】データ送受信両サイドにおける通信速度の認識の差やクロック差による影響と許容誤差について説明する図である。
【図６】データ送受信両サイドにおける通信速度の認識の差やクロック差による影響と許容誤差について説明する図である。
【図７】本発明のデータ通信装置の実行する処理例について説明する図である。
【図８】本発明の一実施例に係るデータ通信装置の具体的な構成例について説明する図である。
【図９】本発明に従ったデータ通信装置の処理シーケンスについて説明するフローチャートを示す図である。
【図１０】本発明に従ったデータ通信装置の処理シーケンスについて説明するフローチャートを示す図である。
【図１１】本発明に従ったデータ通信装置の処理シーケンスについて説明するフローチャートを示す図である。
【図１２】本発明に従ったデータ通信装置の処理シーケンスについて説明するフローチャートを示す図である。
【図１３】本発明に従ったデータ通信装置の実行する時間計測処理例について説明する図である。
【図１４】本発明に従ったデータ通信装置の処理例について説明する図である。
【符号の説明】
【０１８９】
１０  通信部Ａ
２０  通信部Ｂ
１１０  通信部Ａ
１２０  通信部Ｂ
２１０  通信実行部
２１１  出力部
２１２  入力部
２１３  通信速度設定部
２２０  割り込み処理部
２２１  ビット変化検出部
２３０  タイマ
２３１  時間計測部
２４０  制御部（ＣＰＵ）
２４１  通信速度算出部
２５０  ＣＰＵバス
【図１】
2010124267.tif 000003
【図２】
2010124267.tif 000004
【図３】
2010124267.tif 000005
【図８】
2010124267.tif 000006
【図９】
2010124267.tif 000007
【図１０】
2010124267.tif 000008
【図１１】
2010124267.tif 000009
【図１２】
2010124267.tif 000010
【図１３】
2010124267.tif 000011
【図１４】
2010124267.tif 000012
【図４】
2010124267.tif 000013
【図５】
2010124267.tif 000014
【図６】
2010124267.tif 000015
【図７】
2010124267.tif 000016