(57)【要約】【目的】送信側が異常終了と認識し、受信側が正常終了と認識した場合、受信側に異常終了させる「データ通信方法」を提供する。【構成】マスター１１は、フレーム適所にフレームのバイト長を挿入すると共に最終バイトに誤り検出符号を挿入し、最終バイト送出後に受信失敗を受信したか監視し、受信失敗を受信した場合には、ダミーバイトを転送し、ついでストップ条件を送出する。スレーブ１２は、受信バイト数をカウントし、受信バイト数とフレームで特定されたバイト長とを比較し、受信バイト数が大きい場合には受信失敗とする。【選択図】        図１
2005084791.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２つのユニット間を、データ転送を行なうデータライン及びクロック転送を行なうクロックラインで接続し、送信側ユニットはクロックに同期してｎバイトのデータを転送すると共にフレームの末尾にデータ信号とクロック信号が規定の位相関係となるようにしてストップ条件を転送し、受信側ユニットは１バイトのデータを受信する毎に前記データラインを介して送信側ユニットに確認応答を送信し、ストップ条件によりフレームの終わりを識別するシリアルデータ転送システムにおけるデータ通信方法において、
送信側ユニットは、フレーム送信に際して、フレーム適所にフレームのバイト長を挿入し、最終バイト送出後に受信失敗を受信したか監視し、受信失敗を受信した場合には、ダミーバイトを転送し、ついでストップ条件を送出し、
受信側ユニットは、フレーム受信に際して、受信バイト数をカウントし、受信バイト数とフレームで特定されたバイト長とを比較し、受信バイト数が大きい場合には受信失敗判定する、
ことを特徴とするデータ通信方法。
【請求項２】
前記シリアルデータ転送システムはＩ2Ｃバスを介して通信するシステムである請求項１記載のデータ通信ユニット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はシリアルデータ転送システムにおけるデータ通信方法に係わり、たとえばＩ2Ｃバスを介してマスター(送信側ユニット)がスレーブ(受信側ユニット)にシリアルデータを送信するシリアルデータ転送システムにおけるデータ通信方法に関する。
【背景技術】
【０００２】
Ｉ2Ｃバスを介してシリアルデータを送信するシリアルデータ転送システムにおいては、図５に示すように少なくとも２つのユニット１，２間を、データ転送を行なうシリアルデータライン(ＳＤＡライン)３及びクロック転送を行なうシリアルクロックライン(ＳＣＬライン)４で接続する。なお、ユニット１，２において、SDはデータ送出端子、RDはデータ受信端子、SCはクロック送出端子、RCはクロック受信端子である。
送信側ユニットであるマスター１は、図６に示すように、フレームの先頭にデータ信号ＳＤＡとクロック信号ＳＣＬが規定の第1の位相関係となるようにしてスタート条件Ｓを、データ送出端子SD，クロック送出端子SCよりバス３，４を介して転送し、また、フレームの末尾にデータ信号ＳＤＡとクロック信号ＳＣＬが規定の第2位相関係となるようにしてストップ条件Pを転送し、これらスタート条件とストップ条件の間でクロックに同期してｎバイトのデータを転送する。
受信側ユニットであるスレーブ２は、スタート条件Ｓをデータ受信端子RD、クロック受信端子SCより検出してフレームの受信を開始し、１バイトのデータを受信する毎にデータ送出端子SDより前記ＳＤＡラインを介してマスター１に確認応答（アクノリッジA）を送信し、ストップ条件Ｐによりフレームの終わりを識別する。
【０００３】
すなわち、マスター１はスレーブ2へスタート条件Ｓを送出し、ついで、1ビット目から７ビット目にかけてスレーブアドレスを、8ビット目にリード/ライト制御信号Ｒ／Ｗをそれぞれ送信する。ついで、スレーブ2から9ビット目に返送されるアクノリッジAを受信すれば、以後、送信データとしてｎ個のバイトを転送し、1バイトのデータ転送毎にスレーブ２から返送されてくるアクノリッジAを受信し、データ転送の終了時にストップ条件Pを送信する。
【０００４】
図７は、Ｉ2Ｃバスを介して通信する際にマスター１、スレーブ２がＳＤＡライン3、ＳＣＬライン4にそれぞれ出力する信号レベル（"L"：Low、"H"：High）の説明図である。マスター1よりスレーブ２への送信時、スレーブ２は図７(b)に示すようにＳＤＡライン３、ＳＣＬライン４に“H"を出力し、マスター1は図７(a)に示すようにＳＤＡライン３、ＳＣＬライン４にデータとクロック信号に応じた“H"，”L“を出力する。なお、一方のユニットがラインに“H”を出力しているとき、他方のユニットが“L”を出力するとラインは“L”になる。
すなわち、マスター1は、スタート条件送出時、ＳＣＬライン４を“H"にし、ＳＤＡラインを"H"から”L"に変化する。又、ストップ条件時、ＳＣＬラインを“H"にし、ＳＤＡラインを"L"から”H"に変化する。又、マスター1は、アクノリッジAを受信するために、バイト送信後の第9ビット目でＳＤＡラインに"H"を出力する。一方、スレーブ２はＳＤＡライン３、ＳＣＬライン４に“H"を出力したまま、ＳＤＡライン３にマスター１が送信したデータを受信し、1バイト受信後の第9ビットにおいてアクノリッジAを送信する為に、ＳＤＡライン３に”L"を出力する(NACKの場合は“H”)。また、スレーブ２は第9クロックビットが立ち下がったことを検出して”L"を"H"に戻し、ストップ条件を検出して1フレームの受信を完了する。
【０００５】
ところで、ノイズ混入や波形の鈍りが原因で、送信側と受信側のクロックがずれてしまう場合がある。受信側と送信側でビットずれが発生すると、送信側は通信フレームの最終バイトで通信異常を検出しているにもかかわらず、受信側は正常に受信処理を終了することがある。
図８は送信側が異常終了、受信側が正常終了と認識してしまう状況説明図である。ＳＣＬクロックラインに、(c)で示すノイズ成分Nが混入して第6ビット目のクロックが2つのクロックとみなされてクロックが1個増加すると、スレーブ２は第７ビットを第8ビットみなし、その後、フレームを正常に受信していればＳＤＡライン３にＡＣＫ（＝“Ｌ”）を出力する。そして、以後、スレーブ２は正規の第8ビットを第9ビットとみなし、その立ち下がりを検出してＳＤＡライン３に“Ｈ"を出力する。
一方、マスター１は正規の第9ビット(Aビット)で、ＳＤＡライン３上の"H"をNACKとして受信し、しかる後、ストップ条件を送出する。スレーブ２はＳＤＡライン３、ＳＣＬライン４に“Ｈ”を出力しているため、ＳＤＡライン３、ＳＣＬライン4に点線５１で示すようにストップ条件が出現し、スレーブ2は該ストップ条件を検出して正常終了する。
【０００６】
以上のように、送信側が異常終了と認識しているにもかかわらず、受信側が正常に受信を終了してしまうと、
・システムとして動作の整合が取れなくなる、
・意図しない動作をする可能性がある、
・誤動作する可能性がある、
などの事態が生じる。たとえば、送信側は異常終了すると再送するが、再送時以下のような問題が発生する。送信側は電源スイッチオン指令が異常終了すると該指令を受信側に再送する。この結果、電源スイッチオン指令が2回受信側に通知され、結局、受信側は最初のスイッチオン指令でパワーオンし、次のスイッチオン指令でパワーオフしてしまい、受信側は送信側が全く意図しない動作を行なってしまう。このため、送信側が異常終了と認識した場合には受信側でも異常終了と認識させる必要がある。
【０００７】
Ｉ2Ｃバス通信において誤動作を防止する従来技術がある(たとえば特許文献１の図1)。この従来技術は、ＳＤＡラインが"L"になっている時、マスター(マイクロコンピュータ)がスレーブ(不揮発性メモリ)にデータを読み／書きすると誤動作が生じる。そこで、マスターは、スレーブがバスを解放したことを確認してからアクセス動作を行なうことにより、誤動作を防止するものである。
また、従来技術としてマスターとスレーブ間を接続するバスの衝突を避けるデータ転送方法がある(たとえば特許文献2の図１)。この従来技術は、スレーブがマスタの送信時、マスターから予め設定されているバイト数のデータを受信したか監視し、受信したとき、データラインを解放してスレーブよりマスターへデータを送信するものである。
【特許文献１】特開平９−２６５４３６号公報
【特許文献２】特開２００１-２９０７６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、いずれの従来技術も、送信側が異常終了と認識し、受信側で正常終了と認識した場合の問題点を解決するものではない。
以上から本発明の目的は、送信側が異常終了と認識し、受信側が正常終了と認識した場合、受信側でも異常終了させるようにして、認識の相違に基づいて発生する問題点を解決することである。
【課題を解決するための手段】
【０００９】
本発明は、少なくとも２つのユニット間を、データ転送を行なうデータライン及びクロック転送を行なうクロックラインで接続し、送信側ユニットはクロックに同期してｎバイトのデータを転送すると共にフレームの末尾にデータ信号とクロック信号が規定の位相関係となるようにしてストップ条件を転送し、受信側ユニットは１バイトのデータを受信する毎に前記データラインを介して送信側ユニットに確認応答を送信し、ストップ条件によりフレームの終わりを識別するシリアルデータ転送システムにおけるデータ通信方法に関するものである。
このデータ通信方法において、マスター１１は、フレーム送信に際して、フレーム適所にフレームのバイト長を挿入し、最終バイト送出後に受信失敗を受信したか監視し、受信失敗を受信した場合には、ダミーバイトを転送し、ついでストップ条件を送出する。一方、スレーブは、フレーム受信に際して、受信バイト数をカウントし、ストップ条件受信前における受信バイト数とフレームで特定されたバイト長とを比較し、受信バイト数が大きい場合には受信失敗と判定する。
【発明の効果】
【００１０】
以上のように、本発明によれば、送信側が異常終了と認識し、受信側が正常終了と認識した場合であっても、ダミーバイトを受信側に送って自動的に受信側に異常終了と認識させるようにできるため、終了状態の認識の相違に基づいて発生する問題点を解決することができる。
【発明を実施するための最良の形態】
【００１１】
図1は本発明を実施するデータ転送システムの構成図であり、Ｉ2Ｃバスを介して通信ユニット１１，１２間で通信が行われる。
ＳＤＡライン(データライン)１３、ＳＣＬライン(クロックライン)１４は抵抗ＲＤ，ＲＣを介して電源ライン１５に接続されている。通信ユニット１１，１２は同一の構成を備え、データドライバ／レシーバ５１、クロックドライバ／レシーバ５２、制御装置５３を備えている。データドライバ／レシーバ５１はＳＤＡライン(データライン)１３に接続し、該ＳＤＡライン１３を"Ｈ"，"Ｌ"にドライブするNチャネル型MOSトランジスタ(NMOSトランジスタ)６１、該ＳＤＡライン１３のレベル（"H"，"Ｌ"）を読み取るバッファアンプ６２を備えている。
クロックドライバ／レシーバ５２はＳＣＬライン(クロックライン)１４に接続し、該ＳＣＬライン１４を"H"，"Ｌ"にドライブするNMOSトランジスタ７１、該ＳＤＡライン１３のレベル（"H"，"Ｌ"）を読み取るバッファアンプ７２を備えている。
【００１２】
通信ユニット１１が送信側ユニット(マスター)、ユニット１２が受信側ユニット(スレーブ)であるとすれば、スレーブ１２の制御装置５３は、NMOSトランジスタ６１，７１を共にオフし、ＳＤＡライン１３、ＳＣＬライン１４に“Ｌ”が出現しないように制御する。また、スレーブ１２が1バイト受信毎にアクノリッジAをマスター１１に返送するタイミング(第9ビット目のタイミング)で、マスター１１の制御装置５３は、NMOSトランジスタ６１をオフし、ＳＤＡライン１３に“L"が出現しないように制御する。
【００１３】
マスター１１の制御装置５３は、データ送信時、NMOSトランジスタ６１，７１をそれぞれデータ及びクロックに基づいてオン／オフし、ＳＤＡライン１３、ＳＣＬライン１４に該データとクロックに応じて“H"，”L“を出現させる。スレーブ１２の制御装置５３は、これらＳＤＡライン１３、ＳＣＬライン１４に出現した“H"，”L“レベル（データとクロック）をバッファアンプ６２，７２を介してそれぞれ読み取る。また、スレーブ１２の制御装置５３は、1バイト受信毎に第9ビットのタイミングでＳＤＡライン１３に“H"，”L“（アクノリッジA）を出現させる。マスター１１の制御装置５３は、ＳＤＡライン１３に出現したこの“H"，”L“レベル（アクノリッジAあるいはACK/NACK）をバッファアンプ６２を介して読み取る。
図2は本発明のフレーム構成説明図であり、先頭にスタート条件Ｓ、最後にストップ条件Ｐを配置すると共に、フレームの適所にフレームのバイト長Bsを特定するレングスバイトを配置し、最終バイトに誤り検出バイト(たとえばCRCチェックバイト)を配置している。
【実施例１】
【００１４】
図８に示すように、クロックノイズＮの発生により第６番目のクロックが２つになってクロックが１個増加すると、マスターは異常終了と認識しているにもかかわらず、スレーブは正常終了する。本実施例では、このようにマスターが異常終了と認識し、スレーブが正常終了と認識した場合、ダミーバイトをマスターからスレーブに送ってスレーブにおいてバイト長不一致を生じさせて自動的にスレーブを異常終了させるものである。
図３はマスター１１における制御装置５３の制御フローであり、図４はスレーブ１２における制御装置５３の制御フローである。
マスター11の制御装置は最終バイトを送出したかチェックし(ステップ１０１)、送出しなければ別の処理を行なう。しかし、最終バイトを送出すれば、最終バイト送出後の第９ビットにおいてNACK(=“H“)を検出したかチェックする(ステップ１０２)。ACKを検出すれば、正常終了と判断して(ステップ１０３)処理を終了する。
【００１５】
しかし、NACKを検出すれば、スレーブ１２が正常終了と認識している可能性があるので、ストップ条件を送出する前にダミーバイトをする(ステップ１０４)。そして、ストップ条件送出後、異常終了し(ステップ１０５)、フレームの再送を行なう(ステップ１０６)。
一方、スレーブ１２の制御装置は、マスター１１からフレームを構成するバイトを受信する毎に(ステップ２０１)、レングスバイトか判別し(ステップ２０２)、レングスバイトであればフレームバイト長Bsを保存する(ステップ２０３)。ついで、受信バイト数Ｂを１カウントアップし（Ｂ＋１→Ｂ、ステップ２０４）、Ｂ＝Ｂｓになったかチェックする(ステップ２０５)。Ｂ＜Bsであれば、ステップ201に戻り次のフレームバイトを受信して以降の処理を繰返す。
【００１６】
ステップ２０５において、Ｂ＝Ｂｓになれば、換言すれば、最終バイトである誤りチェックバイトを受信すれば、誤りチェックを行ない、誤りチェック結果を送出すると共に保持する(ステップ２０６)。以後、マスター１１から更にバイト（ダミーバイト）を受信するか監視し(ステップ２０７)、受信すれば、受信バイト数Ｂをカウントアップし（Ｂ＋１→Ｂ、ステップ208）、この結果、受信バイト数Ｂが通知されたフレームバイト長Bs以上になる為（Ｂ＞Bs）、異常と判断し、異常終了する(ステップ209)。
しかし、ダミーバイトを受信しなければ、ステップ２０６の誤り検出で保持している誤り検出結果(実は正常)に基づいて正常終了する(ステップ210)。
以上、本発明によれば、送信側が異常終了と認識し、受信側が正常終了と認識した場合であっても、自動的に受信側に異常終了と認識させるようにできるため、終了状態の認識の相違に基づいて発生する問題点を解決することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明を実施するデータ転送システムの構成図である。
【図２】本発明のフレーム構成説明図である。
【図３】マスターにおける制御装置の処理フローである。
【図４】スレーブにおける制御装置の処理フローである。
【図５】Ｉ2Ｃバスを介してシリアルデータを送信するシリアルデータ転送システムの概念図である。
【図６】フレーム構成例である。
【図７】Ｉ2Ｃバスを介して通信する際にマスター、スレーブがＳＤＡライン、ＳＣＬラインに出力する信号レベル（"L"：Low、"H"：High）の説明図である。
【図８】送信側が異常終了、受信側が正常終了と認識してしまう状況説明図である。
【符号の説明】
【００１８】
１１  ユニット(マスター)
１２  ユニット(スレーブ)
１３  ＳＤＡライン
１４  ＳＣＬライン
５１  データドライバ／レシーバ
５２  クロックドライバ／レシーバ
５３  制御装置
６１、７１  NMOSトランジスタ
６２、７２  バッファアンプ
【図１】
2005084791.tif 000003
【図２】
2005084791.tif 000004
【図３】
2005084791.tif 000005
【図４】
2005084791.tif 000006
【図５】
2005084791.tif 000007
【図６】
2005084791.tif 000008
【図７】
2005084791.tif 000009
【図８】
2005084791.tif 000010