(57)【要約】【課題】Ｉ２Ｃ通信の信号とＳＰＩ通信の信号とが衝突するおそれがない通信システムを提供する。【解決手段】通信システムは、Ｉ２Ｃデバイス１１、１２と、ＳＰＩデバイス１０と、選択回路２０と、電子回路３０とを有する。選択回路２０は、ＣＳ信号を受信していないときに、第１データ信号と第２データ信号とから第１データ信号を選択し、ＣＳ信号を受信しているときに、ＣＳ信号に対応する信号を生成し、停止信号としてＳＣＬ端子に送信すると共に、第１データ信号と第２データ信号とから第２データ信号を選択する。電子回路３０は、ＣＬＫ信号が遷移したときにＳＰＩ通信のスレーブとして機能する。また、電子回路３０は、ＣＬＫ信号が遷移せず且つＳＣＬ信号及びＳＤＡ信号がＩ２Ｃ通信を開始する条件を示すときにＩ２Ｃ通信のスレーブとして機能する。【選択図】図１
2016004388.tif 000002
【特許請求の範囲】
【請求項１】
Ｉ２Ｃ通信のマスタとして機能するときに、第１データ信号を送信又は受信するＳＤＡ端子と、前記第１データ信号をラッチするクロック信号であるＳＣＬ信号を送信するＳＣＬ端子とを有し、前記ＳＣＬ端子に停止信号が送信されるときに、Ｉ２Ｃ通信のマスタとしての機能を停止するＩ２Ｃデバイスと、
ＳＰＩ通信のマスタとして機能することを示すＣＳ信号を送信するＣＳ端子と、ＳＰＩ通信のマスタとして機能するときに、第２データ信号を送信又は受信するＳＰＩデータ端子と、前記第２データ信号をラッチするクロック信号であるＣＬＫ信号を送信するＣＬＫ端子とを有するＳＰＩデバイスと、
前記ＣＳ信号を受信していないときに、前記第１データ信号と前記第２データ信号とから前記第１データ信号を選択し、前記ＣＳ信号を受信しているときに、前記ＣＳ信号に対応する信号を生成し、前記停止信号として前記ＳＣＬ端子に送信すると共に、前記第１データ信号と前記第２データ信号とから前記第２データ信号を選択する選択回路と、
前記ＣＬＫ信号を受信するＳＰＩＣＫ端子と、前記ＳＣＬ信号又は前記選択回路が生成した前記ＣＳ信号に対応する信号の何れか一方の信号を受信するＣＳ・ＳＣＬ端子と、前記選択回路が選択した前記第１データ信号又は前記第２データ信号の何れか一方の信号を送信又は受信するデータ端子とを有し、前記ＣＬＫ信号が遷移したときにＳＰＩ通信のスレーブとして機能し、前記ＣＬＫ信号が遷移せず且つ前記ＣＳ・ＳＣＬ端子及び前記データ端子にＩ２Ｃ通信を開始する条件を示す信号が送信されたときにＩ２Ｃ通信のスレーブとして機能する電子回路と、
を有する通信システム。
【請求項２】
前記電子回路は、Ｉ２Ｃ通信のスレーブとして機能しているときに、前記ＣＬＫ信号の遷移に応じて、Ｉ２Ｃ通信のスレーブとしての機能を中断して、ＳＰＩ通信のスレーブとしての機能を開始し、
ＳＰＩ通信のスレーブとしての機能を終了した後に、前記ＣＳ・ＳＣＬ端子に送信された信号の遷移に応じて、中断した前記Ｉ２Ｃ通信のスレーブとしての機能を再開する、請求項１に記載の通信システム。
【請求項３】
前記電子回路は、Ｉ２Ｃ通信のスレーブとして機能しているときに、前記第１データ信号を所定ビット受信する毎に、前記ＣＬＫ信号が遷移しているか否かを判定する、請求項２に記載の通信システム。
【請求項４】
前記Ｉ２Ｃデバイスは、Ｉ２Ｃ通信のマスタとしての機能を終了するときに、前記ＳＣＬ端子に送信された信号がＨレベルであることを確認した後に、前記ＳＤＡ端子から送信される信号を立上がり遷移させる、請求項２又は３に記載の通信システム。
【請求項５】
前記電子回路は、ＳＰＩ通信により中断された場合を含めてＩ２Ｃ通信時に１バイトのデータ信号を前記Ｉ２Ｃデバイスから受信する毎に、ＡＣＫ信号を前記Ｉ２Ｃデバイスに送信し、
前記Ｉ２Ｃデバイスは、前記ＡＣＫ信号を受信した後に、次の１バイトのデータ信号を送信する、請求項２〜４の何れか一項に記載の通信システム。
【請求項６】
前記電子回路は、ＳＰＩ通信により中断されたＩ２Ｃ通信が再開された後に前記ＡＣＫ信号を送信する前に、前記ＣＳ・ＳＣＬ端子及び前記データ端子にＩ２Ｃ通信を開始する条件を示す信号が送信されたときは、ＳＰＩ通信により中断されたＩ２Ｃ通信で最後に受信した１バイトのデータ信号に対応するデータを破棄する、請求項５に記載の通信システム。
【請求項７】
前記電子回路は、ＳＰＩ通信により中断されたＩ２Ｃ通信が再開された後に前記ＡＣＫ信号を送信し且つ次の１バイトのデータ信号を受信する前に、前記ＣＳ・ＳＣＬ端子及び前記データ端子にＩ２Ｃ通信を開始する条件を示す信号が送信されたときは、ＳＰＩ通信により中断されたＩ２Ｃ通信で最後に受信した１バイトのデータ信号に対応するデータを破棄する、請求項５に記載の通信システム。
【請求項８】
前記電子回路は、前記ＡＣＫ信号を前記Ｉ２Ｃデバイスに送信しているときにＳＰＩ通信によりＩ２Ｃ通信が中断された場合、中断されたＩ２Ｃ通信が再開された後に前記ＡＣＫ信号を再送しない、請求項２〜７の何れか一項に記載の通信システム。
【請求項９】
前記電子回路は、Ｉ２Ｃ通信がＳＰＩ通信により中断された場合、中断されたＩ２Ｃ通信により送信されたデータ信号に対応するデータを破棄し、
前記Ｉ２Ｃデバイスは、Ｉ２Ｃ通信がＳＰＩ通信により中断された場合、Ｉ２Ｃ通信が再開された後に、中断されたＩ２Ｃ通信により送信された一連のデータ信号を全て再送する、請求項２又は３に記載の通信システム。
【請求項１０】
ＳＰＩ通信のマスタとして機能するＳＰＩデバイスから、前記ＳＰＩデバイスが送信する第２データ信号をラッチするクロック信号である前記ＣＬＫ信号を受信するＳＰＩＣＫ端子と、
Ｉ２Ｃ通信のマスタとして機能するＩ２Ｃデバイスから送信される第１データ信号をラッチするクロック信号であるＳＣＬ信号、又は前記第１データ信号と前記第２データ信号とを選択する選択回路が、前記ＳＰＩデバイスがＳＰＩ通信のマスタとして機能することを示すＣＳ信号を受信しているときに生成した前記ＣＳ信号に対応する信号の何れか一方の信号を受信するＣＳ・ＳＣＬ端子と、
前記選択回路が選択した前記第１データ信号又は前記第２データ信号の何れか一方の信号を送信又は受信するデータ端子とを有し、
前記ＣＬＫ信号が遷移したときにＳＰＩ通信のスレーブとして機能し、前記ＣＬＫ信号が遷移せず且つ前記ＣＳ・ＳＣＬ端子及び前記データ端子にＩ２Ｃ通信を開始する条件を示す信号が送信されたときにＩ２Ｃ通信のスレーブとして機能する、電子回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム及び電子回路に関する。
【背景技術】
【０００２】
フィリップス・セミコンダクタ社により開発されたＩ２Ｃ（Inter-Integrated Circuit）通信、及びモトローラ・インコ社により開発された直列周辺インタフェース（Serial Peripheral Interface、ＳＰＩ）通信が、シリアル通信方式として知られている。
【０００３】
Ｉ２Ｃ通信は、シリアル・データライン（ＳＤＡ）端子とシリアル・クロックライン（ＳＣＬ）端子の２つの端子を介して通信する方式である。ＳＤＡ端子は、Ｉ２Ｃ通信のマスタとスレーブとの間のデータ信号、及びアクノリッジ（Acknowledge、ＡＣＫ）信号等を送信又受信する端子である。ＳＣＬ端子は、Ｉ２Ｃ通信のマスタからスレーブに、ＳＤＡ端子が送信又受信する信号をラッチするクロック信号を送信又受信する端子である。
【０００４】
ＳＰＩ通信は、ＭＯＳＩ（Master Output Slave Input）端子、ＭＩＳＯ（Master Input Slave Output）端子、ＣＬＫ端子及びＣＳ（Chip Select）端子の４つの端子を介して通信する方式である。ＭＯＳＩ端子は、マスタとして機能するＳＰＩデバイスがデータ信号を送信し且つスレーブとして機能するＳＰＩデバイスがデータ信号を受信する端子である。ＭＩＳＯ端子は、マスタとして機能するＳＰＩデバイスがデータ信号を受信し且つスレーブとして機能するＳＰＩデバイスがデータ信号を送信する端子である。ＣＬＫ端子は、マスタとして機能するＳＰＩデバイスがクロック信号を送信し且つスレーブとして機能するＳＰＩデバイスがクロック信号を受信する端子である。ＣＳ端子は、マスタとして機能するＳＰＩデバイスがマスタとして機能することを示すために、スレーブとして機能するＳＰＩデバイスに対してＬレベルの信号を出力する端子である。
【０００５】
Ｉ２Ｃ通信及びＳＰＩ通信の双方の通信に対応可能なＩ２Ｃ／ＳＰＩ制御インターフェース回路構造が知られている。一例では、Ｉ２Ｃ／ＳＰＩ制御インターフェース回路構造は、第１〜第３の伝送ラインを有する。第１の伝送ラインはＩ２ＣデバイスのＳＣＬ端子とＳＰＩデバイスのＣＳ端子とに接続され、第２の伝送ラインはＩ２ＣデバイスのＳＤＡ端子とＳＰＩデバイスのＭＯＳＩ端子及びＭＩＳＯ端子とに接続されている。第３の伝送ラインは、ＳＰＩデバイスのＣＬＫ端子に接続されている。
【０００６】
また、Ｉ２Ｃ通信及びＳＰＩ通信の２つの通信方式を自動的に切り換える機能を有する電子装置が知られている。一例では、電子装置は、ＳＰＩデバイスのＣＳ信号がＬレベルになると、最初の２クロックサイクルの間、電子装置内の状態機械はＩ２Ｃインタフェースを動作不能にし、ＳＰＩインタフェースを動作可能にする。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１１−１３８４６６号公報
【特許文献２】特開２０１１−４３９０４号公報
【特許文献３】特開２００２−２３２５０８号公報
【特許文献４】特開平７−１３５５１７号公報
【特許文献５】特開２０１３−５４６０３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＭＣＵ（Micro Controller Unit）等のマイクロプロセッサに多くのセンサを接続して、多様な情報を取得することが可能な通信システムを構築することが望まれている。このような通信システムを構築するときに、センサとマイクロプロセッサとの間の通信は、Ｉ２Ｃ通信のみならずＳＰＩ通信も可能なように構築されることが好ましい。また、加速度センサ等のイベントの検出に応じて検出データ信号を送信するセンサでは、マイクロプロセッサではなくセンサをマスタとして機能させることが好ましい。マイクロプロセッサをマスタとした場合、イベントを検出したことを示す信号をセンサから通知するための端子が配置されるため、マイクロプロセッサのピン数が増加するおそれがあるためである。
【０００９】
また、Ｉ２Ｃデバイス及びＳＰＩデバイスの双方をマスタとした通信システムでは、Ｉ２Ｃ通信とＳＰＩ通信とが非同期で動作するため、Ｉ２Ｃ通信の信号とＳＰＩ通信の信号とが衝突するおそれがある。
【００１０】
実施形態によれば、Ｉ２Ｃ通信の信号とＳＰＩ通信の信号とが衝突するおそれがない通信システムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
１つの態様の通信システムは、Ｉ２Ｃデバイスと、ＳＰＩデバイスと、選択回路と、電子回路とを有する。Ｉ２Ｃデバイスは、Ｉ２Ｃ通信のマスタとして機能するときに、第１データ信号を送信又は受信するＳＤＡ端子と、第１データ信号をラッチするクロック信号であるＳＣＬ信号を送信するＳＣＬ端子とを有する。Ｉ２Ｃデバイスは、ＳＣＬ端子に停止信号が送信されるときに、Ｉ２Ｃ通信のマスタとしての機能を停止する。ＳＰＩデバイスは、ＳＰＩ通信のマスタとして機能することを示すＣＳ信号を送信するＣＳ端子を有する。ＳＰＩデバイスは、ＳＰＩ通信のマスタとして機能するときに、第２データ信号を送信又は受信するＳＰＩデータ端子と、第２データ信号をラッチするクロック信号であるＣＬＫ信号を送信するＣＬＫ端子とを更に有する。選択回路は、ＣＳ信号を受信していないときに、第１データ信号と第２データ信号とから第１データ信号を選択する。選択回路は、ＣＳ信号を受信しているときに、ＣＳ信号に対応する信号を生成し、停止信号としてＳＣＬ端子に送信すると共に、第１データ信号と第２データ信号とから第２データ信号を選択する。電子回路は、ＣＬＫ信号を受信するＳＰＩＣＫ端子と、ＳＣＬ信号又は選択回路が生成したＣＳ信号に対応する信号の何れか一方の信号を受信するＣＳ・ＳＣＬ端子とを有する。電子回路は、選択回路が選択した第１データ信号又は第２データ信号の何れか一方の信号を送信又は受信するデータ端子を更に有する。電子回路は、ＣＬＫ信号が遷移したときにＳＰＩ通信のスレーブとして機能する。また、電子回路は、ＣＬＫ信号が遷移せず且つＣＳ・ＳＣＬ端子及びデータ端子にＩ２Ｃ通信を開始する条件を示す信号が送信されたときにＩ２Ｃ通信のスレーブとして機能する。
【発明の効果】
【００１２】
実施形態では、Ｉ２Ｃ通信の信号とＳＰＩ通信の信号とが衝突するおそれがない通信システムを提供することができる。
【図面の簡単な説明】
【００１３】
【図１】第１実施形態に係る通信システムの回路ブロック図である。
【図２】ＬレベルのＣＳ信号が送信されるときの選択状態を示す図である。
【図３】ＨレベルのＣＳ信号が送信されるときの選択状態を示す図である。
【図４】図１に示す通信システムにおける通信パターンを示す図である。
【図５】図１に示すＭＣＵの処理フローを示すフローチャートである。
【図６】より所詳細なＭＣＵの処理フローを示すフローチャートである。
【図７】（ａ）はＭＣＵがＳＰＩ通信のスレーブとして機能するときのタイミングチャートを示す図であり、（ｂ）は図６に示すフローチャートの（ａ）に関連する部分を示すフローチャートである。
【図８】（ａ）はＭＣＵがＩ２Ｃ通信のスレーブとして機能しているときにＳＰＩ通信が割り込むときのタイミングチャートを示す図であり、（ｂ）は図６に示すフローチャートの（ａ）に関連する部分を示すフローチャートである。
【図９】マスタがＳＣＬ信号の立ち上がりエッジを認識する一方、スレーブが信号ＳＣＬ号の立ち上がりエッジを識別しないときのタイミングチャートを示す図である。
【図１０】マスタがＳＣＬ信号の立ち上がりエッジを認識しない一方、スレーブＳＣＬ信号の立ち上がりエッジを識別するときの第１のタイミングチャートを示す図である。
【図１１】マスタがＳＣＬ信号の立ち上がりエッジを認識しない一方、スレーブがＳＣＬ信号の立ち上がりエッジを識別するときの第２のタイミングチャートを示す図である。
【図１２】ＭＣＵがＡＣＫ信号を送信している間にＳＰＩ通信によりＩ２Ｃ通信が中断されたときのタイミングチャートを示す図である。
【図１３】第２実施形態に係る通信システムの回路ブロック図である。
【図１４】第３実施形態に係る通信システムの回路ブロック図である。
【図１５】他の実施形態に係るＭＣＵの処理フローを示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下図面を参照して、通信システム及び電子回路について説明する。但し、本発明の技術的範囲はそれらの実施の形態に限定されず、特許請求の範囲に記載された発明との均等物に及ぶ点に留意されたい。
【００１５】
実施形態に係る通信システムは、マスタとして機能するＩ２Ｃデバイス及びＳＰＩデバイスと、スレーブとして機能するＭＣＵと、ＳＰＩデバイスのＣＳ信号に応じてＩ２Ｃデバイス及びＳＰＩデバイスとＭＣＵとの接続関係を選択する選択回路とを有する。実施形態に係る通信システムでは、選択回路は、ＳＰＩデバイスのＣＳ信号に応じて、ＭＣＵと接続されるマスタを切替えるので、Ｉ２Ｃデバイスからの信号とＳＰＩデバイスからの信号とが衝突するおそれがない。
【００１６】
図１は、第１実施形態に係る通信システムの回路ブロック図である。
【００１７】
通信システム１は、ＳＰＩデバイス１０と、第１Ｉ２Ｃデバイス１１と、第２Ｉ２Ｃデバイス１２と、選択回路２０と、ＭＣＵ３０とを有する。通信システム１では、不図示のセンサ等を含むＳＰＩデバイス１０、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のそれぞれはマスタとして機能し、ＭＣＵ３０はスレーブとして機能する。
【００１８】
ＳＰＩデバイス１０は、ＭＩＳＯ端子、ＭＯＳＩ端子、ＣＬＫ端子及びＣＳ端子を有し、ＳＰＩ通信のマスタとして機能する。ＳＰＩデバイス１０は、マスタとして機能するときにＣＳ端子からＬレベルのＣＳ信号を送信する。ＳＰＩデバイス１０は、マスタとして機能するときに、ＭＯＳＩ端子から選択回路２０を介してＭＣＵ３０のＤ０端子に信号を送信すると共に、ＭＣＵ３０のＤ０端子からＭＩＳＯ端子に信号を受信する。ＭＯＳＩ端子から送信される信号及びＭＩＳＯ端子が受信する信号をラッチするクロック信号であるＣＬＫ信号は、ＣＬＫ端子からＭＣＵ３０のＳＰＩＣＫ端子に送信される。一例では、ＳＰＩデバイス１０はモード３で動作する。
【００１９】
第１Ｉ２Ｃデバイス１１は、ＳＤＡ端子と、ＳＣＬ端子とを有し、Ｉ２Ｃ通信のマスタとして機能する。第１Ｉ２Ｃデバイス１１は、マスタとして機能するときに、ＳＤＡ端子から選択回路２０を介してＭＣＵ３０のＤ１端子にデータ信号を送信又は受信する。第１Ｉ２Ｃデバイス１１は、マスタとして機能するときに、ＳＣＬ端子から選択回路２０を介してＭＣＵ３０のＣＳ・ＳＣＬ端子に、ＳＤＡ端子から送信されるデータ信号をでラッチするクロック信号であるＳＣＬ信号を送信する。
【００２０】
第１Ｉ２Ｃデバイス１１は、ＳＣＬ端子からＨレベルの信号を送信し且つＳＣＬ端子から送信する信号を立下り遷移させることにより、スタート・コンディションを発行して、マスタとしての機能を開始する。また、第１Ｉ２Ｃデバイス１１は、ＳＣＬ端子からＨレベルの信号を送信し且つＳＣＬ端子から送信する信号を立上がり遷移させることにより、ストップ・コンディションを発行して、マスタとしての機能を停止する。また、第１Ｉ２Ｃデバイス１１は、ＳＣＬ端子にＬレベルの信号を受信するとマスタとしての機能を停止する。
【００２１】
第１Ｉ２Ｃデバイス１１は、データ信号を１バイト出力する毎に、ＭＣＵ３０のＤ１端子から選択回路２０を介してＡＣＫ信号を受信したか否かを判定する。第１Ｉ２Ｃデバイス１１は、データ信号を１バイト出力した後に、ＡＣＫ信号を受信したと判定したとき、次の１バイトのデータ信号の送信を開始する。第１Ｉ２Ｃデバイス１１は、データ信号を１バイト出力した後に、ＡＣＫ信号を受信していないと判定したとき、リピート・スタート・コンディションを発行した後に、先に送信した１バイトのデータ信号を再送する。
【００２２】
第１Ｉ２Ｃデバイス１１は、マスタとして機能しているときに、ＳＤＡ端子から送信したデータ信号が他の信号と衝突したと判定したとき、マスタとしての機能を失う。第１Ｉ２Ｃデバイス１１は、マスタとしての機能を失った後、Ｈレベルが所定の期間に亘ってＳＤＡ端子に入力されたとき、スタート・コンディションを発行した後に、衝突したデータ信号を含む１バイトのデータ信号を再送する。
【００２３】
第１Ｉ２Ｃデバイス１１は、マスタとして機能を終了するためにストップ・コンディションを発行するときに、ＳＣＬ端子に送信される信号がＨレベルであることを確認した後に、ＳＤＡ端子から送信される信号を立上がり遷移させる。ストップ・コンディションを発行するときに、ＳＣＬ端子の信号を確認することにより、第１Ｉ２Ｃデバイス１１は、ストップ・コンディションを発行する処理の途中にＳＰＩ通信に割り込まれた場合でもストップ・コンディションを発行させることができる。
【００２４】
第２Ｉ２Ｃデバイス１２は、第１Ｉ２Ｃデバイス１１と同様な構成及び機能を有する。
【００２５】
選択回路２０は、第１選択素子２１と、第２選択素子２２と、第３選択素子２３とを有する。第１選択素子２１及び第２選択素子２２のそれぞれは、ｐＭＯＳ（Metal Oxide Semiconductor）トランジスタであり、第３選択素子２３はｎＭＯＳトランジスタである。第１選択素子２１〜第３選択素子２３のゲートはＳＰＩデバイス１０のＣＳ端子に接続される。第１選択素子２１のドレインは第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＣＬ端子とＭＰＵ３０のＣＳ・ＳＣＬ端子とに接続され、第１選択素子２１のソースは接地される。第２選択素子２２のソースは第３選択素子２３のドレインとＭＰＵ３０のＤ１端子とに接続され、第２選択素子２２のドレインはＳＰＩデバイス１０のＭＯＳＩ端子に接続される。第３選択素子２３のソースは第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＤＡ端子に接続され、第３選択素子２３のドレインは第２選択素子２２のソースとＳＰＩデバイス１０のＤ１端子とに接続される。第１選択素子２１のドレインと第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＣＬ端子とＭＰＵ３０のＣＳ・ＳＣＬ端子とを接続する配線には第１プルアップ抵抗４１が接続される。第３選択素子２３のソースと第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＤＡ端子とを接続する配線には第２プルアップ抵抗４２が接続される。
【００２６】
図２はＳＰＩデバイス１０のＣＳ端子からＬレベルのＣＳ信号が送信されるときの選択回路２０の選択状態を示す図であり、図３はＳＰＩデバイス１０のＣＳ端子からＨレベルのＣＳ信号が送信されるときの選択回路２０の選択状態を示す図である。図２及び３において、実線で示されるトランジスタはオン状態のトランジスタであり、破線で示されるトランジスタはオフ状態のトランジスタである。また、図２及び３において、矢印ＡはＭＣＵ４０のＤ１端子に送信される信号の流れを示し、矢印ＢはＭＣＵ４０のＣＳ・ＳＣＬ端子及び第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＣＬ端子に送信される信号の流れを示す。
【００２７】
ＳＰＩデバイス１０のＣＳ端子からＬレベルのＣＳ信号が送信されるとき、第１選択素子２１及び第２選択素子２２がオン状態になり、第３選択素子２３がオフ状態になる。第１選択素子２１がオン状態になるので、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＣＬ端子及びＭＣＵ３０のＣＳ・ＳＣＬ端子にはＬレベルの信号が送信される。ＳＰＩデバイス１０のＣＳ端子からＬレベルの信号が送信されるとき、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２は、ＳＣＬ端子にＬレベルの信号が入力されるので、マスタとしての機能を停止する。また、第２選択素子２２がオン状態になり且つ第３選択素子２３がオフ状態になるので、ＭＣＵ３０のＤ１端子は、ＳＰＩデバイス１０のＭＯＳＩ端子と接続され、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＤＡ端子との接続は切断される。
【００２８】
ＳＰＩデバイス１０のＣＳ端子からＨレベルのＣＳ信号が送信されるとき、第１選択素子２１及び第２選択素子２２がオフ状態になり、第３選択素子２３がオン状態になる。第１選択素子２１がオフ状態になり、ＭＣＵ３０のＣＳ・ＳＣＬ端子は、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＣＬ端子に接続される。また、第２選択素子２２がオフ状態になり且つ第３選択素子２３がオン状態になるので、ＭＣＵ３０のＤ１端子は、ＳＰＩデバイス１０のＭＯＳＩ端子との接続は切断され、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＤＡ端子と接続される。
【００２９】
表１にＳＰＩデバイス１０のＣＳ端子及び第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＣＬ端子から送信される信号の信号レベルと、ＭＰＵ３０のＣＳ・ＳＣＬ端子に送信される信号の信号レベルとの関係を示す真理値表を示す。また、表２にＳＰＩデバイス１０のＣＳ端子から送信される信号の信号レベルと、ＭＰＵ３０のＤ１端子に接続される端子との関係を示す。
【００３０】
【表１】
2016004388.tif 000003
【００３１】
【表２】
2016004388.tif 000004
【００３２】
図２に示すように、ＳＰＩデバイス１０がマスタとして機能するためにＣＳ端子からＬレベルのＣＳ信号を送信しているとき、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＣＬ端子にはＬレベルの信号が送信されている。第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２は、ＳＣＬ端子にはＬレベルの信号が送信されている間、マスタとして機能することが停止される。したがって、ＳＰＩデバイス１０がマスタとして機能する間に、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２の何れかがマスタとして機能することはない。
【００３３】
図３に示すように、ＳＰＩデバイス１０がマスタとして機能せずにＣＳ端子からＨレベルの信号を送信しているとき、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＣＬ端子にはＬレベルの信号が送信されていない。第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２は、ＳＣＬ端子にはＬレベルの信号が送信されていないときにスタート・コンディションを発行すると、マスタとしての機能を開始する。第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２は、マスタとして機能しているときにＳＰＩデバイス１０のＣＳ端子からＬレベルの信号が送信されると、ＳＣＬ端子にＬレベルの信号が送信されマスタとしての機能を停止する。
【００３４】
図４は、通信システム１における通信パターンを示す図である。
【００３５】
第１の通信パターンは、ＳＰＩ通信が開始してＳＰＩ通信が終了するまで継続する通信パターンである。ＳＰＩ通信が継続している間、ＳＣＬ端子にはＬレベルの信号が送信されているので、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２は、マスタとして機能することはなく、ＳＰＩ通信がＩ２Ｃ通信により中断されることはない。
【００３６】
第２の通信パターンは、Ｉ２Ｃ通信が開始してＩ２Ｃ通信が終了するまで継続する通信パターンである。Ｉ２Ｃ通信が継続している間に、ＳＰＩデバイス１０のＣＳ端子から送信されるＣＳ信号がＨレベルの信号であり続ける場合、Ｉ２Ｃ通信はＳＰＩ通信により中断されない。
【００３７】
第３の通信パターンは、Ｉ２Ｃ通信が開始してＩ２Ｃ通信が終了するまでの間にＳＰＩ通信が割り込むためにＩ２Ｃ通信が中断され、割り込んだＳＰＩ通信が終了した後に中断されたＩ２Ｃ通信が再開する通信パターンである。Ｉ２Ｃ通信が継続している間に、ＳＰＩデバイス１０のＣＳ端子からＬレベルのＣＳ信号が送信されると、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＣＬ端子にＬレベルの信号が送信されマスタとしての機能を中断する。ＳＰＩ通信が終了してＳＰＩデバイス１０からＨレベルのＣＳ信号が送信されると、ＳＣＬ端子へのＬレベルの信号の送信が停止され、マスタとしての機能を中断してＩ２ＣデバイスがＩ２Ｃ通信を再開する。
【００３８】
選択回路２０では、ＳＰＩデバイス１０のＣＳ端子から送信される信号は第１選択素子２１においてオープンドレイン出力に変換され、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＣＬ端子とＭＰＵ３０のＣＳ・ＳＣＬ端子とに接続される。一方、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＣＬ端子は第１プルアップ抵抗４１が接続されており、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＣＬ端子から送信される信号もまたオープンドレイン出力である。すなわち、ＳＰＩデバイス１０のＣＳ端子から送信される信号と第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＣＬ端子とはＷｉｒｅｄ−ＡＮＤ接続されている。ＣＳ端子から送信される信号とＳＣＬ端子とがＷｉｒｅｄ−ＡＮＤ接続されているので、ＣＳ端子からＨレベルの信号が送信されるとき、ＳＰＩデバイス１０のＣＳ端子は第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＣＬ端子から切断される。また、ＣＳ端子からＬレベルの信号が送信されるとき、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＣＬ端子及びＭＰＵ３０のＣＳ・ＳＣＬ端子にはＬレベルの信号が送信される。
【００３９】
選択回路２０の第２選択素子２２は、ＭＰＵ３０のＤ１端子とＳＰＩデバイス１０のＭＯＳＩ端子とを接続する。また、選択回路２０の第３選択素子２３は、ＭＰＵ３０のＤ１端子と第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＤＡ端子とを接続する。第２選択素子２２と第３選択素子２３は、ＳＰＩデバイス１０のＣＳ端子から送信されるＣＳ信号の信号レベルに応じて相補的にオンオフ状態が変化する。すなわち、第２選択素子２２がオン状態のとき第３選択素子２３はオフ状態となり、第２選択素子２２がオフ状態のとき第３選択素子２３はオン状態となる。第２選択素子２２及び第３選択素子２３が相補的にオンオフ状態となるので、ＳＰＩデバイス１０のＭＯＳＩ端子から送信される信号と、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＤＡ端子から送信される信号とが衝突するおそれはない。
【００４０】
ＭＣＵ３０は、ＳＰＩデバイス１０、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のスレーブとして機能する電子回路である。すなわち、ＳＰＩデバイス１０のＣＳ端子からＬレベルの信号が送信され且つＳＰＩデバイス１０のＣＬＫ端子からＳＰＩＣＫ端子にクロック信号が送信されているときに、ＭＣＵ３０は、ＳＰＩ通信のスレーブとして機能する。また、ＳＰＩデバイス１０のＣＳ端子からＨレベルの信号が送信され且つ第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２の何れかがスタート・コンディションを発行したとき、ＭＣＵ３０は、Ｉ２Ｃ通信のスレーブとしての機能を開始する。ＭＣＵ３０がＩ２Ｃ通信のスレーブとしての機能している間、ＳＰＩ通信により中断された場合を含めてＩ２Ｃ通信時に１バイトのデータ信号を受信する毎に、Ｄ１端子からＡＣＫ信号を送信する。ＭＣＵ３０は、第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２の何れかがスタート・コンディションを発行したとき、Ｉ２Ｃ通信のスレーブとしての機能を終了する。
【００４１】
ＭＣＵ３０は、ＭＣＵ３０の内部に記憶されるコンピュータプログラム（本明細書では、プログラムとも称する）に基づいて、スレーブとして機能するための所定の処理を実行する。ＭＣＵ３０は、ＭＣＵ３０が実行する処理のためのプログラムを記憶することができるコンピュータ読み取り可能な記録媒体とも接続可能である。記録媒体として、ＣＤ−ＲＯＭ、ＤＶＤディスク及びＵＳＢメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が使用される。
【００４２】
図５は、ＭＣＵ３０の処理フローを示すフローチャートである。
【００４３】
ＭＣＵ３０は、ＳＰＩ通信が開始しているか否かを判定し（Ｓ１０１）、ＳＰＩ処理が開始していると判定した場合、ＳＰＩ通信が終了するまでＳＰＩ通信を実行する（Ｓ１０２）。ＭＣＵ３０は、ＳＰＩ処理が開始していないと判定した場合、Ｉ２Ｃ通信が開始しているか否かを判定する（Ｓ１０３）。ＭＣＵ３０が、ＳＰＩ処理が開始していないと判定した場合、処理はＳ１０１に戻る。スタート・コンディションが発行されてＩ２Ｃ処理が開始されたと判定した場合、ＭＣＵ３０は、Ｉ２Ｃ通信を開始するための処理を実行し（Ｓ１０４）、ＳＰＩ通信が開始しているか否かを判定する（Ｓ１０５）。ＳＰＩ処理が開始していると判定した場合、ＭＣＵ３０は、ＳＰＩ通信が終了するまでＳＰＩ通信を実行した（Ｓ１０６）後に、１ビットのデータ信号についてＩ２Ｃ通信を実行する（Ｓ１０７）。ＳＰＩ処理が開始していないと判定した場合、ＭＣＵ３０は、１ビットのデータ信号についてＩ２Ｃ通信を実行する（Ｓ１０７）。ＭＣＵ３０が、Ｉ２Ｃ通信が終了していないと判定する（Ｓ１０８）と、処理はＳ１０５に戻り、Ｓ１０５〜Ｓ１０８の処理を繰り返す。ＭＣＵ３０が、ストップ・コンディションが発行されてＩ２Ｃ通信が終了したと判定する（Ｓ１０８）と、処理はＳ１０１に戻る。
【００４４】
図６は、より所詳細なＭＣＵ３０の処理フローを示すフローチャートである。
【００４５】
ＭＣＵ３０は、ＳＰＩ通信が開始しているか否かを判定するためにＳＰＩデバイス１０のＣＬＫ端子からＳＰＩＣＫ端子に送信される信号が遷移したか否かを判定する（Ｓ２０１）。ＳＰＩデバイス１０のＣＬＫ端子から送信される信号が遷移したと判定した場合、ＳＰＩ通信を実行し（Ｓ２０２）、ＣＳ・ＳＣＬ端子に送信される信号が立上がり遷移したか否かを判定する（Ｓ２０３）。ＭＣＵ３０が、ＣＳ・ＳＣＬ端子に送信される信号が立上がり遷移したと判定すると、処理はＳ２０１に戻る。ＭＣＵ３０が、ＣＳ・ＳＣＬ端子に送信される信号が立上がり遷移していないと判定すると、ＳＰＩデバイス１０のＣＬＫ端子から送信される信号が遷移するまで待機し（Ｓ２０４）、処理はＳ２０２に戻る。
【００４６】
ＭＣＵ３０は、ＳＰＩデバイス１０のＣＬＫ端子から送信される信号が遷移していないと判定した場合、スタート・コンディションが発行されているか否かを判定する。すなわち、ＭＣＵ３０は、ＣＳ・ＳＣＬ端子に送信される信号がＨレベルであり且つＤ１端子に送信される信号が立下がり遷移しているか否かを判定する（Ｓ２０５）。Ｓ２０５の判定がＮｏである場合、処理はＳ２０１に戻る。Ｓ２０５の判定がＹｅｓである場合、Ｉ２Ｃ通信のスタート・コンディションが発行されたと判定してＩ２Ｃ通信を開始するための処理を実行する（Ｓ２０６）。次いで、ＭＣＵ３０は、ＳＰＩデバイス１０のＣＬＫ端子から送信される信号が遷移したと判定した（Ｓ２０７）場合、ＳＰＩ割り込み通信を実行し（Ｓ２０８）、処理はＳ２０７に戻る。ＭＣＵ３０は、ＳＰＩデバイス１０のＣＬＫ端子から送信される信号が遷移していないと判定した（Ｓ２０７）場合、ＣＳ・ＳＣＬ端子に送信される信号が立上がり遷移したか否かを判定する（Ｓ２０９）。ＭＣＵ３０が、ＣＳ・ＳＣＬ端子に送信される信号が立上がり遷移していないと判定した場合、処理はＳ２０７に戻り、ＳＣＳ・ＳＣＬ端子に送信される信号が立上がり遷移していると判定した場合、処理はＳ２１０に進む。
【００４７】
次いで、ＭＣＵ３０は、１ビットのデータ信号についてＩ２Ｃ通信を実行する（Ｓ２１０）。ここで、ＭＣＵ３０は、ＳＰＩ割り込み通信を実行していた場合にはＳＰＩ割り込み通信を終了する（Ｓ２１０）。ＭＣＵ３０は、ＣＳ・ＳＣＬ端子に送信される信号がＨレベルであり且つＤ１端子に送信される信号が立上がり遷移して、ストップ・コンディションが発行されてＩ２Ｃ通信が終了したと判定する（Ｓ２１１）まで、Ｓ２０７〜Ｓ２１１の処理を繰り返す。ＭＣＵ３０が、Ｉ２Ｃ通信が終了したと判定する（Ｓ２１１）と、処理はＳ２０１に戻る。
【００４８】
図７（ａ）はＭＣＵ３０がＳＰＩ通信のスレーブとして機能するときのタイミングチャートを示す図であり、図７（ｂ）は図６に示すフローチャートの図７（ａ）に関連する部分を示すフローチャートである。
【００４９】
図７（ａ）において双方向矢印ＳＰＩで示される期間で、ＳＰＩデバイス１０は、マスタとして機能するため、ＣＳ端子からＬレベルのＣＳ信号を送信する。ＭＣＵ３０は、図７（ａ）で矢印Ａで示されるＳＰＩデバイス１０のＣＬＫ端子からＳＰＩＣＫ端子に送信される信号が立ち下がるときにＳＰＩ通信の開始を検出して、ＳＰＩ通信のスレーブとしての機能を開始する（Ｓ２０１）。また、ＭＣＵ３０は、図７（ｂ）で矢印Ｂで示されるＳＰＩデバイス１０のＣＳ端子の信号の立ち上がり遷移によりＣＳ・ＳＣＬ端子の信号が立上がり遷移するときにＳＰＩ通信の終了を検出して、ＳＰＩ通信のスレーブとしての機能を終了する（Ｓ２０３）。
【００５０】
図８（ａ）はＭＣＵ３０がＩ２Ｃ通信のスレーブとして機能しているときにＳＰＩ通信が割り込むときのタイミングチャートを示す図であり、図８（ｂ）は図６に示すフローチャートの図８（ａ）に関連する部分を示すフローチャートである。
【００５１】
図８（ａ）では、ＭＣＵ３０は、ＣＳ・ＳＣＬ端子にＨレベルの信号が送信され且つＤ１に送信される信号が立ち下がり遷移するときにＩ２Ｃ通信のスタート・コンディションが発行されたと判定してＩ２Ｃ通信のスレーブとしての機能を開始する（Ｓ２０５）。また、ＭＣＵ３０は、ＣＳ・ＳＣＬ端子にＨレベルの信号が送信され且つＤ１に送信される信号が立ち上がり遷移するときにＩ２Ｃ通信のストップ・コンディションが発行されたと判定してＩ２Ｃ通信のスレーブとしての機能を停止する（Ｓ２１１）。ＭＣＵ３０は、Ｉ２Ｃ通信のスレーブとして機能している間にＳＰＩデバイス１０のＣＬＫ端子からＳＰＩＣＫ端子に送信される信号の遷移を検知するとＩ２Ｃ通信のスレーブとしての機能を中断してＳＰＩ通信のスレーブとして機能する（Ｓ２０７）。ＭＣＵ３０は、ＣＳ・ＳＣＬ端子の信号が立上がり遷移するときにＳＰＩ通信の終了を検出して、ＳＰＩ通信のスレーブとしての機能を終了して（Ｓ２０９）、Ｉ２Ｃ通信のスレーブとしての機能を再開する（Ｓ２１０）。
【００５２】
通信システム１では、Ｉ２Ｃ通信とＳＰＩ通信とは非同期であるため、Ｉ２Ｃ通信の全ての処理でＳＰＩ通信が割り込む可能性がある。Ｉ２Ｃ通信には、スタート・コンディションが発行される処理、ストップ・コンディションが発行される処理、データ信号を送受信する処理、及びＡＣＫ信号を送受信する処理がある。
【００５３】
スタート・コンディションが発行される処理でＳＰＩ通信が割り込む場合、ＭＣＵ３０は、Ｉ２Ｃ通信を開始し、データ信号を受信する前にＩ２Ｃ通信を中断して、ＳＰＩ通信を開始する。ＭＣＵ３０は、ＳＰＩ通信を終了した後、マスタとして機能するＩ２Ｃデバイスからデータ信号を受信して、Ｉ２Ｃ通信のスレーブとしての機能を再開する。
【００５４】
ストップ・コンディションが発行される処理でＳＰＩ通信が割り込んだ場合、マスタとして機能するＩ２Ｃデバイスは、ＳＣＬ端子に送信される信号がＨレベルであることを確認してＳＤＡ端子から送信される信号を立上がり遷移させる。Ｉ２Ｃ通信のマスタがＳＣＬ端子に送信される信号がＨレベルであることを確認することにより、ストップ・コンディションを発行する処理の途中にＳＰＩ通信に割り込まれた場合でもストップ・コンディションを発行させることができる。
【００５５】
データ信号を送受信する処理では、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＣＬ端子並びにＭＣＵ３０のＣＳ・ＳＣＬ端子に送受信される信号がクロック信号として検知されるか否かにより通信システム１に不具合が生じるおそれがある。具体的には、Ｉ２Ｃ通信のクロック信号としてＭＣＵ３０のＣＳ・ＳＣＬ端子に送信されるＳＣＬ信号が立上がり遷移した直後に、ＳＰＩデバイス１０がＳＰＩ通信を割り込むときに不具合が生じる可能性がある。すなわち、ＣＳ・ＳＣＬ端子に送信される信号は、立ち上がり遷移の途中又は立上がり遷移の直後に立ち下がるため、マスタとして機能するＩ２Ｃデバイス及びスレーブとして機能するＭＣＵ３０の双方で値が不定になる可能性がある。
【００５６】
表３は、データ信号を送受信する処理で生じるＭＣＵ３０の症状と、その対策を示す表である。
【００５７】
【表３】
2016004388.tif 000005
【００５８】
表３において、「○」は第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＣＬ端子並びにＭＣＵ３０のＣＳ・ＳＣＬ端子に送受信されるＳＣＬ信号の立ち上がりエッジが認識される場合を示す。また、「×」は第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＣＬ端子並びにＭＣＵ３０のＣＳ・ＳＣＬ端子に送受信されるＳＣＬ信号の立ち上がりエッジが認識されない場合を示す。
【００５９】
第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２とＭＣＵ３０との双方のＳＣＬ信号の立ち上がりエッジに対する認識が一致する場合、すなわち双方がＳＣＬ信号の立ち上がりエッジを認識し又は認識しない場合、問題は生じない。
【００６０】
第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２でＳＣＬ信号の立ち上がりエッジが認識される一方、ＭＣＵ３０でＳＣＬ信号の立ち上がりエッジが認識されない場合、ＭＣＵ３０が受信するデータ信号が１ビット飛ばされる。すなわち、マスタとして機能する第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２は、データ信号を送信したと認識し、スレーブとして機能するＭＣＵ３０は送信されたデータ信号を受信したと認識しないため、送信されたデータ信号が１ビット飛ばされる。
【００６１】
図９は、マスタがＳＣＬ信号の立ち上がりエッジを認識する一方、スレーブがＳＣＬ信号の立ち上がりエッジを識別しないときのタイミングチャートを示す図である。
【００６２】
図９において、矢印Ａで示すように、マスタとして機能する第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２が「６」で示される７ビット目のデータ信号をスレーブとして機能するＭＣＵ３０に送信中にＳＰＩデバイス１０により中断されている。このとき、マスタとして機能する第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２は、「６」で示される７ビット目のデータ信号を送信したと認識している。一方、スレーブとして機能するＭＣＵ３０は、ＳＣＬ信号の立ち上がりエッジを認識せずに、「６」で示される７ビット目のデータ信号を受信しない。
【００６３】
ＳＰＩデバイス１０とＭＣＵ３０によるＳＰＩ通信が終了すると、マスタとして機能する第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２は、「７」で示される８ビット目のデータ信号を送信する。次いで、第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２は、図９において矢印Ｂで示すときにＡＣＫ信号を受信するために待機する。しかしながら、スレーブとして機能するＭＣＵ３０は、マスタが送信した７ビット目のデータ信号を受信していないため、「７」で示されるデータ信号は７ビット目の信号であり１バイトのデータ信号を受信していないと認識してＡＣＫ信号を送信しない。
【００６４】
図９において、矢印Ｂで示すときに、スレーブとして機能するＭＣＵ３０がＡＣＫ信号を送信しないので、マスタとして機能するＩ２Ｃデバイスは、ノット・アクノリッジ（Not Acknowledge、ＮＡＫ）を検知する。次いで、マスタとして機能する第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２は、矢印Ｃで示すように、リピート・スタート・コンディションを発行して、ＳＰＩ通信で中断されたＩ２Ｃ通信で最後に送信された１バイトのデータ信号を再送する。
【００６５】
ＭＣＵ３０は、ＳＰＩ通信により中断されたＩ２Ｃ通信が再開された後にＡＣＫ信号を送信する前に、マスタとして機能する第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２がリピート・スタート・コンディションを発行したことを検知する。このとき、ＭＣＵ３０は、ＳＰＩ通信により中断されたＩ２Ｃ通信で最後に受信した１バイトのデータ信号に対応するデータを破棄する。そして、ＭＣＵ３０は、第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２が再送した１バイトのデータ信号を受信する。
【００６６】
ＭＣＵ３０は、最後に受信した１バイトのデータ信号に対応するデータを破棄し、再送された１バイトのデータ信号を受信するので、１ビット飛ばされたデータを有効なデータとして使用することはない。
【００６７】
第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２でＳＣＬ信号の立ち上がりエッジが認識されない一方、ＭＣＵ３０でＳＣＬ信号の立ち上がりエッジが認識される場合、ＭＣＵ３０が受信する同一ビットのデータ信号が２回受信される。すなわち、マスタとして機能する第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２は、Ｉ２Ｃ通信の中断の前にデータ信号を送信していないと認識して、Ｉ２Ｃ通信の中断の後に同一データを再送する。一方、スレーブとして機能するＭＣＵ３０は、Ｉ２Ｃ通信の中断の前後に同一データを２回受信するため、同一ビットのデータ信号を２回受信する。
【００６８】
図１０は、マスタがＳＣＬ信号の立ち上がりエッジを認識しない一方、スレーブがＳＣＬ信号の立ち上がりエッジを識別するときの第１のタイミングチャートを示す図である。図１０に示すタイミングチャートでは、「７」で示される８ビット目のデータ信号はＨレベルのデータ信号である。
【００６９】
図１０において、矢印Ａで示すように、マスタとして機能する第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２が「６」で示される７ビット目のデータ信号をスレーブとして機能するＭＣＵ３０に送信中にＳＰＩデバイス１０により中断されている。このとき、マスタとして機能する第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２は、「６」で示される７ビット目のデータ信号を送信していないと認識している。一方、スレーブとして機能するＭＣＵ３０は、ＳＣＬ信号の立ち上がりエッジを認識して、「６」で示される７ビット目のデータ信号を受信する。
【００７０】
ＳＰＩデバイス１０とＭＣＵ３０によるＳＰＩ通信が終了すると、マスタとして機能する第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２は、「６」で示される７ビット目のデータ信号を送信する。スレーブとして機能するＭＣＵ３０は、Ｉ２Ｃ通信の再開後に７ビット目のデータ信号を受信すると、Ｉ２Ｃ通信の中断の前後で７ビット目を２回受信しているため、１バイトのデータ信号を受信したと認識する。
【００７１】
次いで、矢印Ｂで示すときに、第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２は、「７」で示される８ビット目のＨレベルのデータ信号を送信する。一方、ＭＣＵ３０は、１バイトのデータ信号を受信したと認識しているため、矢印Ｂで示すときに、Ｌレベルの信号であるＡＣＫ信号を送信する。マスタとして機能する第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２がＨレベルのデータ信号を送信し、スレーブとして機能するＭＣＵ３０がＬレベルのＡＣＫ信号を送信することより、矢印Ｂで示すときにデータ信号が衝突する。データ信号が衝突すると、マスタとして機能するＩ２Ｃデバイスは、マスタとしての機能を手放してＨレベルのデータ信号の送信を停止し、ＭＣＵ３０のＤ１端子はＬレベルの信号が送信され、ＣＳ・ＳＣＬ端子はＨレベルの信号が受信された状態になる。
【００７２】
ＭＣＵ３０は、Ｄ１端子はＬレベルの信号が送信され、ＣＳ・ＳＣＬ端子はＨレベルの信号が受信された状態が所定の時間継続したことを検知し、Ｌレベルの信号であるＡＣＫ信号の送信を停止する。ＡＣＫ信号の送信が停止すると、矢印Ｃで示すように、第２プルアップ抵抗４２により、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＤＡ端子並びにＭＣＵ３０のＤ１端子にＨレベルの信号が送信される。次いで、マスタとして機能する第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２は、矢印Ｄで示すように、スタート・コンディションを発行して、ＳＰＩ通信で中断されたＩ２Ｃ通信で最後に送信された１バイトのデータ信号を再送する。
【００７３】
ＭＣＵ３０は、Ｌレベルの信号が送信され、ＣＳ・ＳＣＬ端子はＨレベルの信号が受信された状態が所定の時間継続したことを検知すると、ＡＣＫ信号の送信を停止する。次いで、ＭＣＵ３０は、ＡＣＫ信号を送信した後に次の１バイトのデータ信号を受信する前に、マスタとして機能する第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２がスタート・コンディションを発行したことを検知する。このとき、ＭＣＵ３０は、ＳＰＩ通信により中断されたＩ２Ｃ通信で最後に受信した１バイトのデータ信号に対応するデータを破棄する。そして、ＭＣＵ３０は、第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２が再送した１バイトのデータ信号を受信する。
【００７４】
ＭＣＵ３０は、最後に受信した１バイトのデータ信号に対応するデータを破棄し、再送された１バイトのデータ信号を受信するので、同一ビットが２回受信されたデータを有効なデータとして使用することはない。
【００７５】
図１１は、マスタがＳＣＬ信号の立ち上がりエッジを認識しない一方、スレーブがＳＣＬ信号の立ち上がりエッジを識別するときの第２のタイミングチャートを示す図である。図１１に示すタイミングチャートでは、「７」で示される８ビット目のデータ信号はＬレベルのデータ信号である。
【００７６】
図１１において、図１０の場合と同様に、矢印Ａで示すときに、マスタとして機能する第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２は、「６」で示される７ビット目のデータ信号を送信していないと認識している。一方、スレーブとして機能するＭＣＵ３０は、ＳＣＬ信号の立ち上がりエッジを認識して、「６」で示される７ビット目のデータ信号を受信する。
【００７７】
図１０の場合と同様に、ＳＰＩデバイス１０とＭＣＵ３０によるＳＰＩ通信が終了すると、マスタとして機能する第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２は、「６」で示される７ビット目のデータ信号を送信する。ここで、スレーブとして機能するＭＣＵ３０は、Ｉ２Ｃ通信の中断の前後で７ビット目を２回受信しているため、１バイトのデータ信号を受信したと認識する。
【００７８】
次いで、矢印Ｂで示すときに、第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２は、「７」で示される８ビット目のＬレベルのデータ信号を送信する。一方、ＭＣＵ３０は、１バイトのデータ信号を受信したと認識しているため、矢印Ｂで示すときに、Ｌレベルの信号であるＡＣＫ信号を送信する。矢印Ｂで示すときには、マスタ及びスレーブの双方がＬレベルの信号を送信するためデータ信号の衝突は起きないため、マスタとして機能する第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２は通信エラーを検知しない。
【００７９】
次いで、マスタとして機能する第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２は、矢印Ｃに示されるときにＮＡＫを検知する。スレーブとして機能するＭＣＵ３０は、矢印Ｂで示されるときにＡＣＫ信号を送信しており、矢印Ｃに示されるときにはＡＣＫ信号を送信しないためである。次いで、マスタとして機能する第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２は、矢印Ｄで示すように、リピート・スタート・コンディションを発行して、ＳＰＩ通信で中断されたＩ２Ｃ通信で最後に送信された１バイトのデータ信号を再送する。
【００８０】
ＭＣＵ３０は、ＳＰＩ通信により中断されたＩ２Ｃ通信が再開された後にＡＣＫ信号を送信した後に次の１バイトのデータ信号を受信する前に、マスタがリピート・スタート・コンディションを発行したことを検知する。このとき、ＭＣＵ３０は、ＳＰＩ通信により中断されたＩ２Ｃ通信で最後に受信した１バイトのデータ信号に対応するデータを破棄する。そして、ＭＣＵ３０は、第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２が再送した１バイトのデータ信号を受信する。
【００８１】
ＭＣＵ３０は、最後に受信した１バイトのデータ信号に対応するデータを破棄し、再送された１バイトのデータ信号を受信するので、同一ビットが２回受信されたデータを有効なデータとして使用することはない。
【００８２】
ＡＣＫ信号を送受信する処理でＳＰＩ通信が割り込む場合、ＭＣＵ３０は、Ｉ２Ｃ通信の再開後には、ＡＣＫ信号を送信せずにＤ１端子に送信される信号をＨレベルにする。
【００８３】
図１２は、ＭＣＵ３０がＡＣＫ信号を送信している間にＳＰＩ通信によりＩ２Ｃ通信が中断されたときのタイミングチャートを示す図である。
【００８４】
図１２において、矢印Ａで示すように、スレーブとして機能するＭＣＵ３０がＡＣＫ信号を送信中にＳＰＩデバイス１０により中断されている。また、矢印Ｂで示すように、Ｉ２Ｃ通信の再開後は、ＭＣＵ３０はＡＣＫ信号を送信せずに、ＭＣＵ３０のＤ１端子に送信される信号は、第２プルアップ抵抗４２によりＨレベルに遷移される。
【００８５】
ＭＣＵ３０は、Ｉ２Ｃ通信の再開後にＡＣＫ信号を送信しないので、マスタとして機能する第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２がＳＰＩ通信による中断の前後に亘って２回ＡＣＫ信号を受信することを防止できる。また、マスタとして機能する第１Ｉ２Ｃデバイス１１又は第２Ｉ２Ｃデバイス１２がＳＰＩ通信による中断前にＡＣＫ信号を受信できなかった場合、矢印Ｃで示すように、リピート・スタート・コンディションを発行する。この場合、図９に示す場合と同様の処理によりＭＣＵ３０が重複するデータを有することを防止できる。
【００８６】
通信システム１では、ＭＣＵ３０は、２本のバスで通信するＩ２Ｃ通信と４本のバスで通信するＳＰＩ通信とを４つの端子で動作可能であるので、ＭＣＵ３０にＩ２Ｃ通信及びＳＰＩ通信に使用される端子数を減らすことができる。また、通信システム１では、センサ等を含むＳＰＩデバイス１０、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のそれぞれをマスタとするので、イベント通知用に端子を配置することなくイベントにより検出された情報を処理をすることができる。
【００８７】
また、通信システム１では、Ｉ２Ｃ通信とＳＰＩ通信とが非同期に動作するが、選択回路２０を有することにより、Ｉ２Ｃデバイスの信号とＳＰＩデバイスの信号とが衝突するおそれはない。具体的にはＭＣＵ３０のＤ１端子に接続される選択回路２０の第２選択素子２２と第３選択素子２３は、ＣＳ信号の信号レベルに応じて相補的にオンオフ状態が変化するので、Ｉ２Ｃ通信及びＳＰＩ通信のデータ信号は衝突しない。また、ＳＰＩ通信のためにＣＳ信号がＬレベルになる間、選択回路２０の第１選択素子２１を介して、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２のＳＣＬ端子にＬレベルの信号が入力されるので、ＳＰＩ通信の間にＩ２Ｃ通信は開始されない。
【００８８】
通信システム１では、Ｉ２Ｃ通信のスレーブとして機能しているときに、ＣＳ信号の遷移に応じて、Ｉ２Ｃ通信のスレーブとしての機能を中断して、ＳＰＩ通信のスレーブとしての機能を開始する。そして、ＳＰＩ通信が終了した後にＣＳ信号の遷移に応じて、中断したＩ２Ｃ通信のスレーブとしての機能を再開する。通信システム１では、ＳＰＩ通信を優先的に処理することにより、ＳＰＩ通信時にＩ２Ｃ通信が競合することを防止することができる。
【００８９】
また、通信システム１では、ＭＣＵ３０は、Ｉ２Ｃ通信時にデータ信号を１ビット受信する毎に、ＣＬＫ信号が遷移しているか否かを判定しているので、ＳＰＩ通信の開始を示すＣＳ信号の立ち上がりを早急に検知することができる。
【００９０】
また、通信システム１では、第１Ｉ２Ｃデバイス１１及び第２Ｉ２Ｃデバイス１２は、ストップ・コンディションを発行するときに、ＳＣＬ端子に送信される信号がＨレベルであることを確認した後に、ＳＤＡ端子から送信される信号を立上がり遷移させる。ＳＣＬ端子に送信される信号がＨレベルであることを確認した後に、ＳＤＡ端子から送信される信号を立上がり遷移させることにより、ストップ・コンディションの発行中にＳＰＩ通信が割り込んだ場合でもＩ２Ｃ通信を終了できる。
【００９１】
また、通信システム１では、ＭＣＵ３０は、ＳＰＩ通信により中断された場合を含めてＩ２Ｃ通信時に１バイトのデータ信号を受信する毎に、マスタとして機能するＩ２ＣデバイスにＡＣＫ信号を送信する。ＳＰＩ通信により中断された場合に、Ｉ２Ｃ通信が中断される前後に亘って１バイトのデータ信号を計数してＡＣＫ信号を送信するので、マスタとスレーブとの間でＡＣＫ信号の送受信のために係数したデータ信号の数が相違するおそれはない。
【００９２】
通信システム１では、選択回路２０の第２選択素子２２はｐＭＯＳで形成され、第３選択素子２３はｐＭＯＳで形成される。しかしながら、実施形態に係る通信システムでは、素子を通過するデータの電圧の振れ幅を適当な値に維持したい場合などは、これらの素子はトランスミッションゲートで形成されてもよい。
【００９３】
図１３は、第２実施形態に係る通信システムの回路ブロック図である。
【００９４】
通信システム２は、トランスミッションゲートで形成される第２選択素子２５及び第３選択素子２６を有する選択回路２４が配置されることが第１実施形態に係る通信システム１と相違する。
【００９５】
また、通信システム１では、ＳＰＩデバイス１０のＭＯＳＩ端子が選択回路２０に接続され、ＭＩＳＯ端子がＭＣＵ３０のＤ０端子に接続される。しかしながら、実施形態に係る通信システムでは、ＳＰＩデバイス１０のＭＩＳＯ端子が選択回路に接続され、ＭＯＳＩ端子がＭＣＵ３０のＤ０端子に接続されてもよい。
【００９６】
図１４は、第３実施形態に係る通信システムの回路ブロック図である。
【００９７】
通信システム３は、ＳＰＩデバイス１０のＭＩＳＯ端子が選択回路２４に接続され、ＭＯＳＩ端子がＭＣＵ３０のＤ０端子に接続されることが第２実施形態に係る通信システム２と相違する。
【００９８】
また、通信システム１では、Ｉ２Ｃ通信のマスタとして機能する２つのＩ２Ｃデバイスが配置されるが、１つ又は３つ以上のＩ２ＣデバイスをＩ２Ｃ通信のマスタとして配置してもよい。
【００９９】
また、通信システム１において、ＳＰＩ通信及びＩ２Ｃ通信の開始及び終了の判定は、図６に示すフローチャートに示す信号の状態及び遷移を使用しているが、他の信号の状態及び遷移を使用してもよい。ＳＰＩ通信及びＩ２Ｃ通信の開始及び終了の判定に使用可能な信号の状態及び遷移を表４に示す。
【０１００】
【表４】
2016004388.tif 000006
【０１０１】
また、通信システム１では、ＭＣＵ３０は、Ｉ２Ｃ通信のスレーブとして機能しているときに、データ信号を１ビット毎受信する毎にＳＰＩＣＫ端子に送信されたＣＬＫ信号が遷移したか否かを判定する。しかしながら、実施形態に係る通信システムでは、Ｉ２Ｃ通信のスレーブは、２ビット以上の所定のビット毎に、送信されたＣＬＫ信号が遷移したか否かを判定するようにしてもよい。
【０１０２】
通信システム１では、ＭＣＵ３０は、Ｉ２Ｃ通信中にＳＰＩ割り込み通信が発生したときに、Ｉ２Ｃ通信を再開するときに、中断前のＩ２Ｃ通信で送信されたデータ信号の次のデータ信号を送信するように動作する。しかしながら、実施形態に係る通信システムでは、Ｉ２Ｃ通信のスレーブとして機能するＭＰＵは、Ｉ２Ｃ通信中にＳＰＩ割り込み通信が発生したときに、中断されたＩ２Ｃ通信で送信されていた一連のデータ信号を全て再送するように動作してもよい。
【０１０３】
図１５は、他の実施形態に係るＭＣＵの処理フローを示すフローチャートである。
【０１０４】
図１５に示すフローチャートは、Ｓ２１０の代わりにＳ２２０〜Ｓ２２２の処理を有することが図６に示すフローチャートと相違する。図１５の処理では、ＭＣＵはＳＰＩ割込み処理におけるデータ信号の送信が終了してＣＳ・ＳＣＬ端子に入力される信号が立上がり遷移したと判定した（Ｓ２２０）とき、ＳＰＩ通信のスレーブとしての機能を終了する（Ｓ２２１）。次いで、ＭＣＵは、Ｉ２Ｃ通信のスレーブとして機能して、中断されたＩ２Ｃ通信で送信されていた一連のデータ信号を全て受信する（Ｓ２２１）。また、ＭＣＵはＩ２Ｃ通信の処理によってＣＳ・ＳＣＬ端子に入力される信号が立上がり遷移したと判定した（Ｓ２２０）とき、Ｉ２Ｃ通信の処理を実行する（Ｓ２２２）。
【０１０５】
図１５に示すフローチャートでは、Ｉ２Ｃ通信のマスタとして機能するＩ２Ｃデバイスは、ＳＣＬ端子に送信される信号が一定時間以上Ｌレベルである場合に、ＳＰＩ割り込み通信が発生したと判断する。そして、Ｉ２Ｃ通信のマスタとして機能するＩ２Ｃデバイスは、Ｉ２Ｃ通信が再開されたとき、一連のデータ信号を全て再送する。
【０１０６】
また、通信システム１において、ＳＰＩデバイス１０はモード３で動作するが、実施形態に係る通信システムでは、ＳＰＩ通信のモードはモード３には限定される他のモードのＳＰＩ通信を採用してもよい。
【符号の説明】
【０１０７】
１〜３    通信システム
１０    ＳＰＩデバイス
１１    第１Ｉ２Ｃデバイス
１２    第２Ｉ２Ｃデバイス
２０、２４    選択回路
３０    ＭＣＵ
【図１】
2016004388.tif 000007
【図２】
2016004388.tif 000008
【図３】
2016004388.tif 000009
【図４】
2016004388.tif 000010
【図５】
2016004388.tif 000011
【図６】
2016004388.tif 000012
【図７】
2016004388.tif 000013
【図８】
2016004388.tif 000014
【図９】
2016004388.tif 000015
【図１０】
2016004388.tif 000016
【図１１】
2016004388.tif 000017
【図１２】
2016004388.tif 000018
【図１３】
2016004388.tif 000019
【図１４】
2016004388.tif 000020
【図１５】
2016004388.tif 000021