(57)【要約】【課題】半二重通信を行なうノードにおける演算処理装置の処理効率を向上させる。【解決手段】本発明によるシリアル通信システムは、通信バス１０を介して他のノードとシリアル通信を行なうノード２を具備する。ノード２は、他のノードへの送信データを生成する演算処理装置１４と、送信データ２００を保持する送信バッファ３２と、半二重通信を行なう際、送信バッファ３２が保持する送信データ２００を所定の期間待機させた後、他のノードに送信する送信制御回路３１とを備える。【選択図】図５
2010178199.tif 000002
【特許請求の範囲】
【請求項１】
通信バスを介して他のノードとシリアル通信を行なうノードを具備し、
前記ノードは、
前記他のノードへの送信データを生成する演算処理装置と、
前記送信データを保持する送信バッファと、
半二重通信を行なう際、前記送信バッファが保持する送信データを所定の期間待機させた後、前記他のノードに送信する送信制御回路と、
を備え、
シリアル通信システム。
【請求項２】
請求項１に記載のシリアル通信システムにおいて、
前記ノードは、データの受信完了時を基準として待機期間の終了時刻を設定する待機制御回路を更に備え、
半二重通信を行なう際、前記送信制御回路は、前記待機期間中に前記送信バッファに書き込まれた送信データを、前記終了時刻まで待機させた後、前記他のノードに送信する
シリアル通信システム。
【請求項３】
請求項２に記載のシリアル通信システムにおいて、
前記送信バッファには半二重通信用の第１アドレスが割り当てられ、
前記ノードは、前記演算処理装置による前記送信バッファへの書き込みアドレスを検出するアドレス検出回路を更に備え、
前記送信制御回路は、前記待機期間中に前記書き込みアドレスとして前記第１アドレスが検出されると、前記送信バッファに書き込まれた送信データの送信を待機する
シリアル通信システム。
【請求項４】
請求項２又は３に記載のシリアル通信システムにおいて、
前記送信バッファには全二重通信用の第２アドレスが更に割り当てられ、
前記送信制御回路は、前記書き込みアドレスとして前記第２アドレスが検出されると前記送信バッファに書き込まれた送信データを待機させずに送信する
シリアル通信システム。
【請求項５】
請求項２から４のいずれか１項に記載のシリアル通信システムにおいて、
前記待機期間が経過した後に送信データが前記送信バッファに書き込まれた場合、前記送信制御回路は、前記送信バッファに書き込まれたデータを待機させずに送信する。
シリアル通信システム。
【請求項６】
請求項２から５のいずれか１項に記載のシリアル通信システムにおいて、
前記演算処理装置は、前記送信データの生成とともに送信要求信号を発行し、
半二重通信を行なう際、前記待機制御回路は、前記待機期間中に受け取った前記送信要求信号を前記終了時刻まで保持した後、送信開始信号として前記送信制御回路に出力し、
前記送信制御回路は、前記送信開始信号に応じて、前記送信バッファが保持する送信データを前記他のノードに送信する
シリアル通信システム。
【請求項７】
請求項６に記載のシリアル通信システムにおいて、
前記待機期間が経過した後に受け取った前記送信要求信号を待機させずに前記送信開始信号として送信する。
シリアル通信システム。
【請求項８】
通信バスを介して他のノードとシリアル通信を行なうノード内で行なわれる通信方法において、
演算処理装置が、前記他のノードへの送信データを生成するステップと、
送信バッファが、前記送信データを保持するステップと、
半二重通信を行なう際、前記保持する送信データを所定の期間待機させた後、前記他のノードに送信するステップと、
を具備する
通信方法。
【請求項９】
請求項８に記載の通信方法において、
データの受信完了時を基準として待機期間の終了時刻を設定するステップを更に具備し、
前記送信データを送信するステップは、前記待機期間中に前記送信バッファに書き込まれた送信データを、前記終了時刻まで待機させた後、前記他のノードに送信するステップを備える
通信方法。
【請求項１０】
請求項９に記載の通信方法において、
前記送信バッファには半二重通信用の第１アドレスが割り当てられ、
前記演算処理装置による前記送信バッファへの書き込みアドレスを検出するステップを更に具備し、
前記送信データを送信するステップは、前記待機期間中に前記書き込みアドレスとして前記第１アドレスが検出されると、前記送信バッファに書き込まれた送信データの送信を待機する
通信方法。
【請求項１１】
請求項９又は１０に記載の通信方法において、
前記送信バッファには全二重通信用の第２アドレスが更に割り当てられ、
前記書き込みアドレスとして前記第２アドレスが検出されると前記送信バッファに書き込まれた送信データを待機させずに送信するステップを更に具備する
通信方法。
【請求項１２】
請求項９から１１のいずれか１項に記載の通信方法において、
前記待機期間が経過した後に送信データが前記送信バッファに書き込まれた場合、前記送信バッファに書き込まれたデータを待機させずに送信するステップを更に具備する
通信方法。
【請求項１３】
請求項９から１２のいずれか１項に記載の通信方法において、
前記演算処理装置が、前記送信データの生成とともに送信要求信号を発行するステップを更に具備し、
前記送信データを送信するステップは、
前記待機期間中に受け取った前記送信要求信号を前記終了時刻まで保持した後、送信開始信号として前記送信制御回路に出力するステップと、
前記送信開始信号に応じて、前記送信バッファが保持する送信データを前記他のノードに送信するステップと
を備える
通信方法。
【請求項１４】
請求項１３に記載の通信方法において、
前記待機期間が経過した後に受け取った前記送信要求信号を待機させずに前記送信開始信号として送信するステップを更に具備する。
通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シリアル通信システム、及び通信方法に関し、特に半二重通信を行なう複数のノードを有するシリアル通信システム、及び通信方法に関する。
【背景技術】
【０００２】
非同期シリアル通信として半二重通信方式がある。半二重通信方式では、１つの伝送路で送信と受信を同時に行なうため、自ノードが送信を行なっている間は他のノードからのデータの受信することはできない。又、自ノードが受信を行なっている間は送信を行なうことはできない。よって複数のノードで送信されると通信経路（通信バス）上で競合が起きて正しいデータが伝送されなくなる。従って、半二重通信方式において各ノードが送信する場合には、受信動作を行なっていないときに送信を行なう必要がある。又、受信中の場合、受信の終了を確認してから送信を行なう必要がある。このため、受信を終了したことを示すために受信完了割込みや受信中を示すステータスフラグを用いることが一般的である。
【０００３】
一方、各ノードはそれぞれの動作クロックを基にボーレートを生成しているのが一般的である。動作クロックの周波数の違いや動作クロック生成部の精度により各ノードのボーレート間で誤差が生じている。このため非同期シリアル通信を行なうシステムでは、ノード（ユニット）毎に許容ボーレート誤差範囲が設定されている。このため、データビットを受信するタイミングは各ノードによって異なり、データの最終ビットを受信するタイミングは、ノード間において最悪条件下で１ビット近くの差が生じることがある。
【０００４】
例えば、ノードＡからデータが送信され、ボーレートの誤差が許容範囲の早い側にあるノードＢが当該データの受信完了割込みを受けてデータの送信を行なう場合、ボーレートの誤差が許容範囲の遅い側にあるノードＣは、ノードＡからのデータを受信完了する前に、ノードＢから送信されたデータを先に受信してしまい、受信エラーとなることがある。
【０００５】
図１を参照して、上述のようにデータの受信から送信に切り替わる際に、他のノードにおいて受信エラーとなる場合の動作の詳細を説明する。ここで、ノードＡのサンプリング信号を標準とし、ノードＢのサンプリングタイミングは許容誤差における最小値、ノードＣのサンプリングタイミングは許容誤差における最大値であるものとする。
【０００６】
データ通信バスにデータが送信され、時刻Ｔ１においてノードＢがストップビットを検出すると、ノードＢにおいて受信割込み信号が出力される（受信割込みがハイレベルに遷移する）。時刻Ｔ２においてノードＢでは、受信割込み信号に応じて送信データが送信バッファに書き込まれた後、データ通信バスに送出される。
【０００７】
データ通信バス上のストップビットは、ノードＢから送出されたデータ（スタートビット）によって変更される。これによりストップビットのビット長Ｔｓｔは、１ビットよりも短くなる場合がある。ノードＢのサンプリングタイミングとノードＣのサンプリングタイミングの差が、例えば１ビットである場合、ノードＣがストップビットを受信する前にデータ通信バス上にスタートビットが送出されてしまう。この場合、ノードＣは、ストップビットを検出するタイミング（時刻Ｔ３）でスタートビットのデータをサンプリングするためフレーム受信エラーとなり、システム全体のエラーを誘発してしまう。
【０００８】
すなわち、ノードＢからデータが送出される時刻Ｔ２より、ノードＣにおけるストップビットを検出するタイミング（時刻Ｔ３）が遅れる場合、ノードＣは受信エラーを起こしてしまう。このようなエラーの発生を防ぐため、受信から送信に切り替わる際にも、通信バス上のストップビットのビット長Ｔｓｔが所定の長さ（例えば１ビット分の長さ）となるように制御する必要がある。
【０００９】
以上のような問題を回避するため、受信完了割込み処理を遅延させてノードＢからのデータの送信を遅延させる方法が知られている。例えば、ソフトウェア処理によって受信割込み処理や受信中のステータスフラグの立上りを確認し、それを基点にソフトカウンタを利用してデータ送信を遅延させる時間を計測する方法がある。しかし、この方法では、システム周波数に依存する場合や、ノード毎にドライバソフトの共通化（共用化）ができない場合、ＣＰＵの処理負荷が増大し処理効率が悪化する。一方、ソフトカウンタにより充分な時間を取ってドライバソフトを共通化した場合、通信バスの空き時間が増加するため、通信バス効率が悪化してしまう。
【００１０】
このような効率の悪化を回避するため、モード設定によって受信割込みを遅延させる技術が特開２００１−２３７８１１に記載されている（特許文献１参照）。図２は、特許文献１に記載のシリアル通信装置の構成を示す図である。図２を参照して、特許文献１に記載のノード１０は、受信制御回路５１、遅延用シフトレジスタ５２、セレクタ５３、割込み制御回路５４、ＣＰＵ５５を備える。受信制御回路５１はストップビットを検出して受信終了フラグを立てる。遅延用シフトレジスタ５２は受信終了フラグを遅延させてセレクタ５３にセットする。セレクタ５３は、モード信号に応じて受信制御回路５１からの受信終了フラグと、遅延用シフトレジスタ５２からの受信終了フラグの一方を選択して割込み制御回路５４にセットする。割込み制御回路５４は、セットされた受信終了フラグに応じて割込み要求信号をＣＰＵ５５に出力する。ＣＰＵ５５は、割込み要求信号に応じて送信データを出力する。
【００１１】
半二重モードのとき、セレクタ５３は、遅延された受信終了フラグを割込み制御回路５４にセットする。これによりＣＰＵ５５からのデータの出力は遅延し、ストップビットのビット長が１ビットを超える時刻に通信バス上にデータが送出される。この結果、通信バス上におけるストップビットのビット長が送信データによって短くなることを回避できる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００１−２３７８１１
【発明の概要】
【発明が解決しようとする課題】
【００１３】
このように、特許文献１に記載のシリアル通信装置では、モード設定により受信完了割込みを遅延させているため、モード設定した際には必ず受信割込みが遅れて発生し、ＣＰＵの受信処理時間が遅延するため効率が悪化してしまう。
【００１４】
図３を参照して、特許文献１に記載のシリアル通信装置では、時刻Ｔ１において通信バス上のストップビットを検出（サンプリング）してから、次のサンプリング（時刻Ｔ３）までの間、受信完了割込み信号の発行が遅延される。このため、ストップビットの検出後の受信データが確定する時刻Ｔ２から受信割込み信号の発行後の時刻Ｔ４までの期間ＴＢ、ＣＰＵ５５は、送信データの準備及び出力処理を実行できない。例えば、受信データの１フレームが、データ（８ビット）、スタートビット（１ビット）、ストップビット（１ビット）で構成されている場合、１フレームに対して１割の時間を送信データの準備及び送信に利用できないことになる。
【００１５】
又、ＣＰＵは割込み信号が入力されるとすぐにその割込み信号に応じた処理を行なうとは限らない。割込み信号の優先順位にも依存するがＣＰＵにおいて複数の割込み処理が行なわれる場合、送信データの準備や出力（送信データ用シフトレジスタへの書き込み）には、１ビット長以上を費やすこともある。この場合では割込み信号を遅らせる意味がなく、通信バス上のデータもストップビットが１ビット長以上となるため通信バス効率も悪くなる。更に、近年では、様々な周辺機器が追加されており、割込み処理も多様化している。このため、少しでも、ＣＰＵの処理効率や、データの受信から送信までにかかる時間を短縮する必要がある。
【課題を解決するための手段】
【００１６】
以下に、［発明を実施するための形態］で使用される番号・符号を括弧付きで用いて、［課題を解決するための手段］を説明する。この番号・符号は、［特許請求の範囲］の記載と［発明を実施するための形態］の記載との対応関係を明らかにするために付加されたものであるが、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１７】
本発明によるシリアル通信システムは、通信バス（１０）を介して他のノードとシリアル通信を行なうノード（２）を具備する。ノード（２）は、他のノードへの送信データを生成する演算処理装置（１４）と、送信データ（２００）を保持する送信バッファ（３２）と、半二重通信を行なう際、送信バッファ（３２）が保持する送信データ（２００）を所定の期間待機させた後、他のノードに送信する送信制御回路（３１）とを備える。
【００１８】
本発明による通信方法は、通信バス（１０）を介して他のノードとシリアル通信を行なうノード内で行なわれる。本発明による通信方法は、演算処理装置（１４）が、他のノードへの送信データ（２００）を生成するステップと、送信バッファ（３２）が、送信データ（２００）を保持するステップと、半二重通信を行なう際、保持する送信データ（２００）を所定の期間待機させた後、他のノードに送信するステップを備える。
【００１９】
以上のように、本発明では、演算処理装置（１４）におけるデータの出力処理を待機させずに、他のノードへの送信タイミングを変更することができる。
【発明の効果】
【００２０】
従って、本発明によれば、半二重通信を行なうシリアル通信システムにおいて、データの送信に係るＣＰＵの処理効率を向上させることができる。
【００２１】
又、他のノードにおけるデータ受信を妨げないように、受信データと送信データのフレーム間のビット長を確保可能となり、通信エラーを回避できる。
【図面の簡単な説明】
【００２２】
【図１】図１は、一般的なシリアル通信方式の問題点を示すタイミングチャートである。
【図２】図２は、従来技術によるシリアル通信装置の構成を示す図である。
【図３】図３は、図２に示すシリアル通信装置の問題点を示すタイミングチャートである。
【図４】図４は、本発明によるシリアル通信システムの構成を示す図である。
【図５】図５は、本発明によるシリアル通信装置（ノード）の実施の形態における構成を示す図である。
【図６】図６は、本発明によるシリアル通信システムの第１の実施の形態における動作の一例を示すタイミングチャートである。
【図７】図７は、本発明によるシリアル通信システムの第１の実施の形態における動作の他の一例を示すタイミングチャートである。
【図８】図８は、本発明によるシリアル通信システムの第２の実施の形態における動作を示すタイミングチャートである。
【発明を実施するための形態】
【００２３】
以下、添付図面を参照して、本発明によるシリアル通信システムの実施の形態を詳細に説明する。一般的に非同期シリアル通信を採用した通信システムでは全二重通信方式にも半二重方式にも対応可能となっている。この場合、製品仕様やユーザのニーズに応じてどちらか一方が選択使用される。このため、本実施の形態では、半二重通信方式と全二重通信方式を切り換え可能な非同期シリアル通信システムについて説明する。本発明は、それぞれが演算処理装置を備える複数のノードをシリアル通信で接続したマイクロコンピュータに好適に利用される。
【００２４】
１．第１の実施の形態
（構成）
図４から図７を参照して、本発明によるシリアル通信システムの第１の実施の形態における構成を説明する。図４は、本発明によるシリアル通信システムの構成を示すブロック図である。図４を参照して、シリアル通信システムは、通信バス１０（データバス）を介して接続される複数のシリアル通信装置（ノード）１、２、３、…を具備する。複数のノード１、２、３、…のそれぞれは、通信バス１０に接続される受信端子１１及び送信端子１２を備える。ノード１、２、３、…のそれぞれの受信端子１１及び送信端子１２は、半二重通信方式のとき共通の伝送線に接続される。又、全二重通信方式のときは自ノードの受信端子１１と他のノードの送信端子１２、自ノードの送信端子１２と他のノードの受信端子１１とが相互に接続される。
【００２５】
図５は、本発明によるシリアル通信装置（ノード）２の実施の形態における構成を示す図である。図５を参照してノード２の構成を説明する。尚、ノード１、３の構成はノード２と同様なので、説明を省略する。図５を参照して、ノード２は、それぞれが通信バス１３を介して接続される演算処理装置（ＣＰＵ）１４、割込み制御回路Ｕ１、受信ユニットＵ２、送信ユニットＵ３と、ボーレートジェネレータ３４とを具備する。
【００２６】
受信ユニットＵ２は、ボーレートジェネレータ３４で生成されたボーレートに応じて動作し、受信端子１１から入力されるデータ１００を、通信バス１３を介してＣＰＵ１４に入力する。詳細には、受信ユニットＵ２は、受信制御回路２１、受信シフトレジスタ２２、受信バッファ２３、受信サンプリング回路２４を備える。
【００２７】
受信端子１１から入力されたデータ１００は、受信サンプリング回路２４から出力される受信サンプリング信号１０１に応じて、受信シフトレジスタ２２に取り込まれる。受信サンプリング回路２４は、ボーレートジェネレータ３４からのボーレートに応じたタイミングで受信サンプリング信号１０１を生成する。ボーレートジェネレータ３４は、図示しないクロック信号に応じた周期のボーレートを生成する。クロック信号は、例えばノード固有に生成される。このため、ノード１、２、３…のそれぞれのボーレートは、動作クロックの周波数の違いや受信サンプリング回路２４の精度差により誤差が生じている。従って、本発明によるシリアル通信システムでは、従来と同様にノード毎に許容ボーレート誤差範囲が設定されている。
【００２８】
受信制御回路２１は、受信シフトレジスタ２２で取り込まれたデータのデータ形式を検出する。受信端子１１で受信されるデータフレームは、スタートビット、データビット、ストップビットを含む。受信制御回路２１は、ストップビットを検出すると割込み制御回路Ｕ１及び送信ユニットＵ３（待機制御回路（Ｗａｉｔ  Ｔｉｍ制御回路）４０）に通知するとともに、受信シフトレジスタ２２を制御してデータフレームを受信バッファ２３に転送させる。
【００２９】
受信制御回路２１はストップビットを検出すると受信完了通知信号１０２を割込み制御回路Ｕ１及び送信ユニットＵ３（待機制御回路４０）に出力する。あるいは、受信制御回路２１はストップビットを検出すると受信完了を示す受信完了フラグを立てても良い。この場合、割込み制御回路Ｕ１及び送信ユニットＵ３（待機制御回路４０）は、受信完了フラグによって受信完了を確認することができる。受信バッファ２３に書き込まれたデータフレームは通信バス１３を介してＣＰＵ１４に出力される。
【００３０】
割込み制御回路Ｕ１は、データフレームの受信完了の通知に応じてＣＰＵ１４に対し受信割込みを設定する。ＣＰＵ１４は受信割込みに応じた割込み処理を実行する。例えば、ＣＰＵ１４は、割込み処理として受信に応じて他のノードに送信するデータフレーム（送信データ）の生成及び出力処理を行なう。
【００３１】
送信ユニットＵ３は、ＣＰＵ１３から出力されたデータフレームを、ボーレートに応じたタイミングで送信端子１２を介して送信する。詳細には、送信ユニットＵ３は、送信制御回路３１、送信シフトレジスタ３２、送信タイミング生成回路３３、待機制御回路４０、及びアドレス検出回路（アドレスチェック）４１を備える。
【００３２】
送信シフトレジスタ３２には、半二重通信用の第１アドレスと全二重用の第２アドレスが割り当てられている。ＣＰＵ３２は、半二重通信を行なう際、第１アドレスを宛先として送信データを出力し、全二重通信を行なう際、第２アドレスを宛先として送信データを出力する。ＣＰＵ１４から出力されたデータは、送信タイミング生成回路３３で生成される送信タイミングに応じて、送信シフトレジスタ３２に取り込まれる。送信タイミング生成回路３３は、ボーレートジェネレータ３４からのボーレートに応じたタイミングで送信タイミングを決定する。
【００３３】
アドレス検出回路４１は、ＣＰＵ１４が送信シフトレジスタにアクセスする際の宛先アドレス（書き込みアドレス）を検出して、待機制御回路４０に通知するともに、送信データ１００の送信要求信号１０４を待機制御回路４０に出力する。書き込みアドレスの通知は、例えばフラグを用いて行なわれる。アドレス検出回路４１は、フラグのレベルを第１アドレスを検出すると半二重通信方式を示す第１レベル（例えばハイレベル）に設定し、第２アドレスを検出すると全二重通信方式を示す第２レベル（例えばローレベル）に設定する。すなわち、本発明ではアドレス検出回路４１によって、シリアル通信システムで使用される通信方式を検出することができる。
【００３４】
待機制御回路４０は、受信制御回路２１からの受信完了の通知と、アドレス検出回路４１において検出された書き込みアドレス（通信方式）とに応じて送信データの送信待機時間（待機期間）を設定する。待機制御回路４０は、全二重通信方式で通信する場合、アドレス検出回路４１から出力された送信要求信号１０４をそのまま送信開始信号１０５として送信制御回路３１に出力する。一方、半二重通信方式で通信する場合、待機制御回路４０は、アドレス検出回路４１から出力された送信要求信号１０４を、所定の期間（待機期間）待機させてから送信開始信号１０５として送信制御回路３１に出力する。待機制御回路４０は、送信タイミング生成回路３３からの送信タイミングに基づき待機期間を設定する。すなわち、送信タイミングに応じて送信開始信号１０５を出力する時刻が待機期間の終了時刻となる。
【００３５】
送信制御回路３１は、送信シフトレジスタ３２に書き込まれた送信データ２００を、待機制御回路４０からの送信開始信号１０５に応じて送信端子１２（通信バス１０）に送出させる。この際、送信データ２００は、ボーレートに基づく送信タイミングで送出される。
【００３６】
（動作）
図６及び図７を参照して、本発明によるシリアル通信システムの半二重通信方式による通信動作の詳細を説明する。図６は、本発明によるシリアル通信システムの第１の実施の形態における動作の一例を示すタイミングチャートである。第１の実施の形態では、待機期間Ｔｓは予め設定されており、ストップビットの検出（データ１００の受信完了）に応じて待機期間Ｔｓの開始時刻が設定される（開始時刻の設定に応じて待機期間の終了時刻も決定する）。図６を参照して、予め設定された待機期間Ｔｓ中にＣＰＵ１４から送信データが出力された場合のシリアル通信システムの動作を説明する。
【００３７】
ここでは、ノード１から送信されたデータ１００の受信に応じて送信データ２００を送出するノード２の動作について説明する。ノード１は、スタートビット、データビット（８ビット）、ストップビットを含むフレームデータ（データ１００）を通信バス１０に送出する。時刻Ｔ１において、ノード２はストップビットを検出する。この際、ハイレベルの受信完了通知信号１０２が待機制御回路４０にセットされる。時刻Ｔ２において、待機制御回路４０には、受信完了通知信号１０２に応じてハイレベルの待機制御信号１０３がセットされる。これによりデータ送信の待機期間が設定される。本実施の形態では、待機制御信号１０３は、予め設定された期間（待機期間Ｔｓ）ハイレベルにセットされる。すなわち、時刻Ｔ２から待機期間Ｔｓだけ経過した時刻Ｔ５が待機期間の終了時刻となる。
【００３８】
一方、ストップビットの受信が検出されると、受信完了割込みが発生し、時刻Ｔ３においてＣＰＵ１４から送信データ２００が送信シフトレジスタ（送信バッファ）３２に出力されるとともに、アドレス検出回路４１を介して送信要求信号１０４が出力される。この際、アドレス検出回路４１は、送信シフトレジスタ３２への書き込みアドレスが第１アドレスであることを検出し、検出結果を待機制御回路４０に通知する。これにより待機制御回路４０は、待機期間中に入力される送信要求信号１０４を待機させる制御を行なう。詳細には、送信要求信号１０４の出力された時刻Ｔ３が待機期間Ｔｓ内である場合、すなわち、待機期間Ｔｓ中にＣＰＵ１４からデータ２００が出力された場合、待機制御回路４０は、送信要求信号１０４の立下り時刻Ｔ４から待機期間Ｔｓが終了する時刻Ｔ５までの間（期間Ｔｗ）、送信要求信号１０４を待機させた後、送信開始信号１０５として送信制御回路３１に出力する。
【００３９】
時刻Ｔ６において、送信制御回路３１は、送信開始信号１０５に応じて送信シフトレジスタ３２に書き込まれた送信データ２００を送信端子１１から通信バス１０上に送出させる。ノード１から送出された通信バス１０上のストップビットは、時刻Ｔ６においてデータ２００のスタートビットに置き換わるが、そのデータ幅は、待機期間Ｔｓ以上となる。ここで、待機期間Ｔｓを１ビット長以上に設定することで、データ１００のストップビットのビット長Ｔｓｔを１ビット長以上とすることができる。すなわち、本発明によれば、データ１００の受信完了に応じてデータ２００を送信しても、データ１００のストップビットのデータ幅を短縮させることがない。これにより、ノード２と他のノード３とのサンプリングタイミングに大きな誤差（許容範囲内の誤差）があっても、ストップビットのデータ長が１ビット以上確保され、ノード３は受信エラーを起こすことなくデータ１００を受信することができる。
【００４０】
又、本発明では、ＣＰＵ１４から送信シフトレジスタ３２に書き込まれたデータ２００を所定の期間Ｔｗ待機している。このため、ＣＰＵ１４は、受信完了後速やかに出力される受信完了割込み信号に応じて、送信データの準備及び出力処理を行なうことができる。すなわち、ＣＰＵ１４は、受信完了後すぐに送信データを送信するための割込み処理を行なうことが可能となる。従来問題となっていたＣＰＵの処理効率の低下や、データの受信から送信までにかかる時間の長大化を解消することができる。
【００４１】
更に、本発明によるシリアル通信装置２では、送信シフトレジスタ３２に２つのアドレスを割り当て、書き込みアドレスの相違に応じて、全二重通信方式と半二重通信方式とを切り換えている。例えば、全二重通信方式用の第２アドレスにアクセスがある場合、待機制御回路４０は、待機期間Ｔｓの有無に関わらず送信要求信号１０４をそのまま送信開始信号１０５として送信制御回路３１に出力する。これにより、ノード２は、データの受信完了の有無に関わらず、ＣＰＵ１４からの送信データ２００を送出し全二重通信を行なうことが可能となる。
【００４２】
図７は、本発明によるシリアル通信システムの第１の実施の形態における動作の他の一例を示すタイミングチャートである。図７を参照して、予め設定された待機期間Ｔｓが経過した後にＣＰＵ１４から送信データが出力された場合のシリアル通信システムの動作を説明する。
【００４３】
ここでは、図６と同様に、ノード１は、スタートビット、データビット（８ビット）、ストップビットを含むフレームデータ（データ１００）を通信バス１０に送出する。時刻Ｔ１において、ノード２はストップビットを検出する。この際、ハイレベルの受信完了通知信号１０２が待機制御回路４０にセットされる。時刻Ｔ２において、待機制御回路４０には、受信完了通知信号１０２に応じてハイレベルの待機制御信号１０３がセットされる。これによりデータ送信の待機期間が設定される。本実施の形態では、待機制御信号１０３は、予め設定された期間（待機期間Ｔｓ）ハイレベルにセットされる。すなわち、時刻Ｔ２から待機期間Ｔｓだけ経過した時刻Ｔ３が待機期間の終了時刻となる。
【００４４】
ストップビットの受信が検出されると、受信完了割込みが発生し、時刻Ｔ４においてＣＰＵ１４から送信データ２００が送信シフトレジスタ（送信バッファ）３２に出力されるとともに、アドレス検出回路４１を介して送信要求信号１０４が出力される。この際、アドレス検出回路４１は、送信シフトレジスタ３２への書き込みアドレスが第１アドレスであることを検出し、検出結果を待機制御回路４０に通知する。これにより待機制御回路４０は、待機期間中に入力される送信要求信号１０４を待機させる制御を行なう。
【００４５】
ここで、送信要求信号１０４の出力された時刻Ｔ４が、待機期間Ｔｓの終了後である場合、すなわち、待機期間Ｔｓの経過後にＣＰＵ１４からデータ２００が出力された場合、待機制御回路４０は、送信要求信号１０４を待機させずに（スルーして）送信開始信号１０５として送信制御回路３１に出力する。
【００４６】
時刻Ｔ５において、送信制御回路３１は、送信開始信号１０５に応じて送信シフトレジスタ３２に書き込まれた送信データ２００を送信端子１１から通信バス１０上に送出させる。すなわち、本発明では、ＣＰＵ１４からのデータ２００の送出が、所定の期間（待機期間Ｔｓ）だけ経過した後に行なわれた場合、データ２００を待機させずに通信バス１０に送出することができる。この場合も、ノード１から送出された通信バス１０上のストップビットは、時刻Ｔ５においてデータ２００のスタートビットに置き換わるが、そのデータ幅は、待機期間Ｔｓ以上となる。ここで、待機期間Ｔｓを１ビット長以上に設定することで、データ１００のストップビットのビット長Ｔｓｔは、１ビット長以上となる。
【００４７】
又、ＣＰＵ１４は割込み信号が入力されるとすぐにその割込み信号に応じた処理を行なうとは限らず、データ２００を送出してもストップビットのビット長Ｔｓｔは１ビット以上を確保している場合がある。このような場合、本発明では、受信割込み信号及びＣＰＵ１４からの出力されたデータ２００も遅延させていないため、受信からＣＰＵ１４によるデータ２００の送信まで最短の時間で処理することができる。このため、ストップビットのビット長Ｔｓｔが充分確保されている場合、データの送信を従来よりも早めることができ、通信バス効率を向上させることができる。更に、近年では、様々な周辺機器が追加されており、割込み処理も多様化している。
【００４８】
以上のように、本発明では、データ１００の受信からデータ２００の送出までの間、ＣＰＵ１４の処理を遅滞させることがないため、ＣＰＵの処理効率を向上させることができる。例えば、受信データの１フレームが、データ（８ビット）、スタートビット（１ビット）、ストップビット（１ビット）で構成されている場合、従来技術では利用できなかった１フレームに対して１割の時間を送信データの準備及び送信に利用できる。又、本発明では、受信完了時を基準として終了時刻が決まる待機期間Ｔｓ内にＣＰＵ１４から送出されたデータを待機させ、待機期間Ｔｓ経過後に送出させたデータを遅滞なく送信する。これにより、ＣＰＵ１４の処理に関わらず設定可能な待機期間Ｔｓ以上に通信バス１０上のストップビットのビット長Ｔｓｔを効率良く確保することができる。
【００４９】
更に、本発明では、アドレスを用いて全二重通信方式と半二重通信方式との切り換えが行なわれる。このため、従来技術によるモード切り替えと異なり、送信シフトレジスタ３２（送信バッファ）に割り当てるアドレスを変更するだけで、ソフトウェアの大幅な変更を必要としない。ソフトウェアを改良する場合、ノード毎に対応する変更を必要とするとともにシステム全体に整合した改良を行なう必要がある。このため、ソフトウェアの改良には多くのコストを要する。本発明では簡易な変更によって半二重通信と全二重通信を切り換え可能なシリアル通信システムを提供できるため、開発コストを削減することができる。
【００５０】
２．第２の実施の形態
図８を参照して、本発明によるシリアル通信システムの第２の実施の形態における動作を説明する。図８は、本発明によるシリアル通信システムの第２の実施の形態における動作を示すタイミングチャートである。第２の実施の形態におけるシリアル通信システムの構成は第１の実施の形態と同様であるので説明は省略する。第２の実施の形態では、スタートビットの検出（データ１００の受信開始）に応じて待機期間Ｔｓの開始時刻が設定され、ストップビットの検出（データ１００の受信完了）に応じて待機期間Ｔｓの終了時刻が設定される。
【００５１】
ここでは、図６と同様に、ノード１は、スタートビット、データビット（８ビット）、ストップビットを含むフレームデータ（データ１００）を通信バス１０に送出する。時刻Ｔ１において、受信制御回路２１はスタートビットを検出し、受信スタート信号１０７を割込み制御回路Ｕ１及び待機制御回路４０に出力する。この際、ハイレベルの受信スタート信号１０７が待機制御回路４０にセットされる。時刻Ｔ２において、待機制御回路４０には、受信スタート信号１０７に応じてハイレベルの待機制御信号１０３がセットされる。これによりデータ送信の待機期間の開始時刻が設定される。すなわち、時刻Ｔ２が待機期間の開始時刻となる。尚、受信制御回路２１は受信スタート信号１０７に替えてフラグによって受信開始を待機制御回路４０に通知しても良い。
【００５２】
本実施の形態では、ＣＰＵ１４は、受信完了割込みに関係なく送信データ２００を生成及び出力しても構わない。例えば、ノード１から送信データ１００が送信されている途中の時刻Ｔ３において、ＣＰＵ１４から送信データ２００が送信シフトレジスタ（送信バッファ）３２に出力されるとともに、アドレス検出回路４１を介して送信要求信号１０４が出力されても良い。この場合、第１の形態と同様に、アドレス検出回路４１は、送信シフトレジスタ３２への書き込みアドレスが第１アドレスであることを検出し、検出結果を待機制御回路４０に通知する。これにより待機制御回路４０は、待機期間中に入力される送信要求信号１０４を待機させる制御を行なう。すなわち、待機期間Ｔｓ中にＣＰＵ１４からデータ２００が出力された場合、待機制御回路４０は、送信要求信号の立下り時刻Ｔ４から待機期間Ｔｓが終了する時刻Ｔ７までの間（期間Ｔｗ）、送信要求信号１０４を待機させた後、送信開始信号１０５として送信制御回路３１に出力する。
【００５３】
時刻Ｔ５において、ノード２はストップビットを検出する。この際、ハイレベルの受信完了通知信号１０２が待機制御回路４０にセットされる。時刻Ｔ６において、待機制御回路４０には、受信完了通知信号１０２に応じてハイレベルの待機制御信号１０３がセットされる。これによりデータ送信の待機期間Ｔｓの終了時刻が設定される。本実施の形態では、待機制御信号１０３は、受信完了通知信号１０２の立下り時刻Ｔ６から予め設定された期間Ｔｅ後の時刻Ｔ７が待機期間Ｔｓの終了時刻として設定される。
【００５４】
時刻Ｔ７において、送信制御回路３１は、送信開始信号１０５に応じて送信シフトレジスタ３２に書き込まれた送信データ２００を送信端子１１から通信バス１０上に送出させる。ノード１から送出された通信バス１０上のストップビットは、時刻Ｔ７においてデータ２００のスタートビットに置き換わるが、そのデータ幅は、期間Ｔｅ以上となる。ここで、期間Ｔｅを１ビット長以上に設定することで、データ１００のストップビットのビット長Ｔｓｔを１ビット長以上とすることができる。すなわち、本発明によれば、データ１００の受信完了に応じてデータ２００を送信しても、データ１００のストップビットのデータ幅を短縮させることがない。これにより、ノード２と他のノード３とのサンプリングタイミングに大きな誤差（許容範囲内の誤差）があっても、ストップビットのデータ長が１ビット以上確保され、ノード３は受信エラーを起こすことなくデータ１００を受信することができる。
【００５５】
又、本実施の形態において、待機期間Ｔｓが経過した後にＣＰＵ１４から送信データが出力された場合でも、図７に示す一例と同様に、ＣＰＵ１４からの出力されたデータ２００を遅延させずに通信バス１０に送出することができる。又、第１の実施の形態と同様に送信シフトレジスタ３２に２つのアドレスを割り当てることで半二重通信と全二重通信を切り換えることができる。
【００５６】
以上のように、本実施の形態におけるシリアル通信システムは、データの受信が完了する前でもＣＰＵ１４による送信データ２００の準備及び出力を行なうことができる。これにより、更にＣＰＵ１４の処理効率を向上させることができる。
【００５７】
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。上述の実施の形態では、半二重通信方式と全二重通信方式とを切り換え可能なシステムについて説明したが、半二重通信方式のみを利用するシリアル通信システムにも適用できる。又、待機制御回路４０は、受信完了通知信号１０２に応じて待機期間の終了時刻を設定しているが、割込み制御回路Ｕ１からの受信割込み信号に応じて設定しても良い。
【符号の説明】
【００５８】
１〜３：ノード
１０：通信バス（データバス）
１１：受信端子
１２：送信端子
１３：通信バス
１４：ＣＰＵ
２１：受信制御回路
２２：受信シフトレジスタ
２３：受信バッファ
２４：受信サンプリング生成回路
３１：送信制御回路
３２：送信シフトレジスタ
３３：送信タイミング生成回路
３４：ボーレートジェネレータ
４０：待機制御回路（Ｗａｉｔ  Ｔｉｍ制御回路）
４１：アドレス検出回路（アドレスチェック）
１００：データ（受信データ、ノード１の送信データ）
１０１：受信サンプリング信号
１０２：受信完了通知信号
１０３：待機制御信号
１０４：送信要求信号
１０５：送信開始信号
１０７：受信スタート信号
２００：データ（送信データ）
Ｕ１：割込み制御回路
Ｕ２：受信ユニット
Ｕ３：送信ユニット
【図１】
2010178199.tif 000003
【図２】
2010178199.tif 000004
【図３】
2010178199.tif 000005
【図４】
2010178199.tif 000006
【図５】
2010178199.tif 000007
【図６】
2010178199.tif 000008
【図７】
2010178199.tif 000009
【図８】
2010178199.tif 000010