(57)【特許請求の範囲】
【請求項１】
マスタと、このマスタにバスを介して接続される複数のスレーブとの間で非同期通信を行うもので、
前記マスタが通信の開始を示すと、各スレーブは、前記通信開始の時点を基点として割り当てられている夫々のデータ送信期間において、前記バスをドライブするか否かで示される複数のデータビットを前記マスタに送信すると共に、
前記データ送信期間において各データビットが送信される間に、前記マスタが前記バスをドライブして電源を供給する期間が挿入されている通信プロトコルを採用する通信システムにおいて、
前記スレーブは、データビットを送信する期間の末尾に、前記バスのドライブを停止する非ドライブ期間を設けるように構成され、
前記マスタが、前記通信の開始を示す際に、通信レートの設定を提示すると、
前記スレーブは、前記通信レートの設定に応じて前記非ドライブ期間の長さを設定することを特徴とする通信システム。
【請求項２】
前記スレーブは、
少なくとも自身のデータ送信期間の開始からカウント動作を開始し、前記マスタが前記電源を供給している期間に応じてアップカウント動作を行ない、自身がデータビットを送信する期間に応じてダウンカウント動作を行なうアップダウンカウンタを備え、
前記アップダウンカウンタのダウンカウント値がしきい値に達すると、前記バスのドライブを停止するように構成されていることを特徴とする請求項１記載の通信システム。
【請求項３】
前記スレーブは、
前記バスの電圧を監視する電圧監視手段を備え、
前記マスタによる前記電源の供給が停止することで、前記バスの電圧が所定レベルまで低下すると、前記アップダウンカウンタの動作をダウンカウントに切り替えるように構成されていることを特徴とする請求項２記載の通信システム。
【請求項４】
前記スレーブは、前記アップダウンカウンタの動作をダウンカウントに切り替える場合のカウント値の差を各データビット毎に検出し、その差が所定値以上になった場合は、前記マスタに送信期間異常を伝達することを特徴とする請求項３記載の通信システム。
【請求項５】
前記スレーブは、
前記マスタにより供給される前記電源により充電が行なわれるコンデンサと、
このコンデンサを充電する場合の時定数が、当該コンデンサを放電させる場合の時定数よりも大きくなるように設定される時定数回路とを備え、
自身のデータ送信期間において、前記マスタが前記電源を供給している期間に前記コンデンサを充電し、自身がデータビットを送信する期間に前記コンデンサを放電させるように制御して、その放電時における前記コンデンサの端子電圧がしきい値以下になると、前記バスのドライブを停止するように構成されていることを特徴とする請求項１記載の通信システム。
【請求項６】
前記スレーブは、
前記バスの電圧を監視する電圧監視手段を備え、
前記マスタによる前記電源の供給が停止することで、前記バスの電圧が所定レベルまで低下すると、前記コンデンサの放電を開始させることを特徴とする請求項５記載の通信システム。
【請求項７】
前記スレーブは、前記電圧監視手段によって前記バスのドライブ電圧を監視し、当該ドライブ電圧が許容範囲を外れた場合は、前記マスタにドライブ電圧異常を伝達することを特徴とする請求項３，４又は６の何れかに記載の通信システム。
【請求項８】
前記スレーブは、前記電圧監視手段によって監視される前記データビット送信期間におけるバス電圧が干渉レベルであると判定すると、前記マスタに通信エラーの発生を伝達することを特徴とする請求項３，４，６，７の何れかに記載の通信システム。
【請求項９】
前記スレーブは、前記電圧監視手段によって監視される前記データビット送信期間におけるバス電圧が干渉レベルであると判定すると、前記非ドライブ期間がより長くなるように調整することを特徴とする請求項３，４，６乃至８の何れかに記載の通信システム。
【請求項１０】
前記スレーブは、前記バスに流れる電流を監視する電流監視手段を備え、
前記電流監視手段によって監視される前記データビット送信期間におけるバス電流の変化に基づきレベル干渉が発生したと判定すると、前記マスタに通信エラーの発生を伝達することを特徴とする請求項１乃至９の何れかに記載の通信システム。
【請求項１１】
前記スレーブは、前記電流監視手段によって監視される前記データビット送信期間におけるバス電流の変化に基づきレベル干渉が発生したと判定すると、前記非ドライブ期間がより長くなるように調整することを特徴とする請求項１０記載の通信システム。
【請求項１２】
前記スレーブは、前記非ドライブ期間を調整した結果、当該期間の長さが上限を超えた場合は、前記マスタに通信エラーの発生を伝達することを特徴とする請求項９，１１記載の通信システム。
【請求項１３】
前記スレーブは、前記データビット送信期間にドライブレベルの干渉が発生しない状態が所定回数継続すると、前記非ドライブ期間を短縮するように調整することを特徴とする請求項４乃至１２の何れかに記載の通信システム。
【請求項１４】
前記スレーブは、前記マスタが前記通信開始を示した時点から、前記バス上で送信されたデータビット数をカウントすることで自身のデータ送信期間の開始を判定することを特徴とする請求項１乃至１３の何れかに記載の通信システム。
【請求項１５】
請求項１乃至１４の何れかに記載の通信システムにおいて、前記スレーブとして使用されることを特徴とする通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マスタと、このマスタにバスを介して接続される複数のスレーブとの間で非同期通信を行う通信システム、及びその通信システムでスレーブとして使用される通信装置に関する。
【背景技術】
【０００２】
車両内部の配線で使用される通信プロトコルの１つとして、ＳｂＷ（Safe by Wire）がある。ＳｂＷは、例えばエアバッグ制御のように、断線が発生する可能性を低下させることが好ましいものに適用するため、電源の供給並びに通信を２本の配線のみで行うようにしたプロトコルである。
図１４には、１つのマスタ（例えば、車両用のＥＣＵ）１と、複数のスレーブ２（１〜６７）とを、バス３（＋，−）を介して列状に接続した構成を示す。尚、各スレーブ２の内部に存在するスイッチ４は、後続のスレーブ２に故障が発生した場合に、当該スレーブ２に対するバス３の接続を切り離し、正常なスレーブ２のみで通信を続行するために設けられている。
【０００３】
また、図１５には、ＳｂＷによる通信でデータを送信する場合に、マスタ１若しくはスレーブ２がバス３をドライブする場合の電圧波形を示す。ＳｂＷでは、マスタ１は、先ずPower Phaseにおいてバス３を電圧レベルＶＬＰでドライブすることで、各スレーブ２に動作用電源を供給する。そして、Power Phaseに続くData Phaseが、マスタ１若しくはスレーブ２が１ビットのデータを送信する期間となる。
Data Phaseにおいてマスタ１がデータを送信する場合は、バス３を電圧レベルＶＬ０，ＶＬ１の何れかにドライブする。これらの電圧レベルは、夫々データ「０，１」に対応する。また、スレーブ２がデータを送信する期間では、マスタ１はData Phaseでバス３を電圧レベルＶＬ０にドライブする。尚、Power Phase，Data Phaseの期間長は、等しくなるように規定されている。
【０００４】
この時、スレーブ２側がバス３をドライブしなければ電圧レベルはＶＬ０のままとなり、データ「０」を送信したことになる。そして、スレーブ２側がバス３を電圧レベルがＶＬ０よりも低いＶＬ１にドライブすれば、データ「１」を送信したことになる。また、スレーブ２側がバス３を電圧レベルがＶＬ１よりも低いＶＬＳ０にドライブした場合は、マスタ１に対して割り込みを発生させることを意味する。
【０００５】
また、図１６には、マスタ１−スレーブ２間におけるデータ通信の一例を示す。マスタ１は、その時点での通信レートにおける１ビット期間（Power Phase＋Data Phase）の２倍の長さで、バス３をＶＬＰ，ＶＬ０にドライブすることで、通信の開始を示すＳＯＦ（Start Of Frame）を送信する。スレーブ２は、バス３にＳＯＦが送信されたことにより、各々が通信の開始を認識する。
それから、マスタ１は通信モードを指定するため、ＭＳＡ，ＳＥＬの２データビットを送信すると、以降はスレーブ２側がデータを送信する期間となる。即ち、Slot1＿data及びそれに続くＣＲＣは、マスタ１（１）のデータ送信期間であり、ＣＲＣ（Cyclic Redundancy Check）は、Slot1＿dataについて付された誤り検出符号である。以降同様に、他のスレーブ２により、Slot2＿data，Slot3＿data，・・・Slot＿n＿dataが順次送信される。
【０００６】
マスタ１は、バス３に接続されているスレーブ２の個数を予め知っているので、全てのスレーブ２に応じたビット数のデータが送信されると、一連の通信は終了することになる。以上のように、ＳｂＷでは、２本のバス３（＋，−）によって１データビットを送信する間に、スレーブ１がPower Phaseで電源を供給するので、２本のバス３だけで電源供給も可能なシリアル通信システムを構成することができる。
【０００７】
この通信システムを車両に搭載されるエアバッグ装置に適用することを想定すると、複数のスレーブ２が、車両の各部に配置されている加速度センサに対応する。そして、何れかの加速度センサが事故の衝撃を検出すると、その検出信号がスレーブ２からマスタ１に送信される。すると、マスタ１は、図示しないエアバッグ装置のインフレータに点火指令を出力してガスを発生させ、エアバッグを展開させる。
尚、ＳｂＷは、未だ余り普及が進んでいない技術であるため、出願人は提示すべき適切な先行技術文献を見つけることはできなかった。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
以上の通信システムでは、マスタ１がバス３をドライブして電源を供給するPower Phaseと、スレーブ２がバス３をドライブできるData Phaseとが交互に繰り返されるようになっている。そして、バス３上には、マスタ１により通信の開始を示すＳＯＦが出力されるだけであり、それ以降に各スレーブ２が同期をとるためのタイミング信号は出力されない。即ち、マスタ１が開始する通信に対して、各スレーブ２がどのように同期をとるかについては規格で定められておらず、基本的には非同期の通信方式となっている。
【０００９】
従って、スレーブ２は、夫々独自にPower Phase，Data Phaseに相当する期間長さを計測して自身のデータ送信期間が到来したことを判定し、Data Phaseにおいてバス３をドライブするようになっている。そのため、スレーブ２が行なっている時間計測にずれがあると、Data Phaseの末尾と、それに続くPower Phaseの冒頭とが重複することが想定される。その場合、スレーブ２がData Phaseでバス３をＶＬ１，ＶＬＳ０の何れかにドライブした後、マスタ１がPower Phaseでバス３をＶＬＰにドライブすると、上記重複期間においてバス３のドライブレベルが干渉して通信が失敗することが考えられる（図１７参照）。
【００１０】
本発明は上記事情に鑑みてなされたものであり、その目的は、マスタとバスを介して接続される複数のスレーブとの間で非同期通信を行う場合に、バスのドライブレベルの干渉を回避することができる通信システム、及びその通信システムでスレーブとして使用される通信装置を提供することにある。
【課題を解決するための手段】
【００１１】
請求項１記載の通信システムによれば、データ送信期間で各データビットが送信される間に、マスタがバスをドライブして電源を供給する期間が挿入されている通信プロトコルを採用する場合に、スレーブは、データビット送信期間の末尾にバスのドライブを停止する非ドライブ期間を設ける。従って、スレーブ側における通信タイミングの把握にずれがある場合でも、非ドライブ期間によってマージンを持たせることができるので、マスタとの間でバスのドライブ期間が重複することを回避できる。
【００１２】
そして、スレーブは、マスタが通信の開始を示す際に提示する通信レートの設定に応じて非ドライブ期間の長さを設定するので、通信レートに応じて非ドライブ期間が適切となるように、例えば、通信レートが高くなるほど非ドライブ期間が短くなるように調整することができる。
【００１３】
請求項２記載の通信システムによれば、スレーブは、自身のデータ送信期間の開始時点でアップダウンカウンタにカウント動作を開始させ、アップダウンカウンタは、マスタが電源を供給する期間にアップカウント動作を行ない、スレーブのデータビット送信期間にダウンカウント動作を行なう。そして、スレーブは、上記カウンタのダウンカウント値がしきい値に達するとバスのドライブを停止する。
即ち、アップダウンカウンタがアップカウント，ダウンカウントを行う期間は等しいので、マスタによる電源供給期間とスレーブによるデータビット送信期間との等時性は確保される。そして、ダウンカウント動作により漸減するカウント値はデータビット送信期間の残り時間を示すので、そのカウント値が所定の値に達した時点からバスのドライブを停止すれば、マスタとのドライブレベルの干渉をより確実に回避することができる。
【００１４】
請求項３記載の通信システムによれば、スレーブは、マスタによる電源供給が停止することで、電圧監視手段により監視されるバス電圧が所定レベルまで低下すると、アップダウンカウンタの動作をダウンカウントに切り替える。従って、マスタによる電源供給期間が停止したことを確実に認識してからデータビットの送信を開始させることができる。
【００１５】
請求項４記載の通信システムによれば、スレーブは、アップダウンカウンタの動作をダウンカウントに切り替える場合のカウント値の差を各データビット毎に検出し、その差が所定値以上になった場合はマスタに送信期間異常を伝達する。即ち、アップダウンカウンタによる最大カウント値が各データビット毎に異なるとすれば、マスタによる電源供給期間が異なること、つまり１ビットデータの送信期間が異なることを意味する。従って、上記カウント値の差が大きくなった場合はマスタによる通信タイミングの管理に異常があることが想定されるので、その旨をマスタに伝達して対処させることができる。
【００１６】
請求項５記載の通信システムによれば、スレーブは、時定数回路を介して、自身のデータ送信期間においてマスタが電源を供給している期間にコンデンサを充電し、自身がデータビットを送信する期間にコンデンサを放電させるように制御する。そして、時定数回路は、充電時定数が放電時定数よりも大きくなるよう設定されているので、放電時のコンデンサ端子電圧がしきい値以下になった場合にバスのドライブを停止すれば、充放電時間の差によって非ドライブ期間を確保することができる。
【００１７】
請求項６記載の通信システムによれば、スレーブは、マスタによる電源供給が停止してバスの電圧が所定レベルまで低下すると、コンデンサの放電を開始させるので、コンデンサの充放電を適切なタイミングで切換えることができる。
【００１８】
請求項７記載の通信システムによれば、スレーブは、バスのドライブ電圧が許容範囲を外れた場合はマスタにドライブ電圧異常を伝達する。即ち、上記ドライブ電圧が低下しているとすれば、例えばマスタ、或いはスレーブが備えているドライバに問題があったり、システムの電源電圧自体に異常があることなどが推定される。従って、その旨をマスタに伝達して対処させることができる。
【００１９】
請求項８記載の通信システムによれば、スレーブは、データビット送信期間におけるバス電圧が干渉レベルであると判定するとマスタに通信エラーの発生を伝達するので、マスタ−スレーブ間におけるドライブレベルの干渉が発生したことをマスタに報知することができる。
【００２０】
請求項９記載の通信システムによれば、スレーブは、データビット送信期間におけるバス電圧が干渉レベルであると判定すると、非ドライブ期間がより長くなるように調整するので、マスタ−スレーブ間におけるドライブレベルの干渉発生を回避するように調整を行なうことができる。
【００２１】
請求項１０記載の通信システムによれば、スレーブは、データビット送信期間におけるバス電流の変化に基づきレベル干渉が発生したと判定すると、マスタに通信エラーの発生を伝達する。即ち、マスタ−スレーブ間でドライブレベルの干渉が発生した場合には、バスに流れる電流が急激に上昇するように変動するので、請求項７と同様の効果が得られる。
【００２２】
請求項１１記載の通信システムによれば、スレーブは、データビット送信期間におけるバス電流の変化に基づきレベル干渉が発生したと判定すると、非ドライブ期間がより長くなるように調整するので、請求項９と同様の効果が得られる。
【００２３】
請求項１２記載の通信システムによれば、スレーブは、非ドライブ期間を調整した結果、当該期間の長さが上限を超えた場合は、マスタに通信エラーの発生を伝達する。即ち、非ドライブ期間をある程度長くしてもバスのレベル干渉が解消されないとすれば、システム上に何らかの解消し難い問題が生じていると想定されるので、マスタにその旨を伝達して通信を停止させるなどの処置を取ることができる。
【００２４】
請求項１３記載の通信システムによれば、スレーブは、データビット送信期間にドライブレベルの干渉が発生しない状態が所定回数継続すると、非ドライブ期間を短縮するように調整する。即ち、場合によっては非ドライブ期間を不要に長く設定していることも想定される。すると、スレーブがデータをドライブする期間が侵食されて、マスタに対してデータを正常に送信できなくなるおそれがある。従って、上記のように非ドライブ期間を短縮する方向にも調整可能とすれば、非ドライブ期間の最適化を図ることができる。
【００２５】
請求項１４記載の通信システムによれば、スレーブは、マスタが通信開始を示した時点から、バス上で送信されたデータビット数をカウントすることで自身のデータ送信期間の開始を判定するので、当該期間が開始されるまでは詳細な時間計測を行う必要が無く、構成を簡単にすることができる。
【発明を実施するための最良の形態】
【００２６】
（第１実施例）
以下、本発明の通信システムをＳｂＷに適用した第１実施例について図１乃至図４を参照して説明する。尚、図１４と同一部分には同一符号を付して説明を省略し、以下異なる部分についてのみ説明する。図３は、本実施例におけるスレーブ（通信装置）１１の構成を、本発明の要旨に係る部分について概略的に示す機能ブロック図である。
シリアル通信用のバス３（＋），３（−）の間には、電圧監視回路（電圧監視手段）１２が接続されている。この電圧監視回路１２は、マスタ１がドライブするバス３の電圧を監視することで、スレーブ１１が通信タイミングを把握するための情報を得るもので、電圧レベル比較用のコンパレータなどを内蔵して構成されている。そして、電圧監視回路１２は、バス３のドライブレベルが正常か否かを監視し、その監視結果をＣＰＵ（マイクロコンピュータ）１３に対して出力する。
【００２７】
また、電圧監視回路１２は、データカウント用の電圧しきい値ＶDCをＶＬ０よりも若干高いレベルに設定しており、バス３の電圧レベルの立ち上がりがしきい値ＶDCを超える毎に、ワンショットパルスをデータカウンタ１４に出力するようになっている。更に、電圧監視回路１２は、バス３の電圧レベルがＶＬＰを維持している間はアップダウンカウンタ１５に出力するＵ／Ｄ切替え信号をハイレベルにする。そして、マスタ１がPower Phaseにおけるバス３のドライブを停止することで、上記電圧レベルがＶＬＰから所定値だけ低下すると、Ｕ／Ｄ切替え信号をハイからロウに変化させる。
【００２８】
アップダウンカウンタ１５は、データカウンタ１４により与えられるカウントイネーブル信号（ＣＥ２）がアクティブである場合に、クロック回路１６により出力されるカウントクロック信号に基づきカウント動作を行なう。そして、上記Ｕ／Ｄ切替え信号がハイレベルの期間はアップカウント動作を行ない、Ｕ／Ｄ切替え信号がロウレベルの期間はダウンカウント動作を行なうようになっている。
【００２９】
ＣＰＵ１３は、通信ドライバ／レシーバ１７を介してバス３をドライブすることでマスタ１にデータを送信すると共に、マスタ１より送信されたデータを通信ドライバ／レシーバ１７を介して受信する。尚、マスタ１がPower Phaseにおいて送信した電力は、図示しない電源回路において平滑され、スレーブ１１の各部に動作用電源として供給されるようになっている。
【００３０】
また、ＣＰＵ１３は、通信ドライバ／レシーバ１７を介してマスタ１がバス３上にＳＯＦを送信したことを検出すると、データカウンタ１４に与えるカウントイネーブル信号（ＣＥ１）をアクティブにするようになっている。すると、データカウンタ１４は、電圧監視回路１２により与えられるパルスのカウント、即ち、ＳＯＦの出力時点からバス３上で送信されたデータ数のカウントを開始する。そして、そのカウント値が、スレーブ１１のデータ送信期間の開始に相当する値になると、アップダウンカウンタ１５に与えるカウントイネーブル信号（ＣＥ２）をアクティブにするようになっている。尚、このカウントイネーブル信号（ＣＥ２）は、ＣＰＵ１３並びにＡＮＤゲート１８の入力端子の一方にも与えられている。
【００３１】
一致回路１９は、マグニチュードコンパレータで構成されており、アップダウンカウンタ１５のカウント値と設定値レジスタ２０にセットされたデータ値とを比較し、両者が一致すると通信ドライバ／レシーバ１７にＨｉ−Ｚ指令を出力するようになっている。通信ドライバ／レシーバ１７は、Data Phaseにおいてバス３をＶＬ０，ＶＬ１，ＶＬＳ０の何れかにドライブしている状態でＨｉ−Ｚ指令が与えられると、その時点でドライブを中止して出力をハイインピーダンス状態とするようになっている。
但し、一致回路１９は、上記比較動作を、ＡＮＤゲート１８より与えられる比較イネーブル信号（ＣＰＥ）がアクティブである場合に行う。尚、設定値レジスタ２０には、ＣＰＵ１３が適当なデータを書き込んでセットする。ＡＮＤゲート１８のもう一方の負論理入力端子には、電圧監視回路１２からのＵ／Ｄ切替信号が与えられている。
【００３２】
次に、本実施例の作用について図１，図２及び図４も参照して説明する。図４は、スレーブ１１のＣＰＵ１３によって行われる制御の内、本発明の要旨に係る部分を示すフローチャートである。ＣＰＵ１３は、先ず、マスタ１によってバス３上にＳＯＦが送信されるまで待機しており（ステップＳ１）、ＳＯＦが送信されて通信が開始されると（「ＹＥＳ」）バス３上の通信波形を参照して通信レートを判定し、その通信レートに応じたしきい値を設定値レジスタ２０に書き込んでセットする（ステップＳ１ａ）。
【００３３】
ここでは、例えばＳＯＦ等のパルス幅を計測することで実際の通信レート（ビットレート）を判定することができる。一例として、通信レートが２００ｋｂｐｓに設定されている場合、１ビットの送信期間は５μｓとなる。そして、Data Phaseはその１／２の２．５μｓであるから、その１／１０である０．２５μｓに相当するカウント値（即ち、クロック回路１６が出力するカウントクロックに応じた）のデータを設定値レジスタ２０にセットする。
【００３４】
続いて、ＣＰＵ１３は、マスタ１により送信される２ビットのデータを受信する（ステップＳ２）。また、ＳＯＦが送信されると、ＣＰＵ１３は、上述したようにカウントイネーブル信号（ＣＥ１）をアクティブ（ハイ）にする（図２（ａ），（ｂ）参照）。
【００３５】
次に、ＣＰＵ１３は、データカウンタ１４がカウントイネーブル信号（ＣＥ２）をアクティブにするまで待機するが（ステップＳ３，「ＮＯ」）、その間は、電圧監視回路１２による電圧監視信号を参照し、バス３のドライブレベルが適切か否かを監視する（ステップＳ４）。ここで監視するドライブレベルは、マスタ１によるドライブレベルＶＬＰ，ＶＬ０，他のスレーブによるドライブレベルＶＬ１，ＶＬＳ０であり、夫々が規格における許容範囲内にあるか否かを監視する。
【００３６】
例えば、ＶＬＰが大きく低下しているとすれば、例えばマスタ１、或いはスレーブ１１が備えているドライバに問題があったり、システムの電源電圧自体に異常があることなどが推定される。ステップＳ４において、何れのドライブレベルも正常であれば（「ＹＥＳ」）ステップＳ３に戻り、何れかに異常がある場合は（「ＮＯ」）ドライブレベルに異常があることをマスタ１に送信するように設定を行う（ステップＳ５）。即ち、マスタ１に対して割り込みを発生させるか、或いは、上記状態が発生したことをレジスタに記憶させ、自身のデータ送信期間が到来した場合に上記異常を示すメッセージを送信するように設定しておく。
【００３７】
ステップＳ３において、データカウンタ１４が所定の送信データビット数をカウントすることでカウントイネーブル信号（ＣＥ２）をアクティブにすると(「ＹＥＳ」，図２（ｃ）参照)、ＣＰＵ１３はマスタ１に対するデータの送信を開始する（ステップＳ６）。即ち、データ「０」を送信する場合はバス３をドライブせず（従って、バス３のレベルはマスタ１によりＶＬ０となる）、データ「１」を送信する場合はバス３をＶＬ１にドライブする。
【００３８】
この時、図１（ｂ）に示すように、アップダウンカウンタ１５がカウント動作を開始して、電圧監視回路１２がＵ／Ｄ切替え信号をハイレベルにしている間はアップカウントを行い、Ｕ／Ｄ切替え信号がロウレベルに変化すると、その時点からダウンカウントを行う。従って、Power Phaseにおいてマスタ１が電源供給を行っている期間は、カウンタ１５がアップカウントを行うことでPower Phaseの期間長を計測することになる。そして、マスタ１が電源供給を停止してData Phaseに移行し、カウンタ１５がダウンカウントを行なえば、そのカウント値が「０」に達するまでのカウント期間、即ちData Phaseの期間長はPower Phaseと同一になる。
【００３９】
ここで、図１（ｅ）に示すように、Data Phaseに対応してＡＮＤゲート１８が出力する比較イネーブル信号（ＣＰＥ）がアクティブとなり、一致回路１９が比較動作を行う。そして、ダウンカウント値が漸減して設定値レジスタ２０にセットされたデータ値に一致すると、一致回路１９は、通信ドライバ／レシーバ１７にＨｉ−Ｚ指令を出力する（図１（ｂ）参照）。すると、通信ドライバ／レシーバ１７が、この時点でバス３をＶＬ１レベルにドライブしていた場合、バス３のドライブを停止して出力をハイインピーダンス状態にする。従って、図１（ａ）に示すように、バス３のレベルはＶＬ１→ＶＬ０に変化し、Data PhaseからPower Phaseに移行すると、ＶＬＰに上昇する。
即ち、一致回路１９がＨｉ−Ｚ指令を出力するのはData Phaseの末尾となり（上記の例では０．２５μｓの期間）、その期間（非ドライブ期間）は、スレーブ１１によるバス３のドライブが停止されるため続くPower Phaseとの間の緩衝期間となる。
【００４０】
再び図４を参照する。以上のようにして、スレーブ１１のＣＰＵ１３は、全てのデータを送信するまで（ステップＳ８，「ＮＯ」）ステップＳ６で１ビットずつデータを送信する。その間に、ステップＳ７においてバス３のドライブレベルに干渉が発生していないかどうかを判定する。
【００４１】
即ち、上記のようにしてData Phaseの末尾にハイインピーダンス期間を設けているが、実際に行われている通信状態とのずれがあった場合は、Data Phaseのスレーブ１１によるドライブレベルと、その次のPower Phaseにおけるマスタ１のドライブレベルとが干渉する可能性もある。ドライブレベルが干渉した場合、バス３のレベルはＶＬＰとＶＬ０との間になると想定される。
従って、ＣＰＵ１３は、ステップＳ７で電圧監視回路１２の監視結果を参照することでレベル干渉が発生しているか否かを判定し、干渉が発生していなければ（「ＮＯ」）ステップＳ８に進み、干渉が発生していれば（「ＹＥＳ」）それにより通信が失敗したことを示す情報をマスタ１に送信する（ステップＳ９）。そして、設定値レジスタにセットしたデータ値をより大きくするように更新すると（ステップＳ１０）ステップＳ１に戻る。
【００４２】
以上のように本実施例によれば、ＳｂＷを採用した通信システムにおいて、スレーブ１１は、データビット送信期間であるData Phaseの末尾にバス３のドライブを停止する非ドライブ期間を設けるようにした。従って、スレーブ１１側における通信タイミングの把握にずれがある場合でも、非ドライブ期間によりマージンを持たせることができるので、マスタ１との間でバス３のドライブ期間が重複することを回避できる。
また、スレーブ１１は、自身のデータ送信期間の開始時点でアップダウンカウンタ１５にカウント動作を開始させ、アップダウンカウンタ１５は、Power Phaseの間にアップカウント動作を行ない、Data Phaseの間にダウンカウント動作を行なう。そして、スレーブ１１は、カウンタ１５のダウンカウント値が、設定値レジスタ２０にセットされたしきい値に達するとバス３のドライブを停止するようにした。従って、Power PhaseとData Phaseとの等時性を確保できると共に、マスタ１とのドライブレベルの干渉をより確実に回避することができる。
【００４３】
この場合、スレーブ１１は、マスタ１がＳＯＦにより提示する通信レートの設定に応じて設定値レジスタ２０にセットするしきい値を変更することで、非ドライブ期間の長さを設定するので、通信レートに応じて非ドライブ期間が適切となるように、例えば、通信レートが高くなるほど非ドライブ期間が短くなるように調整することができる。
また、スレーブ１１は、マスタ１による電源供給が停止することで、電圧監視回路１２より監視されるバス３の電圧が所定レベルまで低下すると、アップダウンカウンタ１５の動作をダウンカウントに切り替えるので、Power Phaseが終了したことを確実に認識してからData Phaseを開始させることができる。
【００４４】
また、スレーブ１１は、バス３の各ドライブ電圧（ＶＬＰ，ＶＬ０，ＶＬ１，ＶＬＳ０）が許容範囲を外れた場合はマスタ１にドライブ電圧異常を伝達するので、その旨をマスタ１に伝達して対処させることができる。また、スレーブ１１は、Data Phaseおけるバス３の電圧が干渉レベルであると判定するとマスタ１に通信エラーの発生を伝達するので、ドライブレベルの干渉が発生したことをマスタ１に報知することができる。更にその場合、スレーブ１１は、非ドライブ期間がより長くなるように設定値レジスタ２０のデータ値を更新して調整するので、ドライブレベルの干渉が回避されるように調整することができる。
加えて、スレーブ１１は、マスタ１が通信開始を示した時点から、バス３上で送信されたデータビット数をカウントすることで自身のデータ送信期間の開始を判定するので、当該期間が開始されるまでは詳細な時間計測を行う必要が無く、構成を簡単にすることができる。
【００４５】
（第２実施例）
図５は本発明の第２実施例であり、第１実施例と同一部分には同一符号を付して説明を省略し、以下異なる部分についてのみ説明する。第２実施例の構成は、基本的に第１実施例と同様であるが、スレーブ１１においては、アップダウンカウンタ１５のアップカウント値の最大値がラッチされ、そのラッチデータをＣＰＵ１３が読み込むことができるように構成されている（図示せず）。この場合、ラッチ信号には、Ｕ／Ｄ切替信号の立下りを利用すれば良い。上記構成を前提として、ＣＰＵ１３のソフトウエアにより実現される機能が追加されている。
【００４６】
図５は、図４の一部相当図である。ＣＰＵ１３は、ステップＳ６を実行すると、カウンタ１５のアップカウント最大値を読み込む（ステップＳ１１）。このデータ値は、図示しないメモリに書き込んで記憶される。それから、ＣＰＵ１３は、メモリに記憶されている前回のカウント値と今回読み込んだカウント値との差を演算すると（ステップＳ１２）、その差が所定値以上かどうか判定する（ステップＳ１３）。そして、所定値未満であれば（「ＮＯ」）ステップＳ７に移行し、所定値以上であれば（「ＹＥＳ」）マスタ１に「送信間隔異常」を示す情報を送信し（ステップＳ１４）、ステップＳ１に戻る。
【００４７】
即ち、カウンタ１５のアップカウント最大値はPower Phaseの期間長に対応しているので、カウント最大値が１ビット毎に大きく異なるとすれば、ビットレートが一定ではなく何らかの原因によって変動していることを示している。従って、そのような異常が発生していることをマスタ１に伝達し、対処を図るようにする。
以上のように第２実施例によれば、スレーブ１１は、アップダウンカウンタ１５の動作をダウンカウントに切り替える場合のカウント値の差を各データビット毎に検出し、その差が所定値以上になった場合はマスタ１に送信期間異常を伝達するようにした。従って、通信タイミングの管理に異常があることをマスタ１に伝達して対処させることができる。
【００４８】
（第３実施例）
図６乃至図１０は本発明の第３実施例を示すものであり、第１実施例と異なる部分について説明する。図６は第１実施例の図３相当図であり、スレーブ（通信装置）２１の構成を示すものである。第３実施例のスレーブ２１は、第１実施例のスレーブ１１におけるアップ／ダウンカウンタ１５及びクロック回路１６に替えて充放電回路２２が配置され、また、一致回路１９及び設定値レジスタ２０に替えてＨｉ−Ｚ指令出力回路２３が配置されている。
そして、充放電回路２２の充放電切換え制御は、電圧監視回路１２によって、第１実施例ではアップ／ダウン切替信号として出力されていた信号により行なわれる。また、ＣＰＵ１２に替わるＣＰＵ２４は、充放電回路２２の充放電時定数を切換えるように制御する。即ち、第３実施例では、Data Phaseの末尾に非ドライブ期間を設けるためのタイミング管理を、充放電回路２２において行う充放電制御に基づいて行うようになっている。
【００４９】
図７には、充放電回路２２の構成をモデル的に示す。充放電回路２２は、充電時定数調整回路２５，放電時定数調整回路２６，コンデンサ２７及び充放電切換えスイッチ２８（Ｃ，Ｄ）で構成されている。コンデンサ２７は、バス３に供給される電源電圧が充電時定数調整回路２５を介して印加されることで充電され、その充電電荷は、放電時定数調整回路２６を介してグランドに放電されるようになっている。そして、充電時定数調整回路２５の時定数は、放電時定数調整回路２６側よりも大きくなるように設定されている。
【００５０】
図８では、充放電回路２２をより詳細に示している。充電時定数調整回路２５は、複数のＰチャネルＭＯＳＦＥＴ２９を、通信バス３（＋）と充電側スイッチ２８Ｃとの間に並列接続して構成されており、放電時定数調整回路２６は、複数のＮチャネルＭＯＳＦＥＴ３０を、放電側スイッチ２８Ｄとグランド（通信バス３（−））との間に並列接続して構成されている。そして、スイッチ２８Ｃ，２８Ｄの排他的なＯＮ，ＯＦＦ切換えは、電圧監視回路１２により出力される充放電切替信号で行なわれ、当該信号がハイレベルを示す期間は充電側スイッチ２８ＣがＯＮ，当該信号がロウレベルを示す期間は放電側スイッチ２８ＤがＯＮするようになっている。
【００５１】
また、ＣＰＵ２４は、コンデンサ２７の充電時，放電時に、充電側のＦＥＴ２９，放電側のＦＥＴ３０を夫々幾つ同時にＯＮさせるかによって、充電時定数，放電時定数を調整するようになっている。即ち、同時にＯＮさせるＦＥＴの数が増えれば、ＦＥＴのＯＮ抵抗による並列抵抗値が低下して時定数はより小さくなる。そして、コンデンサ２７の端子電圧は、指令出力回路２３並びにＣＰＵ２４によって監視されている。指令出力回路２３は、ＡＮＤゲート１８が出力イネーブル信号ＯＥ（第１実施例におけるＣＰＥ）を出力している期間内に、コンデンサ２７の放電時における端子電圧が０Ｖ付近になったことを内蔵している図示しないコンパレータにより検出すると、通信ドライバ／レシーバ１７にＨｉ−Ｚ指令を出力するようになっている。
【００５２】
次に、第３実施例の作用について図９及び図１０も参照して説明する。図９，図１０は、夫々図４，図１相当図である。ＣＰＵ２４は、ステップＳ１においてＳＯＦが送信されて通信が開始されると（「ＹＥＳ」）通信レートを判定し、その通信レートに応じた充放電時定数となるように、充放電回路２２におけるＦＥＴ２９，３０の同時ＯＮ数を設定
する（ステップＳ１ｂ）。即ち、通信レートが高ければ充放電時定数が小さくなるように設定する。そして、以降のステップＳ２〜Ｓ９は、第１実施例と同様に実行する。
【００５３】
ここで、データ送信期間となっているスレーブ２１では、充放電回路２２のコンデンサ２７は、充電時定数調整回路２５及び充電スイッチ２８Ｃを介して充電されるので、その端子電圧は、図１０（ｃ）に示すように上昇する。そして、Power Phaseが終了すると、電圧監視回路１２は充放電切換え信号をハイからロウに変化させるので、充電スイッチ２８ＣはＯＦＦ，放電スイッチ２８ＤがＯＮとなり、コンデンサ２７に充電された電荷は、放電時定数調整回路２６を介して放電される。
そして、コンデンサ２７の端子電圧が０Ｖ付近になると、指令出力回路２３がＨｉ−Ｚ指令を出力し、通信ドライバ／レシーバ１７は、バス３のドライブを停止して出力状態をハイインピーダンスとする。上述したように、（充電時定数）＞（放電時定数）となっているのでコンデンサ２７の放電時間は常に充電時間よりも短くなり、両者の時間差によって非ドライブ期間が確保されるようになっている。
【００５４】
再び図９を参照する。バス３においてドライブレベルの干渉が発生し（ステップＳ７，「ＹＥＳ」）、ステップＳ９を実行すると、ＣＰＵ２４は、放電時定数調整回路２６における放電時定数がより小さくなるように、即ち、ＦＥＴ３０の同時ＯＮ数がより多くなるように調整する（ステップＳ１５）。そして、その際に設定した「同時ＯＮ数」が、予め定められている放電時定数の下限を下回ったか否かを判断する（ステップＳ１６）。ここで、下限を下回っていなければ（「ＮＯ」）そのままステップＳ１に戻り、下限を下回っ
た場合は（「ＹＥＳ」）、その事象に基づくエラー処理を行ってから（ステップＳ１７）ステップＳ１に戻る。
【００５５】
即ち、ステップＳ１６において、放電時定数が下限を下回った場合とは、Data Phaseに占める非ドライブ期間の割合が高すぎる場合であり、スレーブ２１によるデータ送信（バスドライブ）時間が適正に確保されないおそれがある。従って、正常な通信が保証されないことから、ステップＳ１７における「エラー処理」は、例えば、ステップＳ９と同様にマスタ１に対して上記事象を示すエラー送信を行ったり、或いは、スレーブ２１自身でエラー報知を行うようにする。
【００５６】
以上のように第３実施例によれば、スレーブ２１は、充電時定数回路２５並びに放電時定数回路２６を介して、自身のデータ送信期間においてマスタ１が電源を供給している期間にコンデンサ２７を充電し、自身がデータビットを送信する期間にコンデンサ２７を放電させるように制御する。そして、時定数回路２５，２６を、充電時定数が放電時定数よりも大きくなるよう設定し、放電時のコンデンサ２７の端子電圧がしきい値以下になった場合にバス３のドライブを停止させるので、充放電時間の差によって非ドライブ期間を確保することができる。
【００５７】
この場合、スレーブ２１は、マスタ１による電源供給が停止してバス３の電圧が所定レベルまで低下するとコンデンサ２７の放電を開始させるので、コンデンサ２７の充放電を適切なタイミングで切換えることができる。
また、スレーブ２１は、データビット送信期間におけるバス３の電圧が干渉レベルであると判定すると、非ドライブ期間がより長くなるように調整するので、マスタ−スレーブ間におけるドライブレベルの干渉発生を回避するように調整を行なうことができる。更に、スレーブ２１は、非ドライブ期間を調整した結果、当該期間の長さが上限を超えた場合は、マスタ１に通信エラーの発生を伝達するので、マスタ１にその旨を伝達して通信を停止させるなどの処置を取ることができる。
【００５８】
（第４実施例）
図１１は本発明の第４実施例を示すものであり、第３実施例と異なる部分について説明する。第４実施例の構成は基本的に第３実施例と同様であり、ＣＰＵ２４によるソフトウエア的な処理内容が異なっている。即ち、図９相当図である図１１において、ＣＰＵ２４は、ステップＳ１の実行後に、ＳＯＦにより提示された通信レートが前回提示されたレートより変更されているか否かを判断し（ステップＳ１８）、変更されていなければ（「ＮＯ」）ステップＳ２に移行する。この場合、以前に実行済みであるステップＳ１ｂの状態は保持されているとする。一方、通信レートが変更されていれば（「ＹＥＳ」）後述する処理に使用するフラグをクリアしてから（ステップＳ１９）ステップＳ１ｂに移行する。
【００５９】
そして、スレーブ２１のデータ送信期間が終了すると（ステップＳ８，「ＹＥＳ」）、
ＣＰＵ２４は、内部のメモリにおけるフラグ格納領域を参照して「調整停止フラグ」のセット状態を確認し、当該フラグがセットされていなければ（「ＮＯ」）放電時定数回路２６の時定数を１段階大きくするように調整する（ステップＳ２１）。それから、前記調整を行なったことを記憶するための「調整済みフラグ」を格納領域にセットすると（ステップＳ２２）ステップＳ１に移行する。また、ステップＳ２０において「調整停止フラグ」がセットされていれば（「ＹＥＳ」）そのままステップＳ１に移行する。
【００６０】
即ち、ステップＳ８において「ＹＥＳ」と判断した場合は、ステップＳ１ｂで設定した放電時定数に基づき設定された非ドライブ期間の長さでは、自身のデータ送信期間の間、バス３にドライブレベルの干渉が発生しなかったことを示す。従って、その場合は非ドライブ期間をより短縮しても問題が無い可能性がある。また、非ドライブ期間が不要に長すぎるとスレーブ２１がデータをドライブする期間が侵食されるため、マスタ１に対してデータを正常に送信できなくなるおそれもある。従って、放電時定数をより大きくして非ドライブ期間を短縮するように調整を図る。
【００６１】
一方、上記のように調整を行なった結果として、バス３でドライブレベルの干渉が発生することも想定される（ステップＳ７，「ＹＥＳ」）。その場合は、第３実施例と同様にステップＳ９，Ｓ１５を実行して非ドライブ期間を長くするように再調整した後、「調整済みフラグ」がセットされているか否かを判断する（ステップＳ２３）。
この時点で前記フラグがセットされていれば（「ＹＥＳ」）、以降は通信レートが変更されない限り非ドライブ期間をより短縮する調整は不要である。そのため、続くステップＳ２４において「調整停止フラグ」をセットしてからステップＳ１６に移行する。また、ステップＳ２３において「調整済みフラグ」がセットされていなければ（「ＮＯ」）、そのままステップＳ１６に移行する。
【００６２】
そして、以上のようにして「調整停止フラグ」がセットされることで、次回以降の通信においてステップＳ２０に至ると「ＹＥＳ」と判断されるため、ステップＳ２１は実行されない。従って、その時点で非ドライブ期間の長さが適切に設定されることになる。
以上のように第４実施例によれば、スレーブ２１は、データビット送信期間にドライブレベルの干渉が発生しない状態が所定回数継続すると、非ドライブ期間を短縮するように調整するので、非ドライブ期間の最適化を図ることができる。
【００６３】
（第５実施例）
図１２は本発明の第５実施例を示すものであり、第３実施例と異なる部分について説明する。第５実施例のスレーブ（通信装置）３１は、ＣＰＵ２４ａがバスのドライブレベルが干渉したことを検出するのに、バス３（＋）に介挿した電流監視回路（電流監視手段）３２により検出されるバス３のドライブ電流の変化に基づいて検出するようになっている。即ち、ドライブレベルの干渉が発生した場合には、ドライブ電流が異常な変動状態を示すので、そのような異常変動を検出する。従って、図９に示すステップＳ４，Ｓ７では、ＣＰＵ２４ａは電流監視回路３２の出力状態を参照して、ドライブ電流が異常な変動を示すかどうかを判断する。
【００６４】
以上のように第５実施例によれば、スレーブ３１は、データビット送信期間におけるバス電流の変化に基づきレベル干渉が発生したと判定すると、マスタ１に通信エラーの発生を伝達して非ドライブ期間がより長くなるように調整するので、第３実施例と同様の効果が得られる。
【００６５】
（第６実施例）
図１３は本発明の第６実施例を示すものであり、第３実施例と異なる部分について説明する。第６実施例は、第３実施例における充電時定数回路２５とは異なる構成の充電時定数回路３３を示すもので、充電時定数回路３３は、ＦＥＴに替えて抵抗素子３４を使用しており、抵抗素子３４とスイッチ３５との並列回路を、通信バス３（＋）と充電側スイッチ２８Ｃとの間に複数直列接続して構成されている。
斯様に構成すれば、ＣＰＵ２４は、スイッチ３５のＯＮ，ＯＦＦを制御することで直列抵抗値を変化させ、充電時定数の大小を設定することができる。即ち、スイッチ３５をＯＦＦする数を増やすほど、直列抵抗値が上昇して充電時定数は大きくなる。尚、図示はしないが、放電時定数回路側も同様に構成すれば良い。
【００６６】
本発明は上記し又は図面に記載した実施例にのみ限定されるものではなく、以下のような変形が可能である。
バス３の電圧を監視した結果に基づいて、例えばクロック回路１６が出力するクロック信号の周波数補正を行なっても良い。例えば、通信レートが固定である場合に、バス３のドライブレベルが所定レベルに達する間隔を基準として補正を行なう。
バス３の電圧監視は、必要に応じて行えば良い。
通信レートの判定はＳＯＦに基づいて行うものに限らず、バス上で送信される通信波形を参照して判定すれば良い。
【００６７】
データを受信する側において、データ値「０，１」を判定するのに２度一致フィルタを使用しても良い。
マスタと複数のスレーブとのバス接続形態は、その他、ツリー形式やリング形式などであっても良い。
ドライブレベルの干渉が発生した場合は、クロック回路１６が出力するクロック信号の周波数を調整するようにしても良い。
第４実施例の処理を、第１，第２実施例の構成に適用しても良い。
第４実施例において、ステップＳ２０〜Ｓ２２の処理は必ずしも送信終了時に行う必要はなく、送信中に複数のデータビットを送信した段階で行うようにしても良い。
第６実施例において、抵抗素子とスイッチとの直列回路の組みを、複数並列接続して構成しても良い。
【００６８】
また、第３〜第６実施例においても、通信レートが固定である場合は、充放電時定数を変更する必要は無い。また、充放電の切替えは、コンデンサ２７の端子電圧がＶＬＰに達したことを検出して行うようにしても良い。
エアバッグ装置に適用するものに限ることなく、複数のスレーブを介して得られる情報をマスタに送信する必要がある通信システムであれば、適用が可能である。
通信プロトコルは、ＳｂＷに限ることはない。少なくとも、マスタとバスを介して接続される複数のスレーブとの間で非同期通信を行うもので、マスタが通信の開始を示すと、各スレーブがその時点を基点として割り当てられている夫々のデータ送信期間にバスをドライブするか否かで示される複数のデータビットをマスタに送信し、各データビットが送信される間に、マスタがバスをドライブして電源を供給する期間が挿入される通信プロトコルであれば適用が可能である。
【図面の簡単な説明】
【００６９】
【図１】本発明の通信システムをＳｂＷに適用した第１実施例であり、通信バスのドライブ状態を示すタイミングチャート
【図２】通信の開始時点から、カウントイネーブル信号ＣＥ１，ＣＥ２が出力される状態を示すタイミングチャート
【図３】スレーブの構成を、本発明の要旨に係る部分について概略的に示す機能ブロック図
【図４】スレーブのＣＰＵによって行われる制御の内、本発明の要旨に係る部分を示すフローチャート
【図５】本発明の第２実施例を示す図４の一部相当図
【図６】本発明の第３実施例を示す図３相当図
【図７】充放電回路の構成をモデル的に示す図
【図８】充放電回路の詳細構成を示す図
【図９】図４相当図
【図１０】図１相当図
【図１１】本発明の第４実施例を示す図９相当図
【図１２】本発明の第５実施例を示す図６相当図
【図１３】本発明の第６実施例であり、充電時定数回路の構成を示す図
【図１４】従来のシリアル通信システムの一構成例を示す図
【図１５】ＳｂＷによる通信でデータを送信する場合に、マスタ若しくはスレーブがバスをドライブする場合の電圧波形を示す図
【図１６】マスタ−スレーブ間におけるデータ通信の一例を示す図
【図１７】バスのドライブレベルが干渉した状態を説明する図
【符号の説明】
【００７０】
図面中、１はマスタ、３はバス、１１はスレーブ（通信装置）、１２は電圧監視回路（電圧監視手段）、１３はＣＰＵ、１５はアップダウンカウンタ、１７は通信ドライバ／レシーバ、２１はスレーブ（通信装置）、２２は充放電回路、２５充電時定数調整回路、２６は放電時定数調整回路、２７はコンデンサ、３１はスレーブ（通信装置）、３２は電流監視回路（電流監視手段）、３３は充電時定数調整回路を示す。
【図１】
0004682916.tif 000002
【図２】
0004682916.tif 000003
【図３】
0004682916.tif 000004
【図４】
0004682916.tif 000005
【図５】
0004682916.tif 000006
【図６】
0004682916.tif 000007
【図７】
0004682916.tif 000008
【図８】
0004682916.tif 000009
【図９】
0004682916.tif 000010
【図１０】
0004682916.tif 000011
【図１１】
0004682916.tif 000012
【図１２】
0004682916.tif 000013
【図１３】
0004682916.tif 000014
【図１４】
0004682916.tif 000015
【図１５】
0004682916.tif 000016
【図１６】
0004682916.tif 000017
【図１７】
0004682916.tif 000018