(57)【特許請求の範囲】
【請求項１】
マスタ装置と、前記マスタ装置と接続される複数のスレーブ装置を備える伝送システムであって、
前記マスタ装置は、
前記複数のスレーブ装置のうちの第１のスレーブ装置が応答しないクロック長さの制御信号を前記複数のスレーブ装置のそれぞれに第１のタイミングで伝送する第１の伝送手段と、前記複数のスレーブ装置のそれぞれに対して前記複数のスレーブ装置のうちの増設された第２のスレーブ装置を指定する識別子を前記第１のタイミングより後の第２のタイミングで伝送する第２の伝送手段と、
を備え、
前記複数のスレーブ装置のうちの前記第２のスレーブ装置は、
前記制御信号と自装置を指定する前記識別子とを受信した場合に、前記マスタ装置に対してデータを伝送する第３の伝送手段を備え、
前記マスタ装置は、
前記第２のスレーブ装置との通信を開始する場合、前記第１の伝送手段によって、スレーブセレクト信号をクロック信号の１クロック長さ分だけ第１の論理状態にして通信開始とし、
続いて、前記スレーブセレクト信号を第２の論理状態にして前記第２のスレーブ装置との通信期間とし、
前記第２の論理状態の終了後、前記スレーブセレクト信号を前記クロック信号の１クロック長さ分だけ第１の論理状態に戻して前記第２のスレーブ装置と通信終了とした後に、
前記スレーブセレクト信号を前記第１のスレーブ装置が応答しない第２の論理状態にする、
ことを特徴とした伝送システム。
【請求項２】
前記マスタ装置および前記第１のスレーブ装置は、前記通信期間以外の期間において、前記マスタ装置が前記スレーブセレクト信号を前記第１のスレーブ装置が応答する第１の論理状態にすることにより、前記クロック信号に同期したシリアルデータの通信を行う、
ことを特徴とした請求項１記載の伝送システム。
【請求項３】
前記マスタ装置は、前記通信期間で、前記第２の伝送手段により、識別子探索コマンドに続いて、前記第２のスレーブ装置間で一意な識別子であるデバイス固有識別子の候補を探索用のデバイス固有識別子として送信し、
前記第２のスレーブ装置は、前記通信期間で、前記識別子探索コマンドに続いて受信した前記探索用のデバイス固有識別子を自装置のデバイス固有識別子と比較して、一致すれば第１の論理状態を有する応答を出力し、一致しなければ第２の論理状態を有する応答を出力し、
前記マスタ装置は、前記通信期間で、前記探索用のデバイス固有識別子を送信した後に、順次入力する前記応答が第１の論理状態であれば、前記送信した探索用のデバイス固有識別子を何れかの前記第２のスレーブ装置に設定されているデバイス固有識別子として登録する、
ことを特徴とした請求項２記載の伝送システム。
【請求項４】
前記マスタ装置は、登録されている前記デバイス固有識別子を設定用の前記デバイス固有識別子として順次指定しながら、前記通信期間で、前記第２の伝送手段により、識別子設定コマンドに続いて、前記設定用のデバイス固有識別子と、任意のデータ長さを有するバス固有識別子とを送信し、
前記第２のスレーブ装置は、前記通信期間で、前記識別子設定コマンドに続いて受信した前記設定用のデバイス固有識別子が自装置のデバイス固有識別子に一致すれば、さらに前記バス固有識別子を自装置に設定する、
ことを特徴とした請求項３記載の伝送システム。
【請求項５】
前記マスタ装置は、前記通信期間で、前記第２の伝送手段により、識別子指定コマンドに続いて、通信を行う前記第２のスレーブ装置に対応し任意のデータ長さを有するバス固有識別子を送信し、
前記第２のスレーブ装置は、前記通信期間で、前記識別子指定コマンドに続いて受信した前記バス固有識別子が自装置に設定されているバス固有識別子と比較して、一致すれば、前記通信終了以後前記スレーブセレクト信号が第２の論理状態になったタイミングで、前記マスタ装置との間で、前記クロック信号に同期したデータ通信を行い、一致しなければ、その後に前記通信期間で識別子解除コマンドまたはリセットコマンドを受信するまでは、前記マスタ装置から入力するデータに応答しない、
ことを特徴とした請求項２乃至４記載の伝送システム。
【請求項６】
前記スレーブセレクト信号が送信されるスレーブセレクト信号線は前記マスタ装置と前記識別子探索コマンドで探索される複数のスレーブ装置を接続する一本の信号線からなる、
ことを特徴とした請求項３記載の伝送システム。
【請求項７】
伝送システム上で複数のスレーブ装置と接続されるマスタ装置であって、
前記マスタ装置は、
前記複数のスレーブ装置のうちの第１のスレーブ装置が応答しないクロック長さの制御信号を前記複数のスレーブ装置のそれぞれに第１のタイミングで伝送する第１の伝送手段と、
前記複数のスレーブ装置のそれぞれに対して前記複数のスレーブ装置のうちの増設された第２のスレーブ装置を指定する識別子を前記第１のタイミングより後の第２のタイミングで伝送することにより、前記制御信号と自装置を指定する前記識別子を受信した前記第２のスレーブ装置にデータを伝送させる第２の伝送手段と、
を備え、
前記複数のスレーブ装置のうちの前記第２のスレーブ装置は、
前記制御信号と自装置を指定する前記識別子とを受信した場合に、前記マスタ装置に対してデータを伝送する第３の伝送手段を備え、
前記マスタ装置は、
前記第２のスレーブ装置との通信を開始する場合、前記第１の伝送手段によって、スレーブセレクト信号をクロック信号の１クロック長さ分だけ第１の論理状態にして通信開始とし、
続いて、前記スレーブセレクト信号を第２の論理状態にして前記第２のスレーブ装置との通信期間とし、
前記第２の論理状態の終了後、前記スレーブセレクト信号を前記クロック信号の１クロック長さ分だけ第１の論理状態に戻して前記第２のスレーブ装置と通信終了とした後に、
前記スレーブセレクト信号を前記第１のスレーブ装置が応答しない第２の論理状態にする、
ことを特徴としたマスタ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
マスタ装置とそのマスタ装置に接続される複数のスレーブ装置とを備える伝送システムに関する。
【背景技術】
【０００２】
パーソナルコンピュータや組込み用途で多く使用されるシリアルバスに、ＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）、ＭｉｃｒｏＷｉｒｅ、Ｉ2 Ｃ、ＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などが知られている。これらのシリアルバスは例えば、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、各種センサ、入出力制御、Ｄ／Ａ・Ａ／Ｄコンバータなどの周辺機器を接続する用途で使用される。
【０００３】
マスタデバイス（マスタ装置）のシリアルバスに周辺機器のスレーブデバイス（スレーブ装置）を増設する場合、一般的にスレーブセレクト信号線（以下、「ＳＳ（Ｓｌａｖｅ  Ｓｅｌｅｃｔ）信号線」と表記）を、マスタ装置と１対１接続で増設する必要がある。そのため、ハードウエア、ソフトウェア共に、大きな変更が必要であった。例えば、ＳＰＩマスタ装置に第１のＳＰＩ温度センサを基板端に一カ所設置しているときに、別の基板端に第２のＳＰＩ温度センサを後から増設したいような場合である。ＳＰＩの場合、ＳＰＩマスタ装置から新規にＳＳ信号線を増設し第２のＳＰＩ温度センサへ配線しなければならず、大幅な設計変更が必要な場合がある。
【０００４】
また、マスタ装置にどのようなスレーブ装置が接続されているか知りたい場合に、例えば従来のＳＰＩには、スレーブ装置の有無を知る手段が提供されていないため、スレーブ装置が無いことを確実に知ることができないという課題があった。例えば、商品構成で温度センサが無いもの、１つのもの、２つのものを考えたとき、その構成をＳＰＩとは別に知らせる手段を用いなくてはならない。例えば、商品構成毎に内蔵するソフトウェアを用意したり、構成を知らせるハードウエアを追加しなくてはならない。
【０００５】
マスタ装置にＳＳ信号などの信号の追加なしにＳＰＩのスレーブ装置の増設を行う従来技術として、ＩＤ（識別子）を２ビット分程度持つことができるスレーブ装置が知られている。
【０００６】
また、以下のような従来技術も知られている（例えば特許文献１に記載の技術）。共通バスが、クロック伝送ライン、マスタ装置からスレーブ装置へデータを伝送する第一のデータ伝送ライン、スレーブ装置からマスタ装置へデータを伝送する第二のデータ伝送ラインおよび制御信号伝送ラインからなる４ラインで構成される。そして、マスタ装置として動作するデバイスが制御信号、クロック信号とともにデータを送信すべきスレーブ装置のデバイスアドレスおよびシリアルデータを含むデータ列を送出する。受信したデバイスアドレスの一致したデバイスがスレーブ装置として動作するとともにマスタ装置に受信データを返信する。そして、マスタ装置は返信された受信データを受けてスレーブ装置の動作を確認するとともにデータ列の最後部においてエンドファンクションコードを送出する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平０５−２６５９４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、ＩＤを２ビット分程度持つことができるスレーブ装置の従来技術では、同種のスレーブ装置がいくつ並列して増設できるかはマスタ装置の設定ピンの数に依存しており、並列で増設可能なスレーブ装置の台数はせいぜい４〜８台程度であった。
【０００９】
また、例えば特許文献１に記載のスレーブ装置は、一般的なＳＰＩスレーブ装置と混在させて接続すると、例えばマスタ装置が、通信開始と通信終了を示すコマンドを送信する際に、誤動作が発生する危険性が高い。したがって、上記従来のスレーブ装置は一般的なＳＰＩスレーブ装置と併設できないという課題があった。
【００１０】
そこで、本発明の１つの側面では、制御信号線を増設する必要がなく、従来のスレーブ装置に混在させて、新たなスレーブ装置を増設可能とすることを目的とする。
【課題を解決するための手段】
【００１１】
態様の一例では、マスタ装置と、マスタ装置と接続される複数のスレーブ装置を備える伝送システムであって、マスタ装置は、複数のスレーブ装置のうちの第１のスレーブ装置が応答しないクロック長さの制御信号を複数のスレーブ装置のそれぞれに第１のタイミングで伝送する第１の伝送手段と、複数のスレーブ装置のそれぞれに対して複数のスレーブ装置のうちの増設された第２のスレーブ装置を指定する識別子を第１のタイミングより後の第２のタイミングで伝送する第２の伝送手段とを備える。複数のスレーブ装置のうちの第２のスレーブ装置は、制御信号と自装置を指定する識別子を受信した場合に、マスタ装置に対してデータを伝送する第３の伝送手段を備える。そして、マスタ装置は、第２のスレーブ装置との通信を開始する場合、第１の伝送手段によって、スレーブセレクト信号をクロック信号の１クロック長さ分だけ第１の論理状態にして通信開始とし、続いて、スレーブセレクト信号を第２の論理状態にして第２のスレーブ装置との通信期間とし、第２の論理状態の終了後、スレーブセレクト信号をクロック信号の１クロック長さ分だけ第１の論理状態に戻して第２のスレーブ装置と通信終了とした後に、スレーブセレクト信号を第１のスレーブ装置が応答しない第２の論理状態にする。 
【発明の効果】
【００１２】
制御信号線を増設する必要がなく、従来のスレーブ装置に混在させて、新たなスレーブ装置を増設することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】マスタデバイスとスレーブデバイスが接続される伝送システムの実施形態の構成例を示す図である。
【図２】本実施形態の基本動作の例を示すタイミングチャートである。
【図３】図１のＳＰＩマスタデバイス１０１の構成例を示すブロック図である。
【図４】図１の第２のＳＰＩスレーブデバイス１０３の構成例を示すブロック図である。
【図５】デバイス固有ＩＤ探索処理とデバイス固有ＩＤ応答処理の例を示すタイミングチャートである。
【図６】バス固有ＩＤ設定処理の例を示すタイミングチャートである。
【図７】バス固有ＩＤを用いたＳＰＩ通信処理の例を示すタイミングチャートである。
【図８】リセット処理の例を示すタイミングチャートである。
【図９】ＳＰＩマスタデバイス１０１の状態遷移図である。
【図１０】第２のＳＰＩスレーブデバイス１０３の状態遷移図である。
【図１１】本実施形態の動作例を示すタイミングチャートである。
【図１２】ＳＰＩマスタデバイス１０１が実行する全体制御処理の例を示すフローチャートである。
【図１３】デバイス固有ＩＤ探索処理の詳細例を示すフローチャート（その１）である。
【図１４】デバイス固有ＩＤ探索処理の詳細例を示すフローチャート（その２）である。
【図１５】デバイス固有ＩＤ探索処理の詳細例を示すフローチャート（その３）である。
【図１６】バス固有ＩＤ設定処理の詳細例を示すフローチャート（その１）である。
【図１７】バス固有ＩＤ設定処理の詳細例を示すフローチャート（その２）である。
【図１８】ＳＰＩアクセス処理の詳細例を示すフローチャート（その１）である。
【図１９】ＳＰＩアクセス処理の詳細例を示すフローチャート（その２）である。
【図２０】第２のＳＰＩスレーブデバイス１０３が実行する全体制御処理の例を示すフローチャートである。
【図２１】デバイス固有ＩＤ応答処理の詳細例を示すフローチャートである。
【図２２】バス固有ＩＤ設定処理の詳細例を示すフローチャートである。
【図２３】パーソナルコンピュータメインボードにおける伝送システムの構成例を示す図である。
【図２４】車載システムにおける伝送システムの構成例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。図１は、ＳＰＩマスタデバイスとスレーブデバイスが接続される伝送システム１００の実施形態の構成例を示す図である。本実施形態における伝送システム１００はＳＰＩシリアルバス方式を採用するシステムであり、マスタデバイスであるＳＰＩマスタデバイス１０１（マスタ装置）を備える。また、伝送システム１００は、一般的なＳＰＩシリアルバス方式（以下単に「一般方式」と表記）によりＳＰＩマスタデバイス１０１と通信を行うスレーブデバイスである、第１のＳＰＩスレーブデバイス１０２（第１のスレーブ装置）を備える。さらに、伝送システム１００は、本実施形態で提案する拡張可能な方式（以下単に「拡張方式」と表記）によりＳＰＩマスタデバイス１０１と通信を行うスレーブデバイスである、第２のＳＰＩスレーブデバイス１０３（第２のスレーブ装置）を備える。
【００１５】
伝送システム１００は、クロック信号を伝送するＣＬＫ信号線１０４（クロック信号線）を備える。ＣＬＫ信号線１０４は、ＳＰＩマスタデバイス１０１、第１のＳＰＩスレーブデバイス１０２、または第２のＳＰＩスレーブデバイス１０３の各ＣＬＫ端子に接続される。以下の説明において、ＣＬＫ信号線１０４上を流れるクロック信号を、ＣＬＫ信号と表記する。
【００１６】
また、伝送システム１００は、ＳＳ信号線１０５（スレーブセレクト信号線）を備える。ＳＳ信号線１０５は、ＳＰＩマスタデバイス１０１、第１のＳＰＩスレーブデバイス１０２、または第２のＳＰＩスレーブデバイス１０３の各ＳＳ端子に接続される。以下の説明において、ＳＳ信号線１０５上を流れるスレーブセレクト信号を、ＳＳ信号と表記する。
【００１７】
さらに、伝送システム１００は、ＳＰＩマスタデバイス１０１から第１のＳＰＩスレーブデバイス１０２または第２のＳＰＩスレーブデバイス１０３にシリアルデータを伝送するＭＯＳＩ信号線１０６（マスタ出力スレーブ入力信号線）を備える。ＭＯＳＩ信号線１０６は、ＳＰＩマスタデバイス１０１、第１のＳＰＩスレーブデバイス１０２、または第２のＳＰＩスレーブデバイス１０３の各ＭＯＳＩ端子に接続される。以下の説明において、ＭＯＳＩ信号線１０６上を流れるシリアルデータを、ＭＯＳＩシリアルデータと表記する。
【００１８】
加えて、伝送システム１００は、第１のＳＰＩスレーブデバイス１０２または第２のＳＰＩスレーブデバイス１０３からＳＰＩマスタデバイス１０１にシリアルデータを伝送するＭＩＳＯ信号線１０７（マスタ入力スレーブ出力信号線）を備える。ＭＩＳＯ信号線１０７は、ＳＰＩマスタデバイス１０１、第１のＳＰＩスレーブデバイス１０２、または第２のＳＰＩスレーブデバイス１０３の各ＭＩＳＯ端子に接続される。以下の説明において、ＭＩＳＯ信号線１０７上を流れるシリアルデータを、ＭＩＳＯシリアルデータと表記する。
【００１９】
以下に説明する本実施形態は、ＳＰＩシリアルバス方式を例として説明するが、通信方法がほとんど同じであるＭｉｃｒｏＷｉｒｅバスへの転用は容易である。
【００２０】
図２は、図１の伝送システム１００の基本動作の例を示すタイミングチャートである。（Ｉ）は、図１の一般方式による第１のＳＰＩスレーブデバイス１０２がＳＰＩマスタデバイス１０１とＳＰＩ通信を行うときのタイミングチャート例である。（II）は、図１の拡張方式で動作する第２のＳＰＩスレーブデバイス１０３がＳＰＩマスタデバイス１０１とＳＰＩ通信を行うときのタイミングチャート例である。このタイミングチャートにおいて、「Ｈ」はハイレベルの論理状態、「Ｌ」はローレベルの論理状態を示す。「Ｘ」は、状態を考慮しないことを示す。
【００２１】
図２の（Ｉ）において、ＳＰＩマスタデバイス１０１は、一般方式の第１のＳＰＩスレーブデバイス１０２との通信を開始するときは、（ａ）のＣＬＫ信号に同期させて（ｂ）のＳＳ信号を、ハイレベルからローレベルの論理状態にする。そして、ＳＰＩマスタデバイス１０１は、（ｃ）のＭＯＳＩシリアルデータとして、ＭＯＳＩ信号線１０６（図１）に、第１のＳＰＩスレーブデバイス１０２へのコマンドデータを送信する。第１のＳＰＩスレーブデバイス１０２は、ＳＳ信号がローレベルになったことで、ＭＯＳＩ信号線１０６上のシリアルデータを受信する状態になり、コマンドデータを受信する。そして、第１のＳＰＩスレーブデバイス１０２は、このコマンドデータに応答して、（ｄ）のＭＩＳＯシリアルデータとして、コマンド応答データを、ＭＩＳＯ信号線１０７に送信する。このようにして、ＳＰＩマスタデバイス１０１と第１のＳＰＩスレーブデバイス１０２は、コマンドデータとコマンド応答データの送受信を繰り返すことにより、通信を実行する。ＳＰＩマスタデバイス１０１は、一般方式の第１のＳＰＩスレーブデバイス１０２との通信を終了するときは、（ａ）のＣＬＫ信号に同期させて（ｂ）のＳＳ信号を、ローレベルからハイレベルの論理状態に戻す。
【００２２】
次に、図２の（II）において、ＳＰＩマスタデバイス１０１は、拡張方式で動作する第２のＳＰＩスレーブデバイス１０３との通信を開始するときは、第１の伝送手段として、次の制御を実施する。ＳＰＩマスタデバイス１０１は、第１のＳＰＩスレーブデバイス１０２が応答しないクロック長さの制御信号であるＳＳ信号を第１のタイミングで伝送する。具体的には、ＳＰＩマスタデバイス１０１は、（ａ）のＣＬＫ信号に同期させて（ｂ）のＳＳ信号を、ＣＬＫ信号の１クロック長さ分だけ第１の論理状態すなわちローレベルにして通信開始とし、その後の第２のタイミングで第２の論理状態すなわちハイレベルに戻して通信期間とする。ＳＰＩマスタデバイス１０１は、第２の伝送手段として、第２の論理状態の第２のタイミングの通信期間で、拡張方式で動作する第２のＳＰＩスレーブデバイス１０３を指定する識別子を含む拡張方式におけるコマンドを、（ｃ）のＭＯＳＩシリアルデータとして伝送する。第２のＳＰＩスレーブデバイス１０３は、上述の制御信号すなわち１クロック長さだけ第１の論理状態になるＳＳ信号を受信すると通信開始を認識し、それに続いてＳＳ信号が第２の論理状態になる第２のタイミングの通信期間で、ＳＰＩマスタデバイス１０１と通信可能な状態になる。この状態で、第２のＳＰＩスレーブデバイス１０３は、第３の伝送手段として、自装置を指定する識別子を含むコマンドを受信した場合に、それに対するコマンド応答を、（ｄ）のＭＩＳＯシリアルデータとしてＳＰＩマスタデバイス１０１に伝送する。このようにして、ＳＰＩマスタデバイス１０１と第２のＳＰＩスレーブデバイス１０３は、上記第２のタイミングの通信期間で、コマンドデータとコマンド応答データの送受信を繰り返すことにより、通信を実行する。ＳＰＩマスタデバイス１０１は、拡張方式で動作する第２のＳＰＩスレーブデバイス１０３との通信を終了するときは、（ａ）のＣＬＫ信号に同期させて（ｂ）のＳＳ信号を、再びＣＬＫ信号の１クロック長さ分だけ第１の論理状態すなわちローレベルにして通信終了とする。その後ＳＰＩマスタデバイス１０１は、ＳＳ信号を第２の論理状態すなわちハイレベルに戻す。
【００２３】
以上の制御動作により、本実施形態では、以下の３つの基本動作１、２、および３が実施される。
＜基本動作１＞
図２の（Ｉ）で示したように、ＳＰＩマスタデバイス１０１は、１クロック分のＳＳ信号のアクティベートに続く第２のタイミングで、ＳＳ信号がハイレベルのままでも、複数の拡張方式で動作する第２のＳＰＩスレーブデバイス１０３と通信できる。ＳＳ信号線１０５による第２のＳＰＩスレーブデバイス１０３の指定が行われないので、ＳＳ信号を共有して拡張方式で動作する第２のＳＰＩスレーブデバイス１０３の増設が可能になる。図１の例では、＃１および＃２の２台の第２のＳＰＩスレーブデバイス１０３が、１本のＳＳ信号線１０５により接続されている例が示されている。ＳＰＩの通信プロトコルは厳密には定められていないため、ＳＳ信号を単純に共有すると、ターゲットとするスレーブデバイス以外のスレーブデバイスが反応する可能性が必ずある。本実施形態で増設される第２のＳＰＩスレーブデバイス１０３は、ＳＳ信号が１クロック長さ分だけ第１の論理状態となる第１のタイミングを、拡張方式における通信プロトコルの通信開始および通信終了として解釈することができる。ＳＰＩの通信は８ビット単位で行われるため、このとき同時に、一般方式による第１のＳＰＩスレーブデバイス１０２は、拡張方式による通信プロトコルには反応しないようにすることができる。さらに、拡張方式による通信プロトコルでは、図２の（II）で示したように、ＳＰＩマスタデバイス１０１と第２のＳＰＩスレーブデバイス１０３は、上記第１のタイミング以外は総てＳＳ信号が第２の論理状態すなわちハイレベルの通信期間で通信を行う。このため、拡張方式によるＳＳ信号を、図２の（Ｉ）で示した、ＳＳ信号がローレベルになることで選択される一般方式による第１のＳＰＩスレーブデバイス１０２のための一般方式によるＳＳ信号と共有できる。すなわち、ＳＰＩマスタデバイス１０１の１個のＳＳ端子に接続される１本のＳＳ信号線１０５は、一般方式による第１のＳＰＩスレーブデバイス１０２のＳＳ端子に接続されると同時に、拡張方式で動作する第２のＳＰＩスレーブデバイス１０３のＳＳ端子にも接続される。このように、本実施形態では、一般方式による第１のＳＰＩスレーブデバイス１０２によるＳＰＩ通信と拡張方式で動作する第２のＳＰＩスレーブデバイス１０３によるＳＰＩ通信とを、混信することなく共存させることが可能となる。
【００２４】
＜基本動作２＞
拡張方式で動作する第２のＳＰＩスレーブデバイス１０３には、一意のＩＤ（識別子）が設定されており、そのＩＤをＳＰＩマスタデバイス１０１が予め探索し登録する。拡張方式によるシリアルバス通信では、ＳＰＩマスタデバイス１０１は、この登録したＩＤを用いて、第２のＳＰＩスレーブデバイス１０３を特定して通信を行うことができる。以下、このＩＤを、デバイス固有ＩＤ（デバイス固有識別子）と呼ぶ。このデバイス固有ＩＤは、全ての第２のＳＰＩスレーブデバイス１０３で一意であり、同じデバイス固有ＩＤを持つ第２のＳＰＩスレーブデバイス１０３は存在しない。このデバイス固有ＩＤのデータ長は、全ての第２のＳＰＩスレーブデバイス１０３で同じである。本実施形態では、ＳＳ信号を共有している第２のＳＰＩスレーブデバイス１０３がＳＰＩマスタデバイス１０１に何台接続されているか正確に見付けるために、このデバイス固有ＩＤを探索する。
【００２５】
＜基本動作３＞
全ての第２のＳＰＩスレーブデバイス１０３を一意に対応できるようにするために、デバイス固有ＩＤは、４８〜６４ビット程度の十分なデータ長を有する。このようにデバイス固有ＩＤのデータ長は長いので、デバイス固有ＩＤをそのままＳＰＩ通信に用いると、通信速度に影響がでる可能性がある。このため、ＳＰＩマスタデバイス１０１は、各第２のＳＰＩスレーブデバイス１０３に、上記デバイス固有ＩＤとは別に、新たな任意のデータ長の例えばデバイス固有ＩＤのデータ長より短いＩＤを割り当てることができる。以下、このＩＤを、バス固有ＩＤ（バス固有識別子）と呼ぶ。ＳＰＩマスタデバイス１０１は、第２のＳＰＩスレーブデバイス１０３指定時にデバイス固有ＩＤではなくバス固有ＩＤを用いることにより、通信速度への影響を抑えることができる。バス固有ＩＤのデータ長としては、図１の伝送システム１００において、ＳＰＩマスタデバイス１０１に実際に接続されている第２のＳＰＩスレーブデバイス１０３の台数に応じて決定することができる。この台数が例えば数十台程度であれば、バス固有ＩＤのデータ長は６ビットもあれば十分である。なお、本実施形態では、バス固有ＩＤは、１つの第２のＳＰＩスレーブデバイス１０３との通信開始時に１回だけ指定され、その後はＳＰＩマスタデバイス１０１と１つの第２のＳＰＩスレーブデバイス１０３は、ＳＰＩ通信を行うことができる。このため、バス固有ＩＤの指定が通信速度に及ぼす影響を最小限に抑えることができる。このとき、他の第２のＳＰＩスレーブデバイス１０３は、新たにバス固有ＩＤが指定されるまで、ＳＰＩ通信を行わないように制御できる。
【００２６】
上記基本動作１、２，３のように、第２のＳＰＩスレーブデバイス１０３群は、ＳＳ信号のみに頼らず、１クロック分のＳＳ信号のアクティベートに続く第２のタイミングでのデバイス固有ＩＤとバス固有ＩＤによりＳＰＩマスタデバイス１０１から指定される。これにより、本実施形態では、ＳＳ信号線１０５の増設の必要無しに、第２のＳＰＩスレーブデバイス１０３の柔軟な増設を可能にするものである。
【００２７】
図３は、図１のＳＰＩマスタデバイス１０１の構成例を示すブロック図である。ＳＰＩマスタデバイス１０１は、マイコンコア３０１、送信用シフトレジスタ３０２、受信用シフトレジスタ３０３、クロック生成器３０４、＃０および＃１のクロック出力制御回路３０５を備える。マイコンコア３０１は、送信用レジスタ３０６、受信用レジスタ３０７、および＃０、＃１、および＃２の汎用１ビットレジスタ（図中「汎用１ｂｉｔ」と記載）３０８を内蔵する。
【００２８】
マイコンコア３０１は、特には図示しないＣＰＵ（中央演算処理装置）、ＲＯＭ（リードオンリーメモリ）、ＲＡＭ（ランダムアクセスメモリ）等を搭載する一般的なコンピュータの構成に加えて、３０６〜２０８のレジスタ類を内蔵する。
【００２９】
マイコンコア３０１が内蔵する送信用レジスタ３０６は、マイコンコア３０１に接続される送信用シフトレジスタ３０２にセットする８ビットのデータを一時的に保持する。送信用シフトレジスタ３０２は、送信用レジスタ３０６から８ビットのデータをセットされた後、＃１のクロック出力制御回路３０５が出力する８個のＣＬＫ信号に従って、ＭＯＳＩ端子から１ビットずつのシリアルデータを順次シフトしながら送信する。
【００３０】
受信用シフトレジスタ３０３は、＃１のクロック出力制御回路３０５が出力する８個のＣＬＫ信号に従って、ＭＩＳＯ端子で受信される１ビットずつのシリアルデータを順次シフトしながら受信する。マイコンコア３０１が内蔵する受信用レジスタ３０７は、マイコンコア３０１に接続される受信用シフトレジスタ３０３に８ビットのシリアルデータが入力した後、その８ビットのデータを一時的に保持する。
【００３１】
マイコンコア３０１が内蔵する＃０および＃１の汎用１ビットレジスタ３０８は、それぞれ値１がセットされることにより、外部の＃０および＃１のクロック出力制御回路３０５をそれぞれ動作させる。＃０のクロック出力制御回路３０５は、＃０の汎用１ビットレジスタ３０８に値１がセットされている間、クロック生成器３０４が出力するＣＬＫ信号をＣＬＫ端子から出力する。＃１のクロック出力制御回路３０５は、＃１の汎用１ビットレジスタ３０８に値１がセットされている間、クロック生成器３０４が出力するＣＬＫ信号を送信用シフトレジスタ３０２および受信用シフトレジスタ３０３に供給して、このＣＬＫ信号に同期したシフト動作を実行させる。
【００３２】
図４は、図１の第２のＳＰＩスレーブデバイス１０３の構成例を示すブロック図である。第２のＳＰＩスレーブデバイス１０３は、マイコンコア４０１、受信用シフトレジスタ４０２、送信用シフトレジスタ４０３、１クロック判定回路４０４、およびクロック出力制御回路４０５を備える。マイコンコア４０１は、受信用レジスタ４０６、送信用レジスタ４０７、＃０、＃１、＃２、および＃３の汎用１ビットレジスタ（図中「汎用１ｂｉｔ」と記載）４０８を内蔵する。
【００３３】
マイコンコア４０１は、特には図示しないＣＰＵ、ＲＯＭ、ＲＡＭ等を搭載する一般的なコンピュータの構成に加えて、４０６〜４０８のレジスタ類を内蔵する。
【００３４】
マイコンコア４０１が内蔵する送信用レジスタ４０７は、マイコンコア４０１に接続される送信用シフトレジスタ４０３にセットする８ビットのデータを一時的に保持する。送信用シフトレジスタ４０３は、送信用レジスタ４０７から８ビットのデータをセットされた後、クロック出力制御回路４０５が出力する８個のＣＬＫ信号に従って、ＭＯＳＩ端子から１ビットずつのシリアルデータを順次シフトしながら送信する。
【００３５】
受信用シフトレジスタ４０２は、クロック出力制御回路４０５が出力する８個のＣＬＫ信号に従って、ＭＩＳＯ端子で受信される１ビットずつのシリアルデータを順次シフトしながら受信する。マイコンコア４０１が内蔵する受信用レジスタ４０６は、マイコンコア４０１に接続される受信用シフトレジスタ４０２に８ビットのシリアルデータが入力した後、その８ビットのデータを一時的に保持する。
【００３６】
マイコンコア４０１に接続される１クロック判定回路４０４は、ＳＳ端子からのＳＳ信号とＣＬＫ端子からのＣＬＫ信号を入力することにより、ＳＳ信号が１クロック長さ分だけローレベルになったか否かを判定する。
【００３７】
マイコンコア４０１が内蔵する＃０の汎用１ビットレジスタ４０８は、１クロック判定回路４０４の出力を保持する。
【００３８】
マイコンコア４０１が内蔵する＃１の汎用１ビットレジスタ４０８は、値１がセットされることにより、外部のクロック出力制御回路４０５を動作させる。クロック出力制御回路４０５は、＃１の汎用１ビットレジスタ３０８に値１がセットされている間、ＣＬＫ端子から入力するＣＬＫ信号に同期したＣＬＫ信号を出力する。このＣＬＫ信号は、送信用シフトレジスタ３０２および受信用シフトレジスタ３０３に供給されて、このＣＬＫ信号に同期したシフト動作を実行させる。
【００３９】
マイコンコア４０１が内蔵する＃２の汎用１ビットレジスタ４０８ビットレジスタ３０８は、ＣＬＫ端子から入力するＣＬＫ信号を保持する。
【００４０】
マイコンコア４０１が内蔵する＃３の汎用１ビットレジスタ４０８は、ＳＳ端子から入力するＳＳ信号を保持する。
【００４１】
図３の構成を有するＳＰＩマスタデバイス１０１と図４の構成を有する第２のＳＰＩスレーブデバイス１０３の詳細動作について、以下に説明する。
【００４２】
図５は、ＳＰＩマスタデバイス１０１によるデバイス固有ＩＤ探索処理と第２のＳＰＩスレーブデバイス１０３によるデバイス固有ＩＤ応答処理の例を示すタイミングチャートである。これらの処理は、ＳＰＩマスタデバイス１０１が、どのデバイス固有ＩＤが何れかの第２のＳＰＩスレーブデバイス１０３で使用されているかを知るための処理である。ＳＰＩマスタデバイス１０１は、決められたビット数（例えば４８〜６４ビット程度）のデバイス固有ＩＤの候補値を、オール０から順次インクリメントしながら、前述した通信開始から通信終了までの期間で、第２のＳＰＩスレーブデバイス１０３に問合せを行う。ＳＰＩマスタデバイス１０１は、何れかの第２のＳＰＩスレーブデバイス１０３から応答があったデバイス固有ＩＤの候補値を、使用されているデバイス固有ＩＤとして登録する。以下に、デバイス固有ＩＤ探索処理とデバイス固有ＩＤ応答処理の流れを説明する。
【００４３】
＜ＳＰＩマスタデバイス１０１の動作１＞
図２（II）で前述したように、ＳＰＩマスタデバイス１０１は、図３のＳＳ端子から出力する図５（ｂ）のＳＳ信号を、図３のＣＬＫ端子から出力する図５（ａ）のＣＬＫ信号に同期する１クロック長さ分だけ第１の論理状態すなわちローレベルにする。その後、ＳＰＩマスタデバイス１０１は、ＳＳ信号を、第２の論理状態すなわちハイレベルに戻す。この時点でＳＰＩマスタデバイス１０１と第２のＳＰＩスレーブデバイス１０３とが通信開始となる。この制御は主に、図３のマイコンコア３０１内の＃０および＃２の汎用１ビットレジスタ３０８と＃０のクロック出力制御回路３０５を用いて実行される。
【００４４】
＜ＳＰＩマスタデバイス１０１の動作２＞
ＳＰＩマスタデバイス１０１は、通信開始後、ＳＳ信号をハイレベルにした第２のタイミングの通信期間において、以下の動作を実行する。ＳＰＩマスタデバイス１０１は、ＭＳＢから２ビットにＩＤ探索コマンド（識別子探索コマンド）“００”がセットされ、下位６ビットに“００００００”が埋められた８ビットのシリアルデータ５０１を生成する。ＳＰＩマスタデバイス１０１は、このシリアルデータ５０１を、図３のＣＬＫ端子から出力する図５（ａ）のＣＬＫ信号に同期させて、図５（ｃ）のＭＯＳＩシリアルデータとして、図３のＭＯＳＩ端子から送信する。この制御は主に、図３の送信用レジスタ３０６、送信用シフトレジスタ３０２と、＃０および＃１のクロック出力制御回路３０５とを用いて実行される。
【００４５】
＜ＳＰＩマスタデバイス１０１の動作３＞
ＳＰＩマスタデバイス１０１は、通信開始以降の通信期間において、シリアルデータ５０１の送信に引き続いて、以下の動作を実行する。ＳＰＩマスタデバイス１０１は、探索用のデバイス固有ＩＤに対応するシリアルデータ５０２を、図３のＣＬＫ端子から出力する図５（ａ）のＣＬＫ信号に同期させて、図５（ｃ）のＭＯＳＩシリアルデータとして、図３のＭＯＳＩ端子から順次送信する。このとき、ＳＰＩマスタデバイス１０１は、例えば４８〜６４ビットのデータ長を有する探索用のデバイス固有ＩＤを、図３の送信用レジスタ３０６と送信用シフトレジスタ３０２を用いて、ＭＳＢから８ビットずつ区切ったシリアルデータ５０２として送信する。この制御は主に、図３の送信用レジスタ３０６、送信用シフトレジスタ３０２と、＃０および＃１のクロック出力制御回路３０５を用いて実行される。なお、この送信は、ＭＳＢからではなく、ＬＳＢ（最下位ビット）から順次行われてもよい。
【００４６】
＜第２のＳＰＩスレーブデバイス１０３の動作１＞
＜ＳＰＩマスタデバイス１０１の動作１＞と並行し、第２のＳＰＩスレーブデバイス１０３は、図４のＣＬＫ端子から入力する図５（ａ）のＣＬＫ信号の１クロック長さ分だけローレベルになった、図４のＳＳ端子から入力する図５（ｂ）のＳＳ信号を検知する。これにより、第２のＳＰＩスレーブデバイス１０３は、通信開始の状態になる。この制御は主に、図４の１クロック判定回路４０４と＃０の汎用１ビットレジスタ４０８を用いて実行される。
【００４７】
＜第２のＳＰＩスレーブデバイス１０３の動作２＞
第２のＳＰＩスレーブデバイス１０３は、上記通信開始以降の通信期間で、図４のＣＬＫ端子から入力する図５（ａ）のＣＬＫ信号に同期させて、以下の動作を実行する。第２のＳＰＩスレーブデバイス１０３は、図４のＭＯＳＩ端子から図５（ｃ）のＭＯＳＩシリアルデータとして入力する最初の８ビットのシリアルデータ５０１として、ＭＳＢから２ビットのＩＤ探索コマンド“００”と下位６ビット“００００００”を受信する。この制御は主に、図４の＃１の汎用１ビットレジスタ４０８と、クロック出力制御回路４０５と、受信用シフトレジスタ４０２と、受信用レジスタ４０６を用いて実行される。第２のＳＰＩスレーブデバイス１０３は、このＩＤ探索コマンドを認識した後、図４のＭＩＳＯ端子から出力される図５（ｄ）のＭＩＳＯシリアルデータを、論理状態「Ｚ」のオープンドレイン出力５０３に切り替える。その後、第２のＳＰＩスレーブデバイス１０３は、デバイス固有ＩＤ応答処理を実行する。この論理状態「Ｚ」は、最初はＳＰＩマスタデバイス１０１に接続される全ての第２のＳＰＩスレーブデバイス１０３のＭＩＳＯ端子が、オープンドレイン状態（ハイインピーダンス状態）であることを示している。この状態においては、ＳＰＩマスタデバイス１０１からは、図３のＭＩＳＯ端子の論理状態が「Ｈ」（ハイレベル）に見える。
【００４８】
＜第２のＳＰＩスレーブデバイス１０３の動作３＞
デバイス固有ＩＤ応答処理において、第２のＳＰＩスレーブデバイス１０３は、図４のＣＬＫ端子から入力する図５（ａ）のＣＬＫ信号に同期させて、以下の動作を実行する。第２のＳＰＩスレーブデバイス１０３は、図４のＭＯＳＩ端子から図５（ｃ）のＭＯＳＩシリアルデータとして順次入力する探索用のデバイス固有ＩＤのシリアルデータ５０２を、自装置のデバイス固有ＩＤのＭＳＢから１ビットずつのデータと順次比較する。この制御は主に、図４の＃１の汎用１ビットレジスタ４０８と、クロック出力制御回路４０５と、受信用シフトレジスタ４０２と、受信用レジスタ４０６を用いて実行される。この比較の結果、第２のＳＰＩスレーブデバイス１０３は、図４のＣＬＫ端子から入力する図５（ａ）のＣＬＫ信号に同期させて、図４のＭＩＳＯ端子から図５（ｄ）のＭＩＳＯシリアルデータとして、次のようなシリアルデータ５０４または５０５を送信する。比較の結果一致が検出されれば、第２のＳＰＩスレーブデバイス１０３は、一致が検出されたビット位置に対応するタイミングで論理状態「Ｌ」となるデバイス固有ＩＤ応答のシリアルデータ５０４を送信する。このとき、第２のＳＰＩスレーブデバイス１０３は、図４の受信用シフトレジスタ４０２および受信用レジスタ４０６を介して入力する８ビットずつの探索用のデバイス固有ＩＤに対応して、デバイス固有ＩＤ応答のシリアルデータ５０４も８ビットずつ送信する。この制御は主に、図４の送信用レジスタ４０７、送信用シフトレジスタ４０３と、クロック出力制御回路４０５を用いて実行される。比較の結果一致が検出されなくなった場合は、第２のＳＰＩスレーブデバイス１０３は、図４のＭＩＳＯ端子をオープンドレインにしてハイインピーダンス状態５０５とし、それ以降ＩＤの比較を行なわない。
【００４９】
＜ＳＰＩマスタデバイス１０１の動作４＞
ＳＰＩマスタデバイス１０１は、通信開始以降の通信期間中に、図４のＭＩＳＯ端子から順次入力する８ビットずつのデバイス固有ＩＤ応答のシリアルデータ５０４（図５（ｄ））の値を検証する。この８ビットずつのデバイス固有ＩＤ応答のシリアルデータ５０４は、＜ＳＰＩマスタデバイス１０１の動作３＞でＳＰＩマスタデバイス１０１が８ビットずつ送信した探索用のデバイス固有ＩＤのシリアルデータ５０２（図５（ｃ））に対する応答データである。＜第２のＳＰＩスレーブデバイス１０３の動作３＞で前述したように、デバイス固有ＩＤ応答のシリアルデータ５０４は、何れかの第２のＳＰＩスレーブデバイス１０３から応答される。この制御は主に、図３の＃１の汎用１ビットレジスタ３０８と、＃１のクロック出力制御回路３０５と、受信用シフトレジスタ３０３と、受信用レジスタ３０７を用いて実行される。この検証動作が８ビットずつ繰り返される結果、探索用のデバイス固有ＩＤのシリアルデータ５０２に対応するデバイス固有ＩＤ応答のシリアルデータ５０４の全てのビットの論理状態が「Ｌ」となった場合、ＳＰＩマスタデバイス１０１は、次の動作を実行する。ＳＰＩマスタデバイス１０１は、その探索用のデバイス固有ＩＤが何れかの第２のＳＰＩスレーブデバイス１０３に対応するデバイス固有ＩＤとして探索できたとして、その探索用のデバイス固有ＩＤを、内部のメモリ等に登録する。一方、探索用のデバイス固有ＩＤのシリアルデータ５０２に対応するデバイス固有ＩＤ応答のシリアルデータ５０４の何れかのビットの論理状態が「Ｚ」になった場合には、ＳＰＩマスタデバイス１０１は、次の動作を実行する。この状態は、そのビットの探索用のデバイス固有ＩＤのシリアルデータ５０２に関して、全ての第２のＳＰＩスレーブデバイス１０３が各デバイスに設定されているデバイス固有ＩＤとの不一致を検出した場合である。この場合には、ＳＰＩマスタデバイス１０１は、現在の探索用のデバイス固有ＩＤは探索できなかったとして登録を行わない。
【００５０】
＜ＳＰＩマスタデバイス１０１の動作５＞
＜ＳＰＩマスタデバイス１０１の動作４＞の後、ＳＰＩマスタデバイス１０１は、次の処理を実行する。図２（II）で前述したように、ＳＰＩマスタデバイス１０１は、図３のＳＳ端子から出力する図５（ｂ）のＳＳ信号を再び、図３のＣＬＫ端子から出力する図５（ａ）のＣＬＫ信号に同期する１クロック長さ分だけ第１の論理状態すなわちローレベルにする。その後、ＳＰＩマスタデバイス１０１は、ＳＳ信号を、第２の論理状態すなわちハイレベルに戻す。この時点がＳＰＩマスタデバイス１０１と第２のＳＰＩスレーブデバイス１０３との通信終了となる。この制御は主に、図３のマイコンコア３０１内の＃０および＃２の汎用１ビットレジスタ３０８と＃０のクロック出力制御回路３０５を用いて実行される。１つの探索用のデバイス固有ＩＤにつき通信終了となった後、ＳＰＩマスタデバイス１０１は、次の探索用のデバイス固有ＩＤを設定し、上述のＳＰＩマスタデバイス１０１の動作１〜５と、第２のＳＰＩスレーブデバイス１０３の動作１〜３を繰り返し実行する。これにより、ＳＰＩマスタデバイス１０１は、それに接続されている第２のＳＰＩスレーブデバイス１０３において設定される可能性のある全ての探索用のデバイス固有ＩＤについて探索を実行し、見つかったデバイス固有ＩＤを登録することができる。
【００５１】
図６は、バス固有ＩＤ設定処理の例を示すタイミングチャートである。＜基本動作３＞として前述したように、第２のＳＰＩスレーブデバイス１０３を一意に識別するデバイス固有ＩＤのデータ長は長いので、ＳＰＩマスタデバイス１０１は、各第２のＳＰＩスレーブデバイス１０３に、短い長さのバス固有ＩＤを割り当てる。以下に、バス固有ＩＤ設定処理の流れを説明する。
【００５２】
＜ＳＰＩマスタデバイス１０１の動作１＞
図２（II）で前述したように、ＳＰＩマスタデバイス１０１は、図３のＳＳ端子から出力する図６（ｂ）のＳＳ信号を、図３のＣＬＫ端子から出力する図６（ａ）のＣＬＫ信号に同期する１クロック長さ分だけ第１の論理状態すなわちローレベルにする。その後、ＳＰＩマスタデバイス１０１は、ＳＳ信号を、第２の論理状態すなわちハイレベルに戻す。この時点でＳＰＩマスタデバイス１０１と第２のＳＰＩスレーブデバイス１０３とが通信開始となる。この制御は主に、図３のマイコンコア３０１内の＃０および＃２の汎用１ビットレジスタ３０８と＃０のクロック出力制御回路３０５を用いて実行される。
【００５３】
＜ＳＰＩマスタデバイス１０１の動作２＞
ＳＰＩマスタデバイス１０１は、通信開始後、ＳＳ信号をハイレベルにした第２のタイミングの通信期間において、以下の動作を実行する。ＳＰＩマスタデバイス１０１は、ＭＳＢから２ビットにＩＤ設定コマンド（識別子設定コマンド）“０１”がセットされ、下位６ビットに設定したいバス固有ＩＤが埋められた８ビットのシリアルデータ６０１を生成する。バス固有ＩＤのデータ長が６ビットより長ければ、上記下位６ビットにはバス固有ＩＤの上位６ビットが埋められる。バス固有ＩＤのデータ長が６ビット未満であれば、上位側に０が埋められて６ビットデータとされる。ＳＰＩマスタデバイス１０１は、このシリアルデータ６０１を、図３のＣＬＫ端子から出力する図６（ａ）のＣＬＫ信号に同期させて、図６（ｃ）のＭＯＳＩシリアルデータとして、図３のＭＯＳＩ端子から送信する。この制御は主に、図３の送信用レジスタ３０６、送信用シフトレジスタ３０２と、＃０および＃１のクロック出力制御回路３０５とを用いて実行される。
＜ＳＰＩマスタデバイス１０１の動作３＞
ＳＰＩマスタデバイス１０１は、通信開始以降の通信期間において、シリアルデータ６０１の送信に引き続いて、以下の動作を実行する。ＳＰＩマスタデバイス１０１は、設定用のデバイス固有ＩＤに対応するシリアルデータ６０２を、図３のＣＬＫ端子から出力する図６（ａ）のＣＬＫ信号に同期させて、図６（ｃ）のＭＯＳＩシリアルデータとして、図３のＭＯＳＩ端子から順次送信する。この設定用のデバイス固有ＩＤは、前述のデバイス固有ＩＤ探索処理およびデバイス固有ＩＤ応答処理によりＳＰＩマスタデバイス１０１に登録されているデバイス固有ＩＤから１つずつ選択されるものである。このとき、ＳＰＩマスタデバイス１０１は、例えば４８〜６４ビットのデータ長を有する設定用のデバイス固有ＩＤを、図３の送信用レジスタ３０６と送信用シフトレジスタ３０２を用いて、ＭＳＢから８ビットずつ区切ったシリアルデータ６０２として送信する。この制御は主に、図３の送信用レジスタ３０６、送信用シフトレジスタ３０２と、＃０および＃１のクロック出力制御回路３０５を用いて実行される。なお、この送信は、ＭＳＢからではなく、ＬＳＢ（最下位ビット）から順次行われてもよい。
【００５４】
＜ＳＰＩマスタデバイス１０１の動作４＞
ＳＰＩマスタデバイス１０１は、通信開始以降の通信期間において、シリアルデータ６０２の送信に引き続いて、以下の動作を実行する。前述したように、設定したいバス固有ＩＤのデータ長が６ビットより長ければ、シリアルデータ６０１の下位６ビットにはバス固有ＩＤの上位６ビットが埋められる。この場合、ＳＰＩマスタデバイス１０１は、バス固有ＩＤの残りの下位ビットを上位ビット側から順に、８ビットずつ区切ったシリアルデータ６０３として送信する。この制御は主に、図３の送信用レジスタ３０６、送信用シフトレジスタ３０２と、＃０および＃１のクロック出力制御回路３０５を用いて実行される。
【００５５】
＜第２のＳＰＩスレーブデバイス１０３の動作１＞
＜ＳＰＩマスタデバイス１０１の動作１＞と並行し、第２のＳＰＩスレーブデバイス１０３は、図４のＣＬＫ端子から入力する図６（ａ）のＣＬＫ信号の１クロック長さ分だけローレベルになった、図４のＳＳ端子から入力する図６（ｂ）のＳＳ信号を検知する。これにより、第２のＳＰＩスレーブデバイス１０３は、通信開始の状態になる。この制御は主に、図４の１クロック判定回路４０４と＃０の汎用１ビットレジスタ４０８を用いて実行される。
【００５６】
＜第２のＳＰＩスレーブデバイス１０３の動作２＞
第２のＳＰＩスレーブデバイス１０３は、上記通信開始以降の通信期間で、図４のＣＬＫ端子から入力する図６（ａ）のＣＬＫ信号に同期させて、以下の動作を実行する。第２のＳＰＩスレーブデバイス１０３は、図４のＭＯＳＩ端子から図６（ｃ）のＭＯＳＩシリアルデータとして入力する最初の８ビットのシリアルデータ６０１として、ＭＳＢから２ビットのＩＤ設定コマンド“０１”と下位６ビットのバス固有ＩＤの上位６ビットを受信する。この制御は主に、図４の＃１の汎用１ビットレジスタ４０８と、クロック出力制御回路４０５と、受信用シフトレジスタ４０２と、受信用レジスタ４０６を用いて実行される。その後、第２のＳＰＩスレーブデバイス１０３は、バス固有ＩＤ設定処理を実行する。
【００５７】
＜第２のＳＰＩスレーブデバイス１０３の動作３＞
バス固有ＩＤ設定処理において、第２のＳＰＩスレーブデバイス１０３は、図４のＣＬＫ端子から入力する図６（ａ）のＣＬＫ信号に同期させて、以下の動作を実行する。第２のＳＰＩスレーブデバイス１０３は、図４のＭＯＳＩ端子から図６（ｃ）のＭＯＳＩシリアルデータとして８ビットずつ順次入力する設定用のデバイス固有ＩＤのシリアルデータ６０２を受信する。この制御は主に、図４の＃１の汎用１ビットレジスタ４０８と、クロック出力制御回路４０５と、受信用シフトレジスタ４０２と、受信用レジスタ４０６を用いて実行される。第２のＳＰＩスレーブデバイス１０３は、上記受信した設定用のデバイス固有ＩＤを、自装置に設定されているデバイス固有ＩＤと比較する。この比較の結果一致が検出されれば、第２のＳＰＩスレーブデバイス１０３は、図４のＭＯＳＩ端子から図６（ｃ）のＭＯＳＩシリアルデータとして続いて８ビットずつ入力するバス固有ＩＤの残りのビットのシリアルデータ６０３を受信する。この制御は主に、図４の＃１の汎用１ビットレジスタ４０８と、クロック出力制御回路４０５と、受信用シフトレジスタ４０２と、受信用レジスタ４０６を用いて実行される。第２のＳＰＩスレーブデバイス１０３は、先に受信したバス固有ＩＤの上位６ビットと上記受信したバス固有ＩＤの残りのビットとを合わせて、自装置に設定されたバス固有ＩＤとして、内部のメモリ等に登録する。バス固有ＩＤを登録した第２のＳＰＩスレーブデバイス１０３は、これ以降、図５で前述したデバイス固有ＩＤ探索処理には応答しない。
【００５８】
＜ＳＰＩマスタデバイス１０１の動作５＞
＜ＳＰＩマスタデバイス１０１の動作４＞の後、ＳＰＩマスタデバイス１０１は、次の処理を実行する。図２（II）で前述したように、ＳＰＩマスタデバイス１０１は、図３のＳＳ端子から出力する図６（ｂ）のＳＳ信号を再び、図３のＣＬＫ端子から出力する図６（ａ）のＣＬＫ信号に同期する１クロック長さ分だけ第１の論理状態すなわちローレベルにする。その後、ＳＰＩマスタデバイス１０１は、ＳＳ信号を、第２の論理状態すなわちハイレベルに戻す。この時点がＳＰＩマスタデバイス１０１と第２のＳＰＩスレーブデバイス１０３との通信終了となる。この制御は主に、図３のマイコンコア３０１内の＃０および＃２の汎用１ビットレジスタ３０８と＃０のクロック出力制御回路３０５を用いて実行される。１つの設定用のデバイス固有ＩＤにつき通信終了となった後、ＳＰＩマスタデバイス１０１は、次の未送信の設定用のデバイス固有ＩＤを選択する。前述したように、この設定用のデバイス固有ＩＤは、前述のデバイス固有ＩＤ探索処理およびデバイス固有ＩＤ応答処理によりＳＰＩマスタデバイス１０１に登録されているデバイス固有ＩＤから選択される。さらに、ＳＰＩマスタデバイス１０１は、新たに選択した設定用のデバイス固有ＩＤに対応させて、新たなバス固有ＩＤを決定する。この新たなバス固有ＩＤは、ＳＰＩマスタデバイス１０１に接続されている複数の第２のＳＰＩスレーブデバイス１０３を一意に識別できるものとする。そして、ＳＰＩマスタデバイス１０１は、これらの設定用のデバイス固有ＩＤと新たなバス固有ＩＤについて、上述のＳＰＩマスタデバイス１０１の動作１〜５と、第２のＳＰＩスレーブデバイス１０３の動作１〜３を繰り返し実行する。これにより、ＳＰＩマスタデバイス１０１は、それに接続されている各第２のＳＰＩスレーブデバイス１０３に、各第２のＳＰＩスレーブデバイス１０３を一意に識別可能なバス固有ＩＤを登録することができる。これ以降、ＳＰＩマスタデバイス１０１と各第２のＳＰＩスレーブデバイス１０３は、バス固有ＩＤを用いてＳＰＩ通信を実行する。
【００５９】
図７は、バス固有ＩＤを用いたＳＰＩ通信処理の例を示すタイミングチャートである。ＳＰＩマスタデバイス１０１は、通信をする第２のＳＰＩスレーブデバイス１０３の指定または解除を、バス固有ＩＤを用いて行う。バス固有ＩＤを指定された第２のＳＰＩスレーブデバイス１０３は、ＳＳ信号がハイレベル状態のままＳＰＩ通信によって通信を行うことができる。バス固有ＩＤを指定されなかった第２のＳＰＩスレーブデバイス１０３は、バス固有ＩＤの指定の解除がされない限り、ＳＰＩ通信への応答は一切行わない。また、一般方式による第１のＳＰＩスレーブデバイス１０２も、ＳＳ信号がハイレベル状態のときには、ＳＰＩ通信への応答はしないので問題ない。以下に、バス固有ＩＤを用いたＳＰＩ通信処理の流れを説明する。
【００６０】
＜ＳＰＩマスタデバイス１０１の動作１＞
図２（II）で前述したように、ＳＰＩマスタデバイス１０１は、図３のＳＳ端子から出力する図７（ｂ）のＳＳ信号を、図３のＣＬＫ端子から出力する図７（ａ）のＣＬＫ信号に同期する１クロック長さ分だけ第１の論理状態すなわちローレベルにする。その後、ＳＰＩマスタデバイス１０１は、ＳＳ信号を、第２の論理状態すなわちハイレベルに戻す。この時点でＳＰＩマスタデバイス１０１と第２のＳＰＩスレーブデバイス１０３とが通信開始となる。この制御は主に、図３のマイコンコア３０１内の＃０および＃２の汎用１ビットレジスタ３０８と＃０のクロック出力制御回路３０５を用いて実行される。
【００６１】
＜ＳＰＩマスタデバイス１０１の動作２＞
ＳＰＩマスタデバイス１０１は、通信開始後、ＳＳ信号をハイレベルにした第２のタイミングの通信期間において、以下の動作を実行する。ＳＰＩマスタデバイス１０１は、ＭＳＢから２ビットにＩＤ指定コマンド（識別子指定コマンド）“１０”がセットされ、下位６ビットに設定したいバス固有ＩＤが埋められた８ビットのシリアルデータ７０１を生成する。バス固有ＩＤのデータ長が６ビットより長ければ、上記下位６ビットにはバス固有ＩＤの上位６ビットが埋められる。バス固有ＩＤのデータ長が６ビット未満であれば、上位側に０が埋められて６ビットデータとされる。ＳＰＩマスタデバイス１０１は、このシリアルデータ７０１を、図３のＣＬＫ端子から出力する図７（ａ）のＣＬＫ信号に同期させて、図７（ｃ）のＭＯＳＩシリアルデータとして、図３のＭＯＳＩ端子から送信する。この制御は主に、図３の送信用レジスタ３０６、送信用シフトレジスタ３０２と、＃０および＃１のクロック出力制御回路３０５とを用いて実行される。
【００６２】
＜ＳＰＩマスタデバイス１０１の動作３＞
ＳＰＩマスタデバイス１０１は、通信開始以降の通信期間において、シリアルデータ７０１の送信に引き続いて、以下の動作を実行する。前述したように、設定したいバス固有ＩＤのデータ長が６ビットより長ければ、シリアルデータ７０１の下位６ビットにはバス固有ＩＤの上位６ビットが埋められる。この場合、ＳＰＩマスタデバイス１０１は、バス固有ＩＤの残りの下位ビットを上位ビット側から順に、８ビットずつ区切ったシリアルデータ７０２として送信する。この制御は主に、図３の送信用レジスタ３０６、送信用シフトレジスタ３０２と、＃０および＃１のクロック出力制御回路３０５を用いて実行される。
【００６３】
＜第２のＳＰＩスレーブデバイス１０３の動作１＞
＜ＳＰＩマスタデバイス１０１の動作１＞と並行し、第２のＳＰＩスレーブデバイス１０３は、図４のＣＬＫ端子から入力する図７（ａ）のＣＬＫ信号の１クロック長さ分だけローレベルになった、図４のＳＳ端子から入力する図７（ｂ）のＳＳ信号を検知する。これにより、第２のＳＰＩスレーブデバイス１０３は、通信開始の状態になる。この制御は主に、図４の１クロック判定回路４０４と＃０の汎用１ビットレジスタ４０８を用いて実行される。
【００６４】
＜第２のＳＰＩスレーブデバイス１０３の動作２＞
第２のＳＰＩスレーブデバイス１０３は、上記通信開始以降の通信期間で、図４のＣＬＫ端子から入力する図７（ａ）のＣＬＫ信号に同期させて、以下の動作を実行する。第２のＳＰＩスレーブデバイス１０３は、図４のＭＯＳＩ端子から図７（ｃ）のＭＯＳＩシリアルデータとして入力する最初の８ビットのシリアルデータ７０１として、ＭＳＢから２ビットのＩＤ指定コマンド“１０”と下位６ビットのバス固有ＩＤの上位６ビットを受信する。この制御は主に、図４の＃１の汎用１ビットレジスタ４０８と、クロック出力制御回路４０５と、受信用シフトレジスタ４０２と、受信用レジスタ４０６を用いて実行される。その後、第２のＳＰＩスレーブデバイス１０３は、バス固有ＩＤを用いたＳＰＩ通信処理を実行する。
【００６５】
＜第２のＳＰＩスレーブデバイス１０３の動作３＞
バス固有ＩＤ設定処理において、第２のＳＰＩスレーブデバイス１０３は、図４のＣＬＫ端子から入力する図７（ａ）のＣＬＫ信号に同期させて、以下の動作を実行する。第２のＳＰＩスレーブデバイス１０３は、図４のＭＯＳＩ端子から図７（ｃ）のＭＯＳＩシリアルデータとして続いて８ビットずつ入力するバス固有ＩＤの残りのビットのシリアルデータ７０２を受信する。この制御は主に、図４の＃１の汎用１ビットレジスタ４０８と、クロック出力制御回路４０５と、受信用シフトレジスタ４０２と、受信用レジスタ４０６を用いて実行される。第２のＳＰＩスレーブデバイス１０３は、先に受信したバス固有ＩＤの上位６ビットと上記受信したバス固有ＩＤの残りのビットとを合わせたバス固有ＩＤを、図６で前述したバス固有ＩＤ設定処理により自装置に登録されているバス固有ＩＤと比較する。この比較の結果一致が検出されれば、第２のＳＰＩスレーブデバイス１０３は、ＳＰＩ通信の待機状態になる。
【００６６】
＜ＳＰＩマスタデバイス１０１の動作４＞
＜ＳＰＩマスタデバイス１０１の動作３＞の後、ＳＰＩマスタデバイス１０１は、次の処理を実行する。図２（II）で前述したように、ＳＰＩマスタデバイス１０１は、図３のＳＳ端子から出力する図７（ｂ）のＳＳ信号を再び、図３のＣＬＫ端子から出力する図７（ａ）のＣＬＫ信号に同期する１クロック長さ分だけ第１の論理状態すなわちローレベルにする。その後、ＳＰＩマスタデバイス１０１は、ＳＳ信号を、第２の論理状態すなわちハイレベルに戻す。この制御は主に、図３のマイコンコア３０１内の＃０および＃２の汎用１ビットレジスタ３０８と＃０のクロック出力制御回路３０５を用いて実行される。これ以降、ＳＰＩマスタデバイス１０１は、図３のＣＬＫ端子から出力する図７（ａ）のＣＬＫ信号に同期して、図３のＭＯＳＩ端子からＳＰＩ通信のシリアルデータ７０３を送信する。
【００６７】
＜第２のＳＰＩスレーブデバイス１０３の動作４＞
＜第２のＳＰＩスレーブデバイス１０３の動作３＞によりＳＰＩ通信の待機状態になった第２のＳＰＩスレーブデバイス１０３は、以下の処理を実行する。第２のＳＰＩスレーブデバイス１０３は、＜ＳＰＩマスタデバイス１０１の動作４＞と並行し、図４のＣＬＫ端子から入力する図７（ａ）のＣＬＫ信号の１クロック長さ分だけローレベルになった、図４のＳＳ端子から入力する図７（ｂ）のＳＳ信号を検知する。これにより、第２のＳＰＩスレーブデバイス１０３は、ＳＰＩ通信可能状態になる。この制御は主に、図４の１クロック判定回路４０４と＃０の汎用１ビットレジスタ４０８を用いて実行される。ＳＰＩ通信可能状態では、第２のＳＰＩスレーブデバイス１０３は、図４のＣＬＫ端子から入力する図７（ａ）のＣＬＫ信号に同期して、図４のＭＯＳＩ端子から入力するＳＰＩ通信の図７（ｃ）のＭＯＳＩシリアルデータ７０３を、８ビットずつ受信して処理する。この制御は主に、図４の＃１の汎用１ビットレジスタ４０８と、クロック出力制御回路４０５と、受信用シフトレジスタ４０２と、受信用レジスタ４０６を用いて実行される。ＳＰＩ通信可能状態において、第２のＳＰＩスレーブデバイス１０３は、必要に応じて、図４のＣＬＫ端子から入力する図７（ａ）のＣＬＫ信号に同期して、図４のＭＩＳＯ端子から、図７（ｄ）のＳＰＩ通信のシリアルデータ７０４を８ビットずつ送信する。この制御は主に、図４の送信用レジスタ４０７、送信用シフトレジスタ４０３と、クロック出力制御回路４０５を用いて実行される。一方、＜第２のＳＰＩスレーブデバイス１０３の動作３＞での比較処理においてバス固有ＩＤの一致が検出されずＳＰＩ通信の待機状態にならなかった第２のＳＰＩスレーブデバイス１０３は、その後にバス固有ＩＤの指定を解除するコマンドまたはリセットコマンドを受信するまでは、ＳＰＩマスタデバイス１０１から送信されるＳＰＩ通信のシリアルデータには応答しない。
【００６８】
＜ＳＰＩマスタデバイス１０１の動作５＞
ＳＰＩマスタデバイス１０１は、＜ＳＰＩマスタデバイス１０１の動作４＞によるＳＰＩ通信を終了するときにはまず、図３のＳＳ端子から出力する図７（ｂ）のＳＳ信号を、図３のＣＬＫ端子から出力する図７（ａ）のＣＬＫ信号に同期する１クロック長さ分だけ第１の論理状態すなわちローレベルにする。この制御は主に、図３のマイコンコア３０１内の＃０および＃２の汎用１ビットレジスタ３０８と＃０のクロック出力制御回路３０５を用いて実行される。続いて、ＳＰＩマスタデバイス１０１は、通信開始後、ＳＳ信号をハイレベルにした第２のタイミングの通信期間において、以下の動作を実行する。ＳＰＩマスタデバイス１０１は、ＭＳＢから２ビットに前述したＩＤ指定コマンド（識別子指定コマンド）“１０”がセットされ、下位６ビットに“００００００”が埋められた８ビットのシリアルデータを生成する。このデータは、ＩＤ指定解除コマンドとして機能する。ＳＰＩマスタデバイス１０１は、このシリアルデータを、図３のＣＬＫ端子から出力する図７（ａ）のＣＬＫ信号に同期させて、図７（ｃ）のＭＯＳＩシリアルデータとして、図３のＭＯＳＩ端子から送信する。この制御は主に、図３の送信用レジスタ３０６、送信用シフトレジスタ３０２と、＃０および＃１のクロック出力制御回路３０５とを用いて実行される。最後に、ＳＰＩマスタデバイス１０１は、図３のＳＳ端子から出力する図７（ｂ）のＳＳ信号を、図３のＣＬＫ端子から出力する図７（ａ）のＣＬＫ信号に同期する１クロック長さ分だけ第１の論理状態すなわちローレベルにする。この制御は主に、図３のマイコンコア３０１内の＃０および＃２の汎用１ビットレジスタ３０８と＃０のクロック出力制御回路３０５を用いて実行される。
【００６９】
＜第２のＳＰＩスレーブデバイス１０３の動作５＞
＜ＳＰＩマスタデバイス１０１の動作１＞と並行し、第２のＳＰＩスレーブデバイス１０３は、図４のＣＬＫ端子から入力する図７（ａ）のＣＬＫ信号の１クロック長さ分だけローレベルになった、図４のＳＳ端子から入力する図７（ｂ）のＳＳ信号を検知する。この制御は主に、図４の１クロック判定回路４０４と＃０の汎用１ビットレジスタ４０８を用いて実行される。続いて、第２のＳＰＩスレーブデバイス１０３は、図４のＣＬＫ端子から入力する図７（ａ）のＣＬＫ信号に同期させて、以下の動作を実行する。第２のＳＰＩスレーブデバイス１０３は、図４のＭＯＳＩ端子から図７（ｃ）のＭＯＳＩシリアルデータとして入力する８ビットのシリアルデータとして、ＭＳＢから２ビットのＩＤ指定コマンド“１０”と下位６ビット“００００００”を受信する。この制御は主に、図４の＃１の汎用１ビットレジスタ４０８と、クロック出力制御回路４０５と、受信用シフトレジスタ４０２と、受信用レジスタ４０６を用いて実行される。第２のＳＰＩスレーブデバイス１０３は、ＩＤ指定コマンド“１０”と下位６ビット“００００００”の組合せを受信した場合には、今まで実行していたＳＰＩ通信を終了する。
【００７０】
図８は、リセット処理の例を示すタイミングチャートである。電源の解除なしにＳＰＩマスタデバイス１０１を初期状態にしたいときなど（ウォームリセット時など）に、このリセット処理が実行される。以下に、リセット処理の流れを説明する。
【００７１】
＜ＳＰＩマスタデバイス１０１の動作１＞
図２（II）で前述したように、ＳＰＩマスタデバイス１０１は、図３のＳＳ端子から出力する図８（ｂ）のＳＳ信号を、図３のＣＬＫ端子から出力する図８（ａ）のＣＬＫ信号に同期する１クロック長さ分だけ第１の論理状態すなわちローレベルにする。その後、ＳＰＩマスタデバイス１０１は、ＳＳ信号を、第２の論理状態すなわちハイレベルに戻す。この時点でＳＰＩマスタデバイス１０１と第２のＳＰＩスレーブデバイス１０３とが通信開始となる。この制御は主に、図３のマイコンコア３０１内の＃０および＃２の汎用１ビットレジスタ３０８と＃０のクロック出力制御回路３０５を用いて実行される。
【００７２】
＜ＳＰＩマスタデバイス１０１の動作２＞
ＳＰＩマスタデバイス１０１は、通信開始後、ＳＳ信号をハイレベルにした第２のタイミングの通信期間において、以下の動作を実行する。ＳＰＩマスタデバイス１０１は、ＭＳＢから２ビットにリセットコマンド“１１”がセットされたシリアルデータを生成する。ＳＰＩマスタデバイス１０１は、このシリアルデータを、図３のＣＬＫ端子から出力する図８（ａ）のＣＬＫ信号に同期させて、図８（ｃ）のＭＯＳＩシリアルデータとして、図３のＭＯＳＩ端子から送信する。この制御は主に、図３の送信用レジスタ３０６、送信用シフトレジスタ３０２と、＃０および＃１のクロック出力制御回路３０５とを用いて実行される。
【００７３】
＜第２のＳＰＩスレーブデバイス１０３の動作１＞
＜ＳＰＩマスタデバイス１０１の動作１＞と並行し、第２のＳＰＩスレーブデバイス１０３は、図４のＣＬＫ端子から入力する図７（ａ）のＣＬＫ信号の１クロック長さ分だけローレベルになった、図４のＳＳ端子から入力する図７（ｂ）のＳＳ信号を検知する。これにより、第２のＳＰＩスレーブデバイス１０３は、通信開始の状態になる。この制御は主に、図４の１クロック判定回路４０４と＃０の汎用１ビットレジスタ４０８を用いて実行される。
【００７４】
＜第２のＳＰＩスレーブデバイス１０３の動作２＞
第２のＳＰＩスレーブデバイス１０３は、上記通信開始以降の通信期間で、図４のＣＬＫ端子から入力する図８（ａ）のＣＬＫ信号に同期させて、以下の動作を実行する。第２のＳＰＩスレーブデバイス１０３は、図４のＭＯＳＩ端子から入力する図８（ｃ）のＭＯＳＩシリアルデータとして、ＭＳＢから２ビットのリセットコマンド“１１”を受信する。この制御は主に、図４の＃１の汎用１ビットレジスタ４０８と、クロック出力制御回路４０５と、受信用シフトレジスタ４０２と、受信用レジスタ４０６を用いて実行される。この結果、第２のＳＰＩスレーブデバイス１０３は、図６のバス固有ＩＤ設定処理により自装置に設定されていたバス固有ＩＤの登録を解除する。
【００７５】
＜第２のＳＰＩスレーブデバイス１０３の動作２＞
＜ＳＰＩマスタデバイス１０１の動作３＞の後、ＳＰＩマスタデバイス１０１は、図５のデバイス固有ＩＤ探索処理により探索されたデバイス固有ＩＤの登録と、図６のバス固有ＩＤ設定処理により設定したバス固有ＩＤの登録を解除する。
【００７６】
図９は、図５から図８で説明したＳＰＩマスタデバイス１０１の制御処理の状態遷移を示す状態遷移図である。
【００７７】
ＳＰＩマスタデバイス１０１は、電源投入後（Ｓ９０１）のリセット状態（Ｓ９０２）を介して、図５で前述したデバイス固有ＩＤ探索処理の状態に遷移する（Ｓ９０３）。
【００７８】
続いて、ＳＰＩマスタデバイス１０１は、デバイス固有ＩＤ探索処理の状態（Ｓ９０３）からデバイス固有ＩＤが検出されると（Ｓ９０４）、図６で前述したバス固有ＩＤ設定処理の状態に遷移し（Ｓ９０５）、デバイス固有ＩＤ探索処理の状態（Ｓ９０３）に戻る。
【００７９】
ＳＰＩマスタデバイス１０１は、デバイス固有ＩＤ探索処理（Ｓ９０３）で全てのデバイス固有ＩＤの探索とバス固有ＩＤの登録が完了すると（Ｓ９０６）、アイドル状態（Ｓ９０７）に遷移する。
【００８０】
ＳＰＩマスタデバイス１０１は、アイドル状態（Ｓ９０７）から、ＳＳ信号のローレベルへの設定（Ｓ９０８）により、一般方式による第１のＳＰＩスレーブデバイス１０２に対するＳＰＩアクセス（Ｓ９１０）に遷移し、ＳＳ信号のローレベルの解除（Ｓ９０９）によりアイドル状態（Ｓ９０７）に戻る。
【００８１】
さらに、ＳＰＩマスタデバイス１０１は、アイドル状態（Ｓ９０７）から、図７で前述したバス固有ＩＤを用いたＳＰＩ通信処理（Ｓ９１１）により、拡張方式で動作する第２のＳＰＩスレーブデバイス１０３に対するＳＰＩアクセスの状態（Ｓ９１２）に遷移する。
【００８２】
ＳＰＩマスタデバイス１０１は、ＳＰＩアクセスの状態（Ｓ９１２）で他のバス固有ＩＤが指定されると（Ｓ９１３）、そのバス固有ＩＤに対応する第２のＳＰＩスレーブデバイス１０３に対するＳＰＩアクセスの状態（Ｓ９１２）に遷移する。
【００８３】
ＳＰＩマスタデバイス１０１は、ＳＰＩアクセスの状態（Ｓ９１２）で、図７で前述したバス固有ＩＤの指定の解除（Ｓ９１４）がなされると、アイドル状態（Ｓ９０７）に戻る。
【００８４】
ＳＰＩマスタデバイス１０１は、アイドル状態（Ｓ９０７）において、図８で前述したリセット処理（Ｓ９１５）により、図５で前述したデバイス固有ＩＤ探索処理の状態に遷移する（Ｓ９０３）。
【００８５】
図１０は、図５から図８で説明した第２のＳＰＩスレーブデバイス１０３および第１のＳＰＩスレーブデバイス１０２の制御処理の状態遷移を示す状態遷移図である。
【００８６】
まず、第１のＳＰＩスレーブデバイス１０２または第２のＳＰＩスレーブデバイス１０３は、電源投入後（Ｓ１００１）に、第１のアイドル状態（Ｓ１００２）に遷移する。
【００８７】
第１のＳＰＩスレーブデバイス１０２は、第１のアイドル状態（Ｓ１００２）から、ＳＳ信号のローレベルへの設定（Ｓ１００３）により、一般方式によるＳＰＩマスタデバイス１０１に対するＳＰＩ応答（Ｓ１００４）に遷移し、ＳＳ信号のローレベルの解除（Ｓ１００５）により第１のアイドル状態（Ｓ１００２）に戻る。
【００８８】
第２のＳＰＩスレーブデバイス１０３は、第１のアイドル状態（Ｓ１００２）から、図５で前述したＳＰＩマスタデバイス１０１によるデバイス固有ＩＤ探索処理（Ｓ１００６）に応答して、デバイス固有ＩＤ応答処理の状態（Ｓ１００７）に遷移する。その後、第２のＳＰＩスレーブデバイス１０３は、第１のアイドル状態（Ｓ１００２）に戻る。
【００８９】
第２のＳＰＩスレーブデバイス１０３は、第１のアイドル状態（Ｓ１００２）から、図６で前述したバス固有ＩＤ設定処理（Ｓ１００８）により自装置にバス固有ＩＤを設定し、その後第２のアイドル状態（Ｓ１００９）に遷移する。
【００９０】
第２のＳＰＩスレーブデバイス１０３は、第２のアイドル状態（Ｓ１００９）から、図７のＳＰＩマスタデバイス１０１によるバス固有ＩＤを用いたＳＰＩ通信処理で、自装置に登録されているバス固有ＩＤが指定されると（Ｓ１０１０）、次の処理を実行する。この場合、第２のＳＰＩスレーブデバイス１０３は、拡張方式で動作するＳＰＩマスタデバイス１０１に対するＳＰＩ応答（Ｓ１０１１）に遷移する。
【００９１】
第２のＳＰＩスレーブデバイス１０３は、ＳＰＩ応答の状態（Ｓ１０１１）で、図７で前述したバス固有ＩＤの指定の解除または別のバス固有ＩＤの指定（Ｓ１０１２）がなされると、第２のアイドル状態（Ｓ１００９）に戻る。
【００９２】
第２のＳＰＩスレーブデバイス１０３は、第２のアイドル状態（Ｓ１００９）またはＳＰＩ応答の状態（Ｓ１０１１）で、図８で前述したリセット処理（Ｓ１０１３またはＳ１０１４）により、第１のアイドル状態（Ｓ１００２）に戻る。
【００９３】
図１１は、本実施形態の動作例を示すタイミングチャートである。図７で前述したようにして、通信期間１１０１でＩ番目のバス固有ＩＤが指定される。この結果、その通信期間に続いてＳＳ信号がハイレベルとなる期間１１０２で、ＳＰＩマスタデバイス１０１がＩ番目の第２のＳＰＩスレーブデバイス１０３との間で、拡張方式によるＳＰＩ通信を実行することが可能となる。この期間１１０２では、バス固有ＩＤを指定されていない他のII番目等の第２のＳＰＩスレーブデバイス１０３は、ＳＰＩマスタデバイス１０１からの通信には応答しない。また、期間１１０２では、ＳＳ信号はハイレベルであるため、一般方式による第１のＳＰＩスレーブデバイス１０２も、ＳＰＩマスタデバイス１０１からの通信には応答しない。このＳＰＩ通信が終了すると、図７で前述したようにして、通信期間１１０３でバス固有ＩＤの指定の解除がなされる。
【００９４】
次に、図７で前述したようにして、通信期間１１０４でII番目のバス固有ＩＤが指定される。この結果、その通信期間に続いてＳＳ信号がハイレベルとなる期間１１０５で、ＳＰＩマスタデバイス１０１がII番目の第２のＳＰＩスレーブデバイス１０３との間で、拡張方式によるＳＰＩ通信を実行することが可能となる。この期間１１０５では、バス固有ＩＤを指定されていない他のＩ番目等の第２のＳＰＩスレーブデバイス１０３は、ＳＰＩマスタデバイス１０１からの通信には応答しない。また、期間１１０５では、ＳＳ信号はハイレベルであるため、一般方式による第１のＳＰＩスレーブデバイス１０２も、ＳＰＩマスタデバイス１０１からの通信には応答しない。このＳＰＩ通信が終了すると、図７で前述したようにして、通信期間１１０６でバス固有ＩＤの指定の解除がなされる。
【００９５】
ＳＰＩマスタデバイス１０１は、一般方式による第１のＳＰＩスレーブデバイス１０２と通信を行いたいときには、期間１１０７に示されるように、ＳＳ信号をローレベルに設定する。これにより、ＳＰＩマスタデバイス１０１が第１のＳＰＩスレーブデバイス１０２との間で、一般方式によるＳＰＩ通信を実行することが可能となる。
【００９６】
以上説明した動作を、図３の構成を有するＳＰＩマスタデバイス１０１のマイコンコア３０１または図４の構成を有する第２のＳＰＩスレーブデバイス１０３のマイコンコア４０１が、それぞれにインストールされたドライバソフトウェアプログラムによって実行する場合の処理について、図１２から図１９のフローチャート、および図２０から図２２のフローチャートに従って説明する。
【００９７】
図１２は、ＳＰＩマスタデバイス１０１が実行する全体制御処理の例を示すフローチャートである。
【００９８】
図３のマイコンコア３０１は、ＳＰＩインタフェースの制御処理を開始する（Ｓ１）。図８で前述したリセット処理により任意のタイミングでリセットされた場合も、このＳ１に戻る。
【００９９】
次に、マイコンコア３０１は、図５で前述したデバイス固有ＩＤ探索処理を実行する（Ｓ２）。
【０１００】
マイコンコア３０１は、Ｓ２の実行の結果、デバイス固有ＩＤが見つかったか否かを判定する（Ｓ３）。
【０１０１】
Ｓ３の判定がＹＥＳならば、マイコンコア３０１は、図６で前述したバス固有ＩＤ設定処理を実行する（Ｓ４）。Ｓ３の判定がＮＯならば、この処理はスキップする。
【０１０２】
その後、マイコンコア３０１は、ＳＰＩアクセスを実行する（Ｓ５）。
マイコンコア３０１は、図８で前述したリセット処理によりリセットがなされたか否かを判定する（Ｓ６）。
【０１０３】
Ｓ６の判定がＮＯならば、マイコンコア３０１は、Ｓ４のＳＰＩアクセスの処理に戻る。
Ｓ６の判定がＹＥＳならば、マイコンコア３０１は、Ｓ１に戻る。
【０１０４】
図１３、図１４，および図１５は、図１２のＳ２のデバイス固有ＩＤ探索処理の詳細例を示すフローチャートである。この処理は、図５で前述したＳＰＩマスタデバイス１０１によるデバイス固有ＩＤ探索処理に対応している。
【０１０５】
マイコンコア３０１はまず初期化処理を実行する（図１３のＳ１）。この処理において、マイコンコア３０１は、特には図示しないメモリ上に一時記憶される探索用のデバイス固有ＩＤを、「０」（２進数で「００００  ００００  ００００  ００００・・・００００  ００００」にする。また、マイコンコア３０１は、特には図示しないメモリ上に記憶されている後述する「探索ＩＤ送信完了フラグ」をクリアする。また、マイコンコア３０１は、特には図示しないメモリ上に記憶されている後述する「送っていない最上位ビットの位置」を記憶する変数の値を、ＭＳＢ（最上位ビット）である「６３」にする。さらに、マイコンコア３０１は、図３のＭＩＳＯ端子を、オープンドレイン出力にする。
【０１０６】
次に、マイコンコア３０１は、図３の送信用レジスタ３０６において、上位２ビットに図５で前述したＩＤ探索コマンドの値“００”を設定し、下位６ビットに“００００００”を設定する（図１３のＳ２）。これは、図５に関して前述した＜ＳＰＩマスタデバイス１０１の動作２＞の処理である。
【０１０７】
続いて、マイコンコア３０１は、ＳＳ信号とＣＬＫ信号の制御を実行する（図１３のＳ３）。これは、図５に関して前述した＜ＳＰＩマスタデバイス１０１の動作１＞の処理である。すなわち、マイコンコア３０１は、図３のＳＳ端子から出力されるＳＳ信号が図３のＣＬＫ端子から出力されるＣＬＫ信号の１クロック長さ分だけローレベルとなる信号を生成する。具体的には、マイコンコア３０１は、図３の＃２の汎用１ビットレジスタ３０８に、ローレベル値を設定する。そして、マイコンコア３０１は、図３の＃０の汎用１ビットレジスタ３０８を制御して、＃０のクロック出力制御回路３０５から、１周期分のみのＣＬＫ信号を出力させる。
【０１０８】
Ｓ３の１クロック長さ分のＳＳ信号の制御の後、マイコンコア３０１は、ＳＳ信号をハイレベルにする制御を実行する（図１３のＳ４）。これは、図５に関して前述した＜ＳＰＩマスタデバイス１０１の動作１＞の処理である。具体的には、マイコンコア３０１は、図３の＃２の汎用１ビットレジスタ３０８に、ハイレベル値を設定する。
【０１０９】
次に、マイコンコア３０１は、Ｓ２で図３の送信用レジスタ３０６に設定されたＩＤ探索コマンドを含む８ビットデータを、送信用シフトレジスタ３０２に転送する（図１３のＳ５）。これは、図５に関して前述した＜ＳＰＩマスタデバイス１０１の動作２＞の処理である。
【０１１０】
次に、マイコンコア３０１は、ＩＤ探索コマンドを含む８ビットデータの出力処理を実行する（図１３のＳ６）。これは、図５に関して前述した＜ＳＰＩマスタデバイス１０１の動作２＞の処理である。具体的には、マイコンコア３０１は、＃０の汎用１ビットレジスタ３０８を制御することにより、＃０のクロック出力制御回路３０５からＣＬＫ端子を介して、８ビット分のＣＬＫ信号を出力する。また、マイコンコア３０１は、＃１の汎用１ビットレジスタ３０８を制御することにより、＃１のクロック出力制御回路３０５から送信用シフトレジスタ３０２および受信用シフトレジスタ３０３に、８ビット分のＣＬＫ信号を出力する。この結果、Ｓ５で送信用シフトレジスタ３０２に転送されたＩＤ探索コマンドを含む８ビットデータが、ＭＯＳＩ端子から順次シリアルデータ（図５（ｃ）の５０１に対応）として出力される。これと同時に、ＭＩＳＯ端子から順次入力する８ビット分のシリアルデータが、受信用シフトレジスタ３０３に順次記憶される。
【０１１１】
次に、図１３のＳ７からＳ１１は、図５に関して前述した＜ＳＰＩマスタデバイス１０１の動作３＞の処理に対応する。
【０１１２】
まず、マイコンコア３０１は、特には図示しないメモリ上に一時記憶されている探索用のデバイス固有ＩＤのビット中で、図３の送信用レジスタ３０６に送っていない部分があるか否かを判定する（図１３のＳ７）。
【０１１３】
メモリ上の探索用のデバイス固有ＩＤのビット中で図３の送信用レジスタ３０６に送っていない部分がまだある（Ｓ７の判定がＹＥＳ）の場合は、マイコンコア３０１は、探索用のデバイス固有ＩＤの転送処理を実行する（図１３のＳ８）。この処理では、マイコンコア３０１は、メモリ上の探索用のデバイス固有ＩＤのビットのうち、メモリ上の変数「送っていない最上位ビットの位置」が示す位置から８ビット分を、図３の送信用レジスタ３０６に転送する。
【０１１４】
マイコンコア３０１は、メモリ上の変数「送っていない最上位ビットの位置」の値を、Ｓ８の結果更新された、メモリ上の探索用のデバイス固有ＩＤのビットのうちまだ送っていない最上位ビットの位置に書き換える（図１３のＳ９）。
【０１１５】
次に、マイコンコア３０１は、ステップ８で図３の送信用レジスタ３０６に設定された探索用のデバイス固有ＩＤの８ビットデータを、送信用シフトレジスタ３０２に転送する（図１３のＳ１０）。
【０１１６】
次に、マイコンコア３０１は、探索用のデバイス固有ＩＤの８ビットデータの出力処理を実行する（図１３のＳ１１）。具体的には、マイコンコア３０１は、＃０の汎用１ビットレジスタ３０８を制御することにより、＃０のクロック出力制御回路３０５からＣＬＫ端子を介して、８ビット分のＣＬＫ信号を出力する。また、マイコンコア３０１は、＃１の汎用１ビットレジスタ３０８を制御することにより、＃１のクロック出力制御回路３０５から送信用シフトレジスタ３０２および受信用シフトレジスタ３０３に、８ビット分のＣＬＫ信号を出力する。この結果、Ｓ１０で送信用シフトレジスタ３０２に転送された探索用のデバイス固有ＩＤを含む８ビットデータが、ＭＯＳＩ端子から順次シリアルデータ（図５（ｃ）の５０２に対応）として出力される。これと同時に、ＭＩＳＯ端子から順次入力する８ビット分のシリアルデータ（図５（ｄ）の５０３、５０４に対応）が、受信用シフトレジスタ３０３に順次記憶される。
【０１１７】
次に、図１４のＳ１２からＳ１６は、図５に関して前述した＜ＳＰＩマスタデバイス１０１の動作４＞の処理に対応する。
【０１１８】
まず、マイコンコア３０１は、図３の受信用レジスタ３０７に、図１３のＳ１１で受信用シフトレジスタ３０３に記憶された８ビットのデータを転送する（図１４のＳ１２）。このデータは、何れかの第２のＳＰＩスレーブデバイス１０３からのデバイス固有ＩＤ応答のデータである。
【０１１９】
次に、マイコンコア３０１は、Ｓ１２で図３の受信用レジスタ３０７に転送された８ビットのデバイス固有ＩＤ応答のデータが０（２進数で「００００  ００００」）であるか否かを判定する（図１４のＳ１３）。この処理は、何れかの第２のＳＰＩスレーブデバイス１０３のデバイス固有ＩＤが、８ビット前に送信された探索用のデバイス固有ＩＤの８ビットデータと一致しているか否かを判定する処理である。
【０１２０】
Ｓ１３の判定がＹＥＳならば、マイコンコア３０１は、メモリ上の変数「探索ＩＤ送信完了フラグ」の値が１であるか否かを判定する（図１４のＳ１４）。
【０１２１】
Ｓ１４の判定がＮＯの場合には、探索用のデバイス固有ＩＤの全てのビットの比較がまだ終了していないため、マイコンコア３０１は、図１３のＳ７の処理に戻る。マイコンコア３０１は、Ｓ７で再び、特には図示しないメモリに記憶されている探索用のデバイス固有ＩＤのビット中で、図３の送信用レジスタ３０６に送っていない部分があるか否かを判定する（図１３のＳ７）。マイコンコア３０１は、Ｓ７の判定がＹＥＳならば、再び図１３のＳ８以降を実行する。
【０１２２】
メモリ上の探索用のデバイス固有ＩＤのビット中で図３の送信用レジスタ３０６に送っていない部分がもうない（Ｓ７の判定がＮＯである）場合には、マイコンコア３０１は、まず特には図示しないメモリ上の探索ＩＤ送信完了フラグの値を１にする。その上で、マイコンコア３０１は、前述した図１３のＳ９からＳ１１、および図１４のＳ１２からＳ１３までを再度実行する。探索用のデバイス固有ＩＤの最後の８ビットが送信されてから、それに対応するデバイス固有ＩＤ応答のデータが返ってくるまでには、第２のＳＰＩスレーブデバイス１０３内の図１４の受信用シフトレジスタ３０３の８ビット分だけ遅延がある。このため、上述の図１３のＳ９からＳ１１、および図１４のＳ１２からＳ１３までの一連の処理によって、探索用のデバイス固有ＩＤの最後の８ビットに対応する最後の８ビットのデバイス固有ＩＤ応答のデータの受信および比較処理が実行される。なお、図１３のＳ１１では、図３の送信用シフトレジスタ３０２のデータが送信されるが、このデータは第２のＳＰＩスレーブデバイス１０３では処理されないため、問題はない。
【０１２３】
最後の８ビットのデバイス固有ＩＤ応答のデータについても図１４のＳ１３の判定がＹＥＳになると、探索用のデバイス固有ＩＤの全ビットが、何れかの第２のＳＰＩスレーブデバイス１０３のデバイス固有ＩＤの全ビットと一致したことになる。
【０１２４】
続いて、マイコンコア３０１がＳ１４を実行した場合、図１３のＳ７の判定がＮＯになったときにメモリ上の変数「探索ＩＤ送信完了フラグ」の値が１にされているので、Ｓ１４の判定がＹＥＳになる。
【０１２５】
Ｓ１４の判定がＹＥＳの場合、マイコンコア３０１は、送信が完了した探索用のデバイス固有ＩＤを、特には図示しないメモリ上の配列変数「見つかったデバイス固有ＩＤ」のテーブルに追加登録する（図１４のＳ１５）。
【０１２６】
次に、マイコンコア３０１は、メモリに一時記憶されている探索用のデバイス固有ＩＤのビットが全て１（２進数で「１１１１  １１１１・・・１１１１  １１１１」）になったか否かを判定する（図１４のＳ１６）。探索用のデバイス固有ＩＤは、図１３のＳ１で０に初期化された後、順次インクリメントされて、ビット値が全て１になったときに、設定され得る最後のデバイス固有ＩＤが指定されたことになる。
【０１２７】
従って、Ｓ１６の判定がＹＥＳになると、マイコンコア３０１は、図１３、図１４、および図１５のフローチャートで示される図１２のＳ２のデバイス固有ＩＤ探索処理を終了する。この結果、特には図示しないメモリ上の配列変数「見つかったデバイス固有ＩＤ」のテーブルには、ＳＰＩマスタデバイス１０１に接続されている全ての第２のＳＰＩスレーブデバイス１０３のデバイス固有ＩＤが登録されることになる。
【０１２８】
次の図１４のＳ１７、Ｓ１９、Ｓ２０，および図１５のＳ２１、Ｓ２２は、図５に関して前述した＜ＳＰＩマスタデバイス１０１の動作５＞の処理に対応する。
【０１２９】
まず、全ての探索用のデバイス固有ＩＤの指定が終わっていない場合（Ｓ１６の判定がＮＯの場合）には、マイコンコア３０１は、メモリ上に一時記憶されている探索用のデバイス固有ＩＤの値に１を加えて、次の探索用のデバイス固有ＩＤとする（図１４のＳ１７）。
【０１３０】
その後、マイコンコア３０１は、図１５のＳ２２の処理に移行する。この処理については、後述する。
【０１３１】
一方、探索用のデバイス固有ＩＤの８ビットについての受信後の比較処理において、図１４のＳ１３の判定がＮＯとなった場合には、マイコンコア３０１は、次の処理を実行する。このケースは、図１４のＳ１２で図３の受信用レジスタ３０７に転送された８ビットのデバイス固有ＩＤ応答のデータが０（２進数で「００００  ００００」）ではない場合である。
【０１３２】
この場合、マイコンコア３０１はまず、デバイス固有ＩＤ応答のデータでＭＳＢ側からみて最初にその値が１となる位置に対応する探索用のデバイス固有ＩＤのビット位置を、「不一致箇所」としてメモリに記憶する（図１４のＳ１９）。例えば、メモリに一時記憶されている探索用のデバイス固有ＩＤが２進数の６４ビットデータ「００００  ００００  ００００  ００００・・・・００００  ００００」である場合を考える。この探索用のデバイス固有ＩＤに対応するデバイス固有ＩＤ応答のデータが、最初の８ビットは「００００  ００００」で一致し、次の８ビットが「０００１  １１１１」となって不一致になったとする。この場合、探索用のデバイス固有ＩＤにおいて、６３ビット目の最上位ビット（最下位ビットは０ビット目）からみて最初に値が１となる５２ビット目が、「不一致箇所」として記憶される。
【０１３３】
今、ＳＰＩマスタデバイス１０１が先に送信した探索用のデバイス固有ＩＤの８ビットシリアルデータのうち、「不一致箇所」で、全ての第２のＳＰＩスレーブデバイス１０３のデバイス固有ＩＤの対応するビット位置の値が不一致になっている。この場合には、現在の探索用のデバイス固有ＩＤの探索処理は中止して、次の探索用のデバイス固有ＩＤを設定する必要がある。この場合、現在の探索用のデバイス固有ＩＤの「不一致箇所」のビット位置の値と同じ値を有するデバイス固有ＩＤを探索用のデバイス固有ＩＤとして探索すると、「不一致箇所」で全ての第２のＳＰＩスレーブデバイス１０３において必ず不一致が発生する。「不一致箇所」よりも下位ビットがどのような値に設定されても、「不一致箇所」のビット値が同じである限り不一致が発生する。ここで、探索用のデバイス固有ＩＤはオール０の値からオール１の値まで増加するようにインクリメントされている（図１４のＳ１７参照）。このため以下の処理では、現在メモリに一時記憶されている探索用のデバイス固有ＩＤの値に対して、値が増加する方向で、かつ「不一致箇所」に対応するビット位置の値が現在の値と異なるように、次に指定されるべき探索用のデバイス固有ＩＤの値が算出される。
【０１３４】
この処理を実行するために、マイコンコア３０１はまず、メモリに一時記憶されている探索用のデバイス固有ＩＤの上記「不一致箇所」に対応するビット位置の値が１であるか否かを判定する（図１４のＳ２０）。
【０１３５】
探索用のデバイス固有ＩＤの上記「不一致箇所」に対応するビット位置の値が０（Ｓ２０の判定がＮＯ）なら、マイコンコア３０１は、次に指定すべき探索用のデバイス固有ＩＤを以下のように算出しメモリに一時記憶させる（図１５のＳ２１）。
・ＭＳＢから「不一致箇所」の１ビット上位側のビット目までは、現在メモリに一時記憶されている探索用のデバイス固有ＩＤの対応するビットの値と同じ値とする。
・「不一致箇所」のビットは、１とする。
・「不一致箇所」よりも下位のビットは、全て０とする。
【０１３６】
例えば、現在の探索用のデバイス固有ＩＤが６４ビットデータ「００００  ０００１  ００００  ００００・・・・００００  ００００」で、デバイス固有ＩＤ応答の最初の８ビットが「００００  ００００」、次の８ビットが「０００１  １１１１」とする。この場合、「不一致箇所」はＭＳＢの６３ビット目からみて５２ビット目であり、５２ビット目の値は０である。このため、次に指定すべき探索用のデバイス固有ＩＤは、「不一致箇所」の５２ビット目を１に反転させて、「００００  ０００１  ０００１  ００００・・・・００００  ００００」となる。
【０１３７】
一方、探索用のデバイス固有ＩＤの上記「不一致箇所」に対応するビット位置の値が１（Ｓ２０の判定がＹＥＳ）なら、マイコンコア３０１は、以下の処理を実行する（図１５のＳ２１′）。まず、マイコンコア３０１は、探索用のデバイス固有ＩＤとそれぞれ同じデータ長を有する、以下の第１の値および第２の値を算出する。
【０１３８】
＜第１の値＞：ＭＳＢから「不一致箇所」のビットまでは、現在メモリに一時記憶されている探索用のデバイス固有ＩＤの対応するビットの値と同じ値とし、「不一致箇所」よりも下位のビットは全て０とする。
【０１３９】
＜第２の値＞：「不一致箇所」のビットのみが１で、それ以外のビットは全て０とする。
【０１４０】
次に、マイコンコア３０１は、上記第１の値と第２の値を加算し、その加算結果を次に指定すべき探索用のデバイス固有ＩＤとして、メモリに一時記憶させる。
【０１４１】
例えば、現在の探索用のデバイス固有ＩＤが６４ビットデータ「００００  ０００１  ０００１  ００００・・・・００００  ００００」で、デバイス固有ＩＤ応答の最初の８ビットが「００００  ００００」、次の８ビットが「０００１  １１１１」とする。この場合、第１の値は「００００  ０００１  ０００１  ００００・・・・００００  ００００」、第２の値は「００００  ００００  ０００１  ００００・・・・００００  ００００」となる。この２つの値が加算される結果、次に指定されるべき探索用のデバイス固有ＩＤは、「００００  ０００１  ００１０  ００００・・・・００００  ００００」となる。
【０１４２】
上記Ｓ２１またはＳ２１′の後、マイコンコア３０１は、図１３のＳ３およびＳ４と同様に、ＳＳ信号とＣＬＫ信号の制御を実行する（図１５のＳ２２）。すなわち、マイコンコア３０１は、図３のＳＳ端子から出力されるＳＳ信号が図３のＣＬＫ端子から出力されるＣＬＫ信号の１クロック長さ分だけローレベルとなる信号を生成する。具体的には、マイコンコア３０１は、図３の＃２の汎用１ビットレジスタ３０８に、ローレベル値を設定する。そして、マイコンコア３０１は、図３の＃０の汎用１ビットレジスタ３０８を制御して、＃０のクロック出力制御回路３０５から、１周期分のみのＣＬＫ信号を出力させる。さらに、マイコンコア３０１は、図３の＃２の汎用１ビットレジスタ３０８にハイレベル値を設定することにより、ＳＳ信号をハイレベルにする制御を実行する。
【０１４３】
上記Ｓ２２の処理の後、マイコンコア３０１は、図１３のＳ３の処理に戻り、新たに指定した探索用のデバイス固有ＩＤについての探索処理を続行する。
【０１４４】
図１６および図１７は、図１２のＳ４のバス固有ＩＤ設定処理の詳細例を示すフローチャートである。この処理は、図６で前述したＳＰＩマスタデバイス１０１によるバス固有ＩＤ設定処理に対応している。
【０１４５】
まず、マイコンコア３０１は、「バス固有ＩＤの長さ」を決定する（図１６のＳ１）。ＳＰＩマスタデバイス１０１に接続される第２のＳＰＩスレーブデバイス１０３の数が、例えば６３個以下ならば「バス固有ＩＤの長さ」は６ビットであり、例えば３１９（６３＋２５６）個以下ならば「バス固有ＩＤの長さ」は１４ビットである。前者の６ビット長をデータ長タイプ１と呼び、後者の１４ビット長をデータ長タイプ２と呼ぶ。なお、「バス固有ＩＤの長さ」は、上記２タイプよりも長くてもよく、データ長タイプとして３以上の値が定義されてもよい。
【０１４６】
次に、マイコンコア３０１は、特には図示しないメモリ上に記憶され、割り付けるバス固有ＩＤの順番を格納する変数「割り付けるバス固有ＩＤ」の初期値を１に設定する（図１６のＳ２）。
【０１４７】
次にマイコンコア３０１は、メモリ上の配列変数「見つかったデバイス固有ＩＤ」のテーブル（図１４のＳ１５参照）の変数「割り付けるバス固有ＩＤ」が示す値番目のエントリから、第２のＳＰＩスレーブデバイス１０３のデバイス固有ＩＤを取得する。マイコンコア３０１は、このデバイス固有ＩＤを、図６で前述した設定用のデバイス固有ＩＤとして、メモリ上に記憶される変数「割り付けるＩＤ」に設定する（以上、図１６のＳ３）。
【０１４８】
続いて、マイコンコア３０１は、ＳＳ信号とＣＬＫ信号の制御を実行する（図１６のＳ４）。これは、図６に関して前述した＜ＳＰＩマスタデバイス１０１の動作１＞の処理である。すなわち、マイコンコア３０１は、図３のＳＳ端子から出力されるＳＳ信号が図３のＣＬＫ端子から出力されるＣＬＫ信号の１クロック長さ分だけローレベルとなる信号を生成する。具体的には、マイコンコア３０１は、図３の＃２の汎用１ビットレジスタ３０８に、ローレベル値を設定する。そして、マイコンコア３０１は、図３の＃０の汎用１ビットレジスタ３０８を制御して、＃０のクロック出力制御回路３０５から、１周期分のみのＣＬＫ信号を出力させる。
【０１４９】
Ｓ４の１クロック長さ分のＳＳ信号の制御の後、マイコンコア３０１は、ＳＳ信号をハイレベルにする制御を実行する（図１６のＳ５）。これは、図６に関して前述した＜ＳＰＩマスタデバイス１０１の動作１＞の処理である。具体的には、マイコンコア３０１は、図３の＃２の汎用１ビットレジスタ３０８に、ハイレベル値を設定する。
【０１５０】
次に、マイコンコア３０１は、図３の送信用レジスタ３０６において、上位２ビットに図６で前述したＩＤ設定コマンドの値“０１”を設定し、下位６ビットに「割り付けるバス固有ＩＤ」の上位６ビットを設定する（図１６のＳ６）。これは、図６に関して前述した＜ＳＰＩマスタデバイス１０１の動作２＞の処理である。
【０１５１】
次に、マイコンコア３０１は、Ｓ６で図３の送信用レジスタ３０６に設定されたＩＤ設定コマンドを含む８ビットデータを、送信用シフトレジスタ３０２に転送する（図１６のＳ７）。これは、図６に関して前述した＜ＳＰＩマスタデバイス１０１の動作２＞の処理である。
【０１５２】
次に、マイコンコア３０１は、ＩＤ設定コマンドを含む８ビットデータの出力処理を実行する（図１６のＳ８）。これは、図６に関して前述した＜ＳＰＩマスタデバイス１０１の動作２＞の処理である。具体的には、マイコンコア３０１は、＃０の汎用１ビットレジスタ３０８を制御することにより、＃０のクロック出力制御回路３０５からＣＬＫ端子を介して、８ビット分のＣＬＫ信号を出力する。また、マイコンコア３０１は、＃１の汎用１ビットレジスタ３０８を制御することにより、＃１のクロック出力制御回路３０５から送信用シフトレジスタ３０２および受信用シフトレジスタ３０３に、８ビット分のＣＬＫ信号を出力する。この結果、Ｓ７で送信用シフトレジスタ３０２に転送されたＩＤ設定コマンドを含む８ビットデータが、ＭＯＳＩ端子から順次シリアルデータ（図６（ｃ）の６０１に対応）として出力される。これと同時に、ＭＩＳＯ端子から順次入力する８ビット分のシリアルデータが、受信用シフトレジスタ３０３に順次記憶される。
【０１５３】
次に、図１７のＳ９からＳ１１は、図６に関して前述した＜ＳＰＩマスタデバイス１０１の動作３＞の処理に対応する。
【０１５４】
まずマイコンコア３０１は、図１６のＳ３で「割り付けるＩＤ」に格納されている、「割り付けるバス固有ＩＤ」番目に見つかったデバイス固有ＩＤの８ビット分を、図３の送信用レジスタ３０６に設定する。さらに、マイコンコア３０１は、送信用レジスタ３０６に設定されたデバイス固有ＩＤの８ビットデータを、送信用シフトレジスタ３０２に転送する（以上、図１７のＳ９）。
【０１５５】
次に、マイコンコア３０１は、設定用のデバイス固有ＩＤの８ビットデータの出力処理を実行する（図１７のＳ１０）。具体的には、マイコンコア３０１は、＃０の汎用１ビットレジスタ３０８を制御することにより、＃０のクロック出力制御回路３０５からＣＬＫ端子を介して、８ビット分のＣＬＫ信号を出力する。また、マイコンコア３０１は、＃１の汎用１ビットレジスタ３０８を制御することにより、＃１のクロック出力制御回路３０５から送信用シフトレジスタ３０２および受信用シフトレジスタ３０３に、８ビット分のＣＬＫ信号を出力する。この結果、Ｓ９で送信用シフトレジスタ３０２に転送された設定用のデバイス固有ＩＤの８ビットデータが、ＭＯＳＩ端子から順次シリアルデータ（図６（ｃ）の６０２に対応）として出力される。これと同時に、ＭＩＳＯ端子から順次入力する８ビット分のシリアルデータが、受信用シフトレジスタ３０３に順次記憶される。
【０１５６】
その後、マイコンコア３０１は、図１６のＳ３で「割り付けるＩＤ」に格納されているデバイス固有ＩＤの全てのビット分を、図３の送信用レジスタ３０６に設定したか否かを判定する（図１７のＳ１１）。
【０１５７】
Ｓ１１の判定がＮＯならば、Ｓ９の処理に戻って、設定用のデバイス固有ＩＤの８ビットずつの送信処理を続行する。
【０１５８】
設定用のデバイス固有ＩＤの全てのビットの送信が終了してＳ１１の判定がＹＥＳになると、マイコンコア３０１は、図１７のＳ１２からＳ１７の処理を実行する。これらの処理は、図６に関して前述した＜ＳＰＩマスタデバイス１０１の動作４＞の処理に対応する。この場合、マイコンコア３０１は、図１６のＳ１で設定したバス固有ＩＤのデータ長タイプが２以上である場合に、Ｓ１２からＳ１７の処理を実行する。データ長タイプが１である場合には、図６（ｃ）のシリアルデータ６０３は不要で６０１だけでよいため、Ｓ１２からＳ１７の処理はスキップする。
【０１５９】
まずマイコンコア３０１は、メモリ上の変数「割り付けるバス固有ＩＤ」に記憶されているバス固有ＩＤの上位側から未送信の８ビットを、図３の送信用レジスタ３０６に設定する。さらに、マイコンコア３０１は、送信用レジスタ３０６に設定されたバス固有ＩＤの８ビットデータを、送信用シフトレジスタ３０２に転送する（以上、図１７のＳ１２）。
【０１６０】
次に、マイコンコア３０１は、バス固有ＩＤの８ビットデータの出力処理を実行する（図１７のＳ１３）。具体的には、マイコンコア３０１は、＃０の汎用１ビットレジスタ３０８を制御することにより、＃０のクロック出力制御回路３０５からＣＬＫ端子を介して、８ビット分のＣＬＫ信号を出力する。また、マイコンコア３０１は、＃１の汎用１ビットレジスタ３０８を制御することにより、＃１のクロック出力制御回路３０５から送信用シフトレジスタ３０２および受信用シフトレジスタ３０３に、８ビット分のＣＬＫ信号を出力する。この結果、Ｓ９で送信用シフトレジスタ３０２に転送されたバス固有ＩＤの８ビットデータが、ＭＯＳＩ端子から順次シリアルデータ（図６（ｃ）の６０３に対応）として出力される。これと同時に、ＭＩＳＯ端子から順次入力する８ビット分のシリアルデータが、受信用シフトレジスタ３０３に順次記憶される。
【０１６１】
マイコンコア３０１は、受信用シフトレジスタ３０３に記憶された８ビットの応答データを、図３の受信用レジスタ３０７に転送する（図１７のＳ１４）。
【０１６２】
マイコンコア３０１は、受信用レジスタ３０７に転送された内容が０であるか否かを判定する（図１７のＳ１５）。図６では前述しなかったが、第２のＳＰＩスレーブデバイス１０３は、ＳＰＩマスタデバイス１０１から、設定用のデバイス固有ＩＤを受信して自装置のデバイス固有ＩＤと一致した場合や、バス固有ＩＤを受信した場合に、ローレベルの応答シリアルデータを返す。マイコンコア３０１は、受信用レジスタ３０７に転送された応答データが０でない場合（Ｓ１５の判定がＮＯの場合）には、設定用のデバイス固有ＩＤに対応する第２のＳＰＩスレーブデバイス１０３から応答がなく故障であると判定する。この場合には、マイコンコア３０１は、その第２のＳＰＩスレーブデバイス１０３は無視して、Ｓ１７′に移行し、次の第２のＳＰＩスレーブデバイス１０３に対する処理に移る。
【０１６３】
Ｓ１５の判定がＹＥＳなら、マイコンコア３０１は、メモリ上の変数「割り付けるバス固有ＩＤ」に記憶されているバス固有ＩＤの全てのビットを送信したか否かを判定する（図１７のＳ１６）。
【０１６４】
Ｓ１６の判定がＮＯならば、マイコンコア３０１は、Ｓ１２の処理に戻って、バス固有ＩＤの残りのビットの送信処理を続行する。
【０１６５】
Ｓ１６の判定がＹＥＳになったら、マイコンコア３０１は、最後の８ビットデータの受信処理を実行する（図１７のＳ１７）。具体的には、マイコンコア３０１は、＃０の汎用１ビットレジスタ３０８を制御することにより、＃０のクロック出力制御回路３０５からＣＬＫ端子を介して、８ビット分のＣＬＫ信号を出力する。また、マイコンコア３０１は、＃１の汎用１ビットレジスタ３０８を制御することにより、＃１のクロック出力制御回路３０５から送信用シフトレジスタ３０２および受信用シフトレジスタ３０３に、８ビット分のＣＬＫ信号を出力する。この結果、Ｓ５で送信用シフトレジスタ３０２の８ビットデータが、ＭＯＳＩ端子から順次シリアルデータとして出力される。これと同時に、ＭＩＳＯ端子から順次入力する８ビット分のシリアルデータが、受信用シフトレジスタ３０３に順次記憶される。
【０１６６】
その後、マイコンコア３０１は、ＳＳ信号とＣＬＫ信号の制御を実行する（図１７のＳ１７′）。これは、図６で前述した＜ＳＰＩマスタデバイス１０１の動作５＞の処理である。すなわち、マイコンコア３０１は、図３のＳＳ端子から出力されるＳＳ信号が図３のＣＬＫ端子から出力されるＣＬＫ信号の１クロック長さ分だけローレベルとなる信号を生成する。具体的には、マイコンコア３０１は、図３の＃２の汎用１ビットレジスタ３０８に、ローレベル値を設定する。そして、マイコンコア３０１は、図３の＃０の汎用１ビットレジスタ３０８を制御して、＃０のクロック出力制御回路３０５から、１周期分のみのＣＬＫ信号を出力させる。さらに、マイコンコア３０１は、図３の＃２の汎用１ビットレジスタ３０８にハイレベル値を設定することにより、ＳＳ信号をハイレベルにする制御を実行する。
【０１６７】
上記処理の後、マイコンコア３０１は、メモリの変数「割り付けるバス固有ＩＤ」の値を＋１インクリメントし、その値でメモリ上の配列変数「見つかったデバイス固有ＩＤ」のテーブル（図１４のＳ１５参照）の未処理のエントリにアクセスする（図１７のＳ１７′′）。
【０１６８】
マイコンコア３０１は、このアクセスに失敗したか否かを判定することにより、登録されている全ての第２のＳＰＩスレーブデバイス１０３にバス固有ＩＤを設定したか否かを判定する（図１７のＳ１８）。
【０１６９】
Ｓ１８の判定がＮＯなら、マイコンコア３０１は、Ｓ３の処理に戻って、新たな設定用のデバイス固有ＩＤに対応する第２のＳＰＩスレーブデバイス１０３に対して、バス固有ＩＤ設定処理を続行する。
【０１７０】
Ｓ１８の判定がＹＥＳになったならば、マイコンコア３０１は、図１６および図１７のフローチャートで示される図１２のＳ４のバス固有ＩＤ設定処理を終了する。
【０１７１】
図１８および図１９は、図１２のＳ５のＳＰＩアクセス処理の詳細例を示すフローチャートである。この処理は、図７で前述したバス固有ＩＤを用いたＳＰＩ通信処理を含み、拡張方式で動作する第２のＳＰＩスレーブデバイス１０３に対するＳＰＩアクセス処理に加えて、一般方式による第１のＳＰＩスレーブデバイス１０２に対するＳＰＩアクセス処理を含む。
【０１７２】
まず、マイコンコア３０１は、一般方式の第１のＳＰＩスレーブデバイス１０２へのアクセスが発生したか否かを判定する（図１８のＳ１）。
【０１７３】
Ｓ１の判定がＹＥＳの場合、マイコンコア３０１は、一般方式によるＳＰＩ通信を開始する（図１８のＳ２）。具体的には、マイコンコア３０１は、図３の＃２の汎用１ビットレジスタ３０８にローレベル値を設定し、ＳＳ端子から出力されるＳＳ信号をローレベルにする。また、マイコンコア３０１は、図３の＃０の汎用１ビットレジスタ３０８を制御することにより、＃０のクロック出力制御回路３０５に、ＣＬＫ端子にＣＬＫ信号を連続的に出力させる。
【０１７４】
続いて、マイコンコア３０１は、一般方式によるＳＰＩ通信を実施する（図１８のＳ３）。この詳細については、説明を省略する。
【０１７５】
マイコンコア３０１は、一般方式によるＳＰＩ通信を終了するときは、図３の＃２の汎用１ビットレジスタ３０８にハイレベル値を設定し、ＳＳ端子から出力されるＳＳ信号をハイレベルにする。
【０１７６】
その後、マイコンコア３０１は、Ｓ１の処理に戻る。
Ｓ１の判定がＮＯの場合、マイコンコア３０１は、拡張方式によるＳＰＩ通信を開始する。
【０１７７】
まずマイコンコア３０１は、ＳＳ信号とＣＬＫ信号の制御を実行する（図１８のＳ５）。これは、図７に関して前述した＜ＳＰＩマスタデバイス１０１の動作１＞の処理である。すなわち、マイコンコア３０１は、図３のＳＳ端子から出力されるＳＳ信号が図３のＣＬＫ端子から出力されるＣＬＫ信号の１クロック長さ分だけローレベルとなる信号を生成する。具体的には、マイコンコア３０１は、図３の＃２の汎用１ビットレジスタ３０８に、ローレベル値を設定する。そして、マイコンコア３０１は、図３の＃０の汎用１ビットレジスタ３０８を制御して、＃０のクロック出力制御回路３０５から、１周期分のみのＣＬＫ信号を出力させる。その後、マイコンコア３０１は、図３の＃２の汎用１ビットレジスタ３０８にハイレベル値を設定し、ＳＳ端子から出力されるＳＳ信号をハイレベルにする。
【０１７８】
次に、マイコンコア３０１は、図３の送信用レジスタ３０６において、上位２ビットに図７で前述したＩＤ指定コマンドの値“１０”を設定し、下位６ビットに設定したいバス固有ＩＤの上位６ビット分を設定する。そして、マイコンコア３０１は、送信用レジスタ３０６に設定されたＩＤ指定コマンドを含む８ビットデータを、送信用シフトレジスタ３０２に転送する（以上、図１８のＳ６）。これは、図７に関して前述した＜ＳＰＩマスタデバイス１０１の動作２＞の処理である。
【０１７９】
次に、マイコンコア３０１は、ＩＤ指定コマンドを含む８ビットデータの出力処理を実行する（図１８のＳ７）。これは、図７に関して前述した＜ＳＰＩマスタデバイス１０１の動作２＞の処理である。具体的には、マイコンコア３０１は、＃０の汎用１ビットレジスタ３０８を制御することにより、＃０のクロック出力制御回路３０５からＣＬＫ端子を介して、８ビット分のＣＬＫ信号を出力する。また、マイコンコア３０１は、＃１の汎用１ビットレジスタ３０８を制御することにより、＃１のクロック出力制御回路３０５から送信用シフトレジスタ３０２に、８ビット分のＣＬＫ信号を出力する。この結果、Ｓ６で送信用シフトレジスタ３０２に転送されたＩＤ指定コマンドを含む８ビットデータが、ＭＯＳＩ端子から順次シリアルデータ（図７（ｃ）の７０１に対応）として出力される。
【０１８０】
次に、図１８のＳ８からＳ１０は、図７に関して前述した＜ＳＰＩマスタデバイス１０１の動作３＞の処理に対応する。
【０１８１】
まず、マイコンコア３０１は、バス固有ＩＤのデータ長が１４ビット長（図１６のＳ１参照）であるか否かを判定する（図１８のＳ８）。
【０１８２】
Ｓ８の判定がＮＯならば、バス固有ＩＤのデータ長は６ビット長であり、Ｓ６およびＳ７で送信が完了しているので、Ｓ９およびＳ１０はスキップして図１９のＳ１１に移行する。
【０１８３】
Ｓ８の判定がＹＥＳならば、マイコンコア３０１は、図３の送信用レジスタ３０６に、バス固有ＩＤの残りの下位８ビットを設定する。そして、マイコンコア３０１は、送信用レジスタ３０６に設定されたバス固有ＩＤの８ビットデータを、送信用シフトレジスタ３０２に転送する（以上、図１８のＳ９）。これは、図７に関して前述した＜ＳＰＩマスタデバイス１０１の動作３＞の処理である。
【０１８４】
次に、マイコンコア３０１は、バス固有ＩＤを含む８ビットデータ（図７（ｃ）の７０３に対応）の出力処理を実行する（図１８のＳ１０）。この処理は、前述した図１８のＳ７と同様である。
【０１８５】
その後、マイコンコア３０１は、ＳＳ信号とＣＬＫ信号の制御を実行する（図１８のＳ１０′）。これは、図７で前述した＜ＳＰＩマスタデバイス１０１の動作４＞の処理である。すなわち、マイコンコア３０１は、図３のＳＳ端子から出力されるＳＳ信号が図３のＣＬＫ端子から出力されるＣＬＫ信号の１クロック長さ分だけローレベルとなる信号を生成する。具体的には、マイコンコア３０１は、図３の＃２の汎用１ビットレジスタ３０８に、ローレベル値を設定する。そして、マイコンコア３０１は、図３の＃０の汎用１ビットレジスタ３０８を制御して、＃０のクロック出力制御回路３０５から、１周期分のみのＣＬＫ信号を出力させる。さらに、マイコンコア３０１は、図３の＃２の汎用１ビットレジスタ３０８にハイレベル値を設定することにより、ＳＳ信号をハイレベルにする制御を実行する。
【０１８６】
これ以降、ＳＰＩマスタデバイス１０１は、以下の図１９のＳ１１からＳ１７の一連の処理により、図３のＣＬＫ端子から出力するＣＬＫ信号に同期して、図３のＭＯＳＩ端子からＳＰＩ通信のシリアルデータ（図７（ｃ）の７０３に対応）を送信する。これは、図７に関して前述した＜ＳＰＩマスタデバイス１０１の動作４＞の処理に対応する。
【０１８７】
まずマイコンコア３０１は、ＳＰＩ通信において送信するコマンドやデータを図３の送信用レジスタ３０６に設定し、この送信用レジスタ３０６の内容を図３の送信用シフトレジスタ３０２に転送する（図１９のＳ１１）。
【０１８８】
次に、マイコンコア３０１は、送信するコマンドやデータを含む８ビットデータの出力処理を実行する（図１９のＳ１２）。具体的には、マイコンコア３０１は、＃０の汎用１ビットレジスタ３０８を制御することにより、＃０のクロック出力制御回路３０５からＣＬＫ端子を介して、８ビット分のＣＬＫ信号を出力する。また、マイコンコア３０１は、＃１の汎用１ビットレジスタ３０８を制御することにより、＃１のクロック出力制御回路３０５から送信用シフトレジスタ３０２に、８ビット分のＣＬＫ信号を出力する。この結果、Ｓ１１で送信用シフトレジスタ３０２に転送された送信するコマンドやデータを含む８ビットデータが、ＭＯＳＩ端子から順次シリアルデータ（図７（ｃ）の７０３に対応）として出力される。
【０１８９】
マイコンコア３０１は、必要ならば、ＳＰＩ通信においてさらに付加的に送信するコマンドやデータを図３の送信用レジスタ３０６に設定し、この送信用レジスタ３０６の内容を図３の送信用シフトレジスタ３０２に転送する（図１９のＳ１３）。
【０１９０】
次に、マイコンコア３０１は、付加的に送信するコマンドやデータを含む８ビットデータの出力処理を実行する（図１９のＳ１４）。具体的には、マイコンコア３０１は、＃０の汎用１ビットレジスタ３０８を制御することにより、＃０のクロック出力制御回路３０５からＣＬＫ端子を介して、８ビット分のＣＬＫ信号を出力する。また、マイコンコア３０１は、＃１の汎用１ビットレジスタ３０８を制御することにより、＃１のクロック出力制御回路３０５から送信用シフトレジスタ３０２および受信用シフトレジスタ３０３に、８ビット分のＣＬＫ信号を出力する。この結果、Ｓ１３で送信用シフトレジスタ３０２に転送された付加的に送信するコマンドやデータを含む８ビットデータが、ＭＯＳＩ端子から順次シリアルデータ（図７（ｃ）の７０３に対応）として出力される。これと同時に、ＭＩＳＯ端子から順次入力する８ビット分のシリアルデータ（図７（ｄ）の７０４に対応）が、受信用シフトレジスタ３０３に順次記憶される。
【０１９１】
マイコンコア３０１は、受信用シフトレジスタ３０３に記憶された８ビットの応答データを、図３の受信用レジスタ３０７に転送する（図１９のＳ１５）。
【０１９２】
マイコンコア３０１は、受信用レジスタ３０７に転送された応答データを処理する（図１９のＳ１６）。
【０１９３】
次に、マイコンコア３０１は、第２のＳＰＩスレーブデバイス１０３へのＳＰＩアクセスが完了したか否かを判定する（図１９のＳ１７）。
【０１９４】
ＳＰＩアクセスが完了していない（Ｓ１７の判定がＮＯである）場合には、マイコンコア３０１は、図１９のＳ１３の処理に戻って、ＳＰＩアクセスを続行する。
【０１９５】
ＳＰＩアクセスが完了した（Ｓ１７の判定がＹＥＳになった）場合には、マイコンコア３０１は、図１８のＳ５と同様の、ＳＳ信号とＣＬＫ信号の１クロック長出力制御を実行する（図１９のＳ１８）。これは、図７に関して前述した＜ＳＰＩマスタデバイス１０１の動作５＞の処理である。
【０１９６】
次に、マイコンコア３０１は、図３の送信用レジスタ３０６において、上位２ビットに図７で前述したＩＤ指定コマンドの値“１０”を設定し、下位６ビットに“００００００”を設定する。この８ビットのデータは、ＩＤ指定解除コマンドとして機能する。そして、マイコンコア３０１は、送信用レジスタ３０６に設定されたＩＤ指定解除コマンドを含む８ビットデータを、送信用シフトレジスタ３０２に転送する（以上、図１９のＳ１９）。これは、図７に関して前述した＜ＳＰＩマスタデバイス１０１の動作５＞の処理である。
【０１９７】
次に、マイコンコア３０１は、ＩＤ指定コマンドを含む８ビットデータの出力処理を実行する（図１９のＳ２０）。この処理は、前述した図１８のＳ７と同様である。
【０１９８】
その後、マイコンコア３０１は、図１８のＳ５と同様の、ＳＳ信号とＣＬＫ信号の１クロック長出力制御を実行する（図１９のＳ２１）。これは、図７で前述した＜ＳＰＩマスタデバイス１０１の動作４＞の処理である。
【０１９９】
以上により、マイコンコア３０１は、図１８および図１９のフローチャートで示される図１２のＳ５のＳＰＩアクセス処理を終了する。
【０２００】
図２０は、第２のＳＰＩスレーブデバイス１０３が実行する全体制御処理の例を示すフローチャートである。
【０２０１】
図４のマイコンコア４０１は、ＳＰＩインタフェースの制御処理を開始する（図２０のＳ１）。図８で前述したリセット処理により任意のタイミングでリセットされた場合も、このＳ１に戻る。
【０２０２】
マイコンコア４０１は、図４の＃３の汎用１ビットレジスタ４０８の値を監視することにより、ＳＳ端子から入力するＳＳ信号がローレベルになるまで待つ（図２０のＳ２）。
【０２０３】
ＳＳ信号がローレベルになると、マイコンコア４０１は、次の処理を実行する。マイコンコア４０１は、図４の１クロック判定回路４０４の出力を＃０の汎用１ビットレジスタ４０８に転送して判定することにより、１クロック分のＳＳ信号が入力して通信開始状態になったか否かを判定する（図２０のＳ３）。
【０２０４】
Ｓ３の判定がＮＯならば、マイコンコア４０１は、図４の＃３の汎用１ビットレジスタ４０８の値を監視することにより、ＳＳ端子から入力するＳＳ信号がローレベルである間、第１のＳＰＩスレーブデバイス１０２と同様の一般方式によるＳＰＩスレーブデバイスとして、ＳＰＩマスタデバイス１０１との間で通信を実行する（図２０のＳ４）。
【０２０５】
マイコンコア４０１は、図４の＃３の汎用１ビットレジスタ４０８の値を監視することにより、ＳＳ端子から入力するＳＳ信号のローレベルの状態が解除されハイレベルになったら、Ｓ２の監視処理に戻る。
【０２０６】
Ｓ２でＳＳ信号がローレベルになりさらに＃０の汎用１ビットレジスタ４０８により１クロック分のＳＳ信号が入力したと判定された（図２０のＳ３の判定がＮＯになった）場合、マイコンコア４０１は、拡張方式による通信開始の状態と判定する。これは、前述した図５、図６、または図７で前述した＜第２のＳＰＩスレーブデバイス１０３の動作１＞の処理に対応する。
【０２０７】
この場合、マイコンコア４０１は、＃０の汎用１ビットレジスタ４０８の内容をリセットした後、ＭＯＳＩ端子から入力するシリアルデータの受信処理を実行する（図２０のＳ５）。具体的には、マイコンコア４０１は、＃１の汎用１ビットレジスタ４０８を制御することにより、クロック出力制御回路４０５から送信用シフトレジスタ４０３および受信用シフトレジスタ４０２に、８ビット分のＣＬＫ信号を出力する。この結果、ＭＯＳＩ端子から順次入力する８ビット分のシリアルデータが、受信用シフトレジスタ４０２に順次記憶される。さらに、マイコンコア４０１は、図４の受信用レジスタ４０６に、受信用シフトレジスタ４０２に記憶された８ビットのデータを転送する。
【０２０８】
次に、マイコンコア４０１は、受信用レジスタ４０６に転送されたデータの上位２ビットが、ＩＤ探索コマンド“００”であるか否かを判定する（図２０のＳ６）。
【０２０９】
Ｓ６の判定がＹＥＳならば、マイコンコア４０１は、デバイス固有ＩＤ応答処理を実行する（図２０のＳ７）。これは、図５で前述した＜第２のＳＰＩスレーブデバイス１０３の動作２＞の処理に対応する。この処理の詳細については、図２１のフローチャートを用いて後述する。Ｓ７の処理の後、マイコンコア４０１は、Ｓ２の監視処理に戻る。
【０２１０】
Ｓ６の判定がＮＯならば、マイコンコア４０１は、受信用レジスタ４０６に転送されたデータの上位２ビットが、ＩＤ設定コマンド“０１”であるか否かを判定する（図２０のＳ８）。
【０２１１】
Ｓ８の判定がＮＯならば、マイコンコア４０１は、Ｓ２の監視処理に戻る。
Ｓ８の判定がＹＥＳならば、マイコンコア４０１は、バス固有ＩＤ設定処理を実行する（図２０のＳ９）。これは、図６で前述した＜第２のＳＰＩスレーブデバイス１０３の動作２＞の処理に対応する。この処理の詳細については、図２２のフローチャートを用いて後述する。
【０２１２】
Ｓ９の処理の後、マイコンコア４０１は、Ｓ９でバス固有ＩＤが自装置に設定されたか否かを判定する（図２０のＳ１０）。
【０２１３】
Ｓ１０の判定がＮＯならば、マイコンコア４０１は、Ｓ２の監視処理に戻る。
Ｓ１０の判定がＹＥＳならば、マイコンコア４０１は、次の処理を実行する。マイコンコア４０１は、図４の１クロック判定回路４０４の出力を＃０の汎用１ビットレジスタ４０８に転送して判定することにより、１クロック分のＳＳ信号が入力して通信開始状態になるまで待機する（図２０のＳ１１の判定がＮＯの繰返し）。これは、図７で前述した＜第２のＳＰＩスレーブデバイス１０３の動作１＞の処理に対応する。
【０２１４】
Ｓ１１の判定がＹＥＳになると、マイコンコア４０１は、Ｓ５と同様の処理により、図４のＭＯＳＩ端子から入力するシリアルデータを受信用シフトレジスタ４０２に入力し、受信用レジスタ４０６に転送する。マイコンコア４０１は、受信用レジスタ４０６に転送されたデータの上位２ビットが、ＩＤ指定コマンド“１０”であり、かつ続いて受信したバス固有ＩＤとして自装置に登録されているバス固有ＩＤが指定されるまで待機する（図２０のＳ１２の判定がＮＯの繰返し）。これは、図７で前述した＜第２のＳＰＩスレーブデバイス１０３の動作２＞および＜第２のＳＰＩスレーブデバイス１０３の動作３＞の処理に対応する。
【０２１５】
Ｓ１２の判定がＹＥＳになると、マイコンコア４０１は、次の処理を実行する。マイコンコア４０１は、図４の１クロック判定回路４０４の出力を＃０の汎用１ビットレジスタ４０８に転送して判定することにより、１クロック分のＳＳ信号が入力して通信終了状態になるまで待機する（図２０のＳ１２´の判定がＮＯの繰返し）。これは、図７で前述した＜第２のＳＰＩスレーブデバイス１０３の動作４＞の処理に対応する。
【０２１６】
Ｓ１２´の判定がＹＥＳになると、マイコンコア４０１は、ＳＰＩ通信可能状態になる（図２０のＳ１３）。ＳＰＩ通信可能状態では、マイコンコア４０１は、＃３の汎用１ビットレジスタ４０８の値がハイレベル、すなわち、ＳＳ端子から入力するＳＳ信号がハイレベルの状態で、ＳＰＩ通信を実行する。この場合、マイコンコア４０１は、図４のＣＬＫ端子から入力する図７（ａ）のＣＬＫ信号に同期して、図４のＭＯＳＩ端子から入力するＳＰＩ通信のシリアルデータ（図７（ｃ）の７０３に対応）を、８ビットずつ受信して処理する。また、マイコンコア４０１は、必要に応じて、図４のＣＬＫ端子から入力するＣＬＫ信号に同期して、図４のＭＩＳＯ端子から、ＳＰＩ通信のシリアルデータ（図７（ｄ）の７０４に対応）を８ビットずつ送信する。これらの処理は、図７で前述した＜第２のＳＰＩスレーブデバイス１０３の動作４＞の処理に対応する。具体的には、マイコンコア４０１は、図４の＃１の汎用１ビットレジスタ４０８を制御することにより、クロック出力制御回路４０５から送信用シフトレジスタ４０３および受信用シフトレジスタ４０２に、８ビット分のＣＬＫ信号を出力する。この結果、ＭＯＳＩ端子から順次入力する８ビット分のシリアルデータが、受信用シフトレジスタ４０２に順次記憶され、続けて受信用レジスタ４０６に転送される。また、送信用レジスタ４０７から送信用シフトレジスタ４０３にセットされたデータが、ＭＩＳＯ端子から８ビット分のシリアルデータとして順次送信される。
【０２１７】
マイコンコア４０１は、ＳＰＩ通信可能状態において、ＳＰＩマスタデバイス１０１から自装置へのバス固有ＩＤの指定の解除が指示されたか否かを判定する（図２０のＳ１４）。具体的には、マイコンコア４０１は、図４の１クロック判定回路４０４の出力を＃０の汎用１ビットレジスタ４０８に転送して判定することにより、１クロック分のＳＳ信号が入力して通信開始状態が指定されたか否かを判定する。この判定がＹＥＳになると、マイコンコア４０１は、Ｓ５と同様の処理により、図４のＭＯＳＩ端子から入力するシリアルデータを受信用シフトレジスタ４０２に入力し、受信用レジスタ４０６に転送する。マイコンコア４０１は、受信用レジスタ４０６に転送されたデータの上位２ビットがＩＤ指定コマンド“１０”であり、かつ下位６ビットが“００００００”となってＩＤ指定解除が指定されているか否かを判定する。あるいは、マイコンコア４０１は、受信用レジスタ４０６に転送されたデータの上位２ビットがＩＤ指定コマンド“１０”であり、かつ続けて自装置に設定されているバス固有ＩＤ以外のバス固有ＩＤが指定されているか否かを判定する。これらの判定の後、マイコンコア４０１は、図４の１クロック判定回路４０４の出力を＃０の汎用１ビットレジスタ４０８に転送して判定することにより、１クロック分のＳＳ信号が入力して通信終了状態になるまで待機した後、Ｓ１４の判定処理を終了する。
【０２１８】
Ｓ１４の処理の結果、上記何れかの判定がＮＯの場合には、マイコンコア４０１は、Ｓ１３のＳＰＩ通信可能状態に戻る。
【０２１９】
一方、Ｓ１４の処理の結果、上記何れの判定もＹＥＳになった場合には、マイコンコア４０１は、ＳＰＩ通信可能状態を終了して、Ｓ１１の通信開始状態の検出処理に戻る。
【０２２０】
マイコンコア４０１は、Ｓ１２のコマンド判定処理で、図８で前述したリセットコマンド“１１”を検出した場合には、自装置におけるバス固有ＩＤの登録を解除（特には図示しないメモリ上の設定をクリア）した上で、Ｓ１の開始状態に戻る。
【０２２１】
図２１は、図２０のＳ７のデバイス固有ＩＤ応答処理の詳細例を示すフローチャートである。
【０２２２】
図４のマイコンコア４０１は、デバイス固有ＩＤ応答処理を開始する（図２１のＳ１）。
【０２２３】
マイコンコア４０１はまず、初期化処理を実行する（図２１のＳ２）。具体的には、マイコンコア４０１は、後述する特には図示しないメモリに記憶される「不一致フラグ」をクリアする。また、マイコンコア４０１は、図４の１クロック判定回路４０４から＃０の汎用１ビットレジスタ４０８に値１がセットされたときに、割込み処理が発生するように設定を行う。この割込み処理については、後述する。
【０２２４】
以下に説明する図２１のＳ３からＳ１０までの一連の処理は、図５で前述した＜第２のＳＰＩスレーブデバイス１０３の動作３＞の処理に対応する。
【０２２５】
マイコンコア４０１は、図４のＭＯＳＩ端子から入力するシリアルデータの受信待ち状態となる（図２１のＳ３）。具体的には、マイコンコア４０１は、図４の＃１の汎用１ビットレジスタ４０８を制御することにより、クロック出力制御回路４０５から送信用シフトレジスタ４０３および受信用シフトレジスタ４０２に、８ビット分のＣＬＫ信号を出力する。この結果、ＭＯＳＩ端子から順次入力する８ビット分のシリアルデータが、受信用シフトレジスタ４０２に順次記憶される。
【０２２６】
その後、マイコンコア４０１は、図４の受信用シフトレジスタ４０２の内容を、受信用レジスタ４０６に転送する（図２１のＳ４）。
【０２２７】
マイコンコア４０１は、メモリ上の「不一致フラグ」に値１がセットされているか否かを判定する（図２１のＳ５）。
【０２２８】
Ｓ８の判定がＹＥＳならば、マイコンコア４０１は、図４の送信用レジスタ４０７に比較結果としてオールビット１（２進数「１１１１  １１１１」）をセットする（図２１のＳ６）。その後、マイコンコア４０１は、後述するＳ８に移行する。
【０２２９】
Ｓ５の判定がＮＯならば、マイコンコア４０１は、ＳＰＩマスタデバイス１０１から受信用レジスタ４０６に受信された探索用のデバイス固有ＩＤの新たな８ビットデータを、自装置のデバイス固有ＩＤの該当する８ビットと比較する（図２１のＳ７）。マイコンコア４０１は、ＭＳＢから順に比較して、合致しているところまでの各ビットの比較結果を０とする。合致していないビット以下の各ビットの比較結果は１とする。マイコンコア４０１は、この結果得られる８ビットの比較結果データを図４の送信用レジスタ４０７に転送する。
【０２３０】
Ｓ６またはＳ７の処理の後、マイコンコア４０１は、送信用レジスタ４０７に転送された比較結果において、合致しないビット部分があるか否かを判定する（図２１のＳ８）。
【０２３１】
Ｓ８の判定がＹＥＳならば、マイコンコア４０１は、メモリ上の「不一致フラグ」に値１をセットする（図２１のＳ９）。Ｓ８の判定がＮＯならば、マイコンコア４０１は、Ｓ９はスキップする。
【０２３２】
その後、マイコンコア４０１は、８ビットの比較結果データの応答処理を実行する（図２１のＳ１３）。具体的には、マイコンコア４０１は、＃１の汎用１ビットレジスタ４０８を制御することにより、クロック出力制御回路４０５から送信用シフトレジスタ４０３および受信用シフトレジスタ４０２に、８ビット分のＣＬＫ信号を出力する。この結果、Ｓ９またはＳ１０で送信用レジスタ４０７から送信用シフトレジスタ４０３に転送された８ビットの比較結果データが、ＭＩＳＯ端子から順次シリアルデータ（図５（ｄ）の５０４、５０５に対応）として出力される。これと同時に、ＭＯＳＩ端子から順次入力する８ビット分のシリアルデータ（図５（ｃ）の５０２に対応）が、受信用シフトレジスタ４０２に順次記憶される。
【０２３３】
その後、マイコンコア４０１は、図２１のＳ７の処理に戻って、受信用シフトレジスタ４０２に受信された探索用のデバイス固有ＩＤの新たな８ビットデータに対応する比較結果データの応答処理を実行する。
【０２３４】
Ｓ７で前述したように、探索用のデバイス固有ＩＤと自装置のデバイス固有ＩＤの８ビットがＭＳＢから順に比較されて、合致しているところまでの各ビットの比較結果は０とされ、合致していないビット以下の各ビットの比較結果は１とされる。そして、合致していないところがあれば、Ｓ８の判定がＹＥＳとなって、Ｓ９で「不一致フラグ」に値１がセットされる。このように「不一致フラグ」に値１がいったんセットされると、それ以降は必ずＳ５の判定がＹＥＳとなって、比較結果の８ビットはオール１となって、不一致が発生したビットより下位ビットにおいて無意味な比較が行われないように制御される。
【０２３５】
なお、マイコンコア４０１は、図４の送信用レジスタ４０７において値１がセットされているビットが送信用シフトレジスタ４０３からＭＩＳＯ端子から出力されるタイミングにおいて、ＭＩＳＯ端子をオープンドレインにしてハイインピーダンス状態とする。
【０２３６】
上記デバイス固有ＩＤ応答処理における図２１のＳ３以降の任意の処理中に、図４の１クロック判定回路４０４から＃０の汎用１ビットレジスタ４０８に値１がセットされて割込み処理が発生すると、マイコンコア４０１は、次の処理を実行する。マイコンコア４０１は、通信終了の状態になったと判定し、図４の＃０の汎用１ビットレジスタ４０８をクリアし、かつこのレジスタで割込み処理が発生しないように設定を変更する。この上で、マイコンコア４０１は、図２１のフローチャートで示される図２０のＳ７のデバイス固有ＩＤ応答処理を終了し、図２０のＳ７からＳ２の監視処理に戻る。
【０２３７】
図２２は、図２０のＳ９のバス固有ＩＤ設定処理の詳細例を示すフローチャートである。
【０２３８】
図４のマイコンコア４０１は、バス固有ＩＤ設定処理を開始する（図２２のＳ１）。
マイコンコア４０１はまず、初期化処理を実行する（図２２のＳ２）。具体的には、マイコンコア４０１は、図４の１クロック判定回路４０４から＃０の汎用１ビットレジスタ４０８に値１がセットされたときに、割込み処理が発生するように設定を行う。この割込み処理が発生すると、マイコンコア４０１は、制御を図２２のステップＡに移す。この割込み処理については、後述する。
【０２３９】
マイコンコア４０１は、図２０のＳ５で受信用レジスタ４０６にセットされたＩＤ設定コマンド“０１”を含む８ビットデータ（図６（ｃ）の６０１に対応）の下位６ビットからバス固有ＩＤの上位６ビット分を取り出す。そして、マイコンコア４０１は、その取り出した６ビット分を、特には図示しないメモリ上の変数「バス固有ＩＤ」に追加保存する（図２２のＳ３）。これは、前述した図６の＜第２のＳＰＩスレーブデバイス１０３の動作２＞の処理に対応する。
【０２４０】
続いて、以下の図２２のＳ４からＳ１０の一連の処理は、前述した図６の＜第２のＳＰＩスレーブデバイス１０３の動作３＞の処理に対応する。
【０２４１】
まずマイコンコア４０１は、図４のＭＯＳＩ端子から入力する設定用のデバイス固有ＩＤのシリアルデータ（図６（ｃ）の６０２に対応）の受信待ち状態となる（図２２のＳ４）。具体的には、マイコンコア４０１は、図４の＃１の汎用１ビットレジスタ４０８を制御することにより、クロック出力制御回路４０５から送信用シフトレジスタ４０３および受信用シフトレジスタ４０２に、８ビット分のＣＬＫ信号を出力する。この結果、ＭＯＳＩ端子から順次入力する８ビット分のシリアルデータが、受信用シフトレジスタ４０２に順次記憶される。マイコンコア４０１は、受信用シフトレジスタ４０２に記憶された８ビットデータを、図４の受信用レジスタ４０６に転送する。
【０２４２】
マイコンコア４０１は、受信用レジスタ４０６に転送された設定用のデバイス固有ＩＤの新たな８ビットデータを、特には図示しないメモリ上の変数「比較用デバイス固有ＩＤ」に追加登録する（図２２のＳ５）。
【０２４３】
マイコンコア４０１は、自装置のデバイス固有ＩＤのデータ長分だけ、設定用のデバイス固有ＩＤのデータを受信したか否かを判定する（図２２のＳ６）。
【０２４４】
Ｓ６の判定がＮＯならば、マイコンコア４０１は、Ｓ４の処理に戻って、設定用のデバイス固有ＩＤの新たな８ビットデータの受信処理を続行する。
【０２４５】
Ｓ６の判定がＹＥＳになると、マイコンコア４０１は、メモリ上の変数「比較用デバイス固有ＩＤ」に揃った設定用のデバイス固有ＩＤを、自装置のデバイス固有ＩＤと比較して一致したか否かを判定する（図２２のＳ７）。
【０２４６】
Ｓ７の判定がＹＥＳならば、マイコンコア４０１は、図４のＭＯＳＩ端子から入力する残りのバス固有ＩＤのシリアルデータ（図６（ｃ）の６０３に対応）の受信待ち状態となる（図２２のＳ９）。具体的には、マイコンコア４０１は、図４の＃１の汎用１ビットレジスタ４０８を制御することにより、クロック出力制御回路４０５から送信用シフトレジスタ４０３および受信用シフトレジスタ４０２に、８ビット分のＣＬＫ信号を出力する。この結果、ＭＯＳＩ端子から順次入力する８ビット分のシリアルデータが、受信用シフトレジスタ４０２に順次記憶される。マイコンコア４０１は、受信用シフトレジスタ４０２に記憶された８ビットデータを、図４の受信用レジスタ４０６に転送する。
【０２４７】
マイコンコア４０１は、受信用レジスタ４０６に転送されたバス固有ＩＤの新たな８ビットデータを、特には図示しないメモリ上の変数「バス固有ＩＤ」に追加登録する（図２２のＳ１０）。
【０２４８】
マイコンコア４０１は、上述のＳ９とＳ１０の処理を繰り返すことにより、最終的にメモリ上の変数「バス固有ＩＤ」に全データが揃う。
【０２４９】
メモリ上の変数「バス固有ＩＤ」に全データが揃ったタイミングで、ＳＰＩマスタデバイス１０１からの制御により、図４の１クロック判定回路４０４から＃０の汎用１ビットレジスタ４０８に値１がセットされて割込み処理が発生する。この結果、マイコンコア４０１は、バス固有ＩＤ設定処理に関して通信終了の状態になったと判定し、図４の＃０の汎用１ビットレジスタ４０８をクリアし、かつこのレジスタで割込み処理が発生しないように設定を変更する。この上で、マイコンコア４０１は、図２２のステップＡに制御を移す。
【０２５０】
これにより、マイコンコア４０１は、メモリ上の変数「バス固有ＩＤ」に全データが揃っていれば、その値を自装置に対して登録されたバス固有ＩＤとして、メモリ等に登録する（図２２のＳ１２）。
【０２５１】
その後、図２２のフローチャートで示される図２０のＳ９のバス固有ＩＤ設定処理を終了し（図２２のＳ１３）、図２０のＳ９からＳ２の監視処理に戻る。
【０２５２】
前述したＳ７の判定がＮＯ、すなわち、メモリ上の変数「比較用デバイス固有ＩＤ」に揃った設定用のデバイス固有ＩＤが自装置のデバイス固有ＩＤと不一致であると判定された場合には、マイコンコア４０１は、次の処理を実行する。マイコンコア４０１は、メモリ上の変数「バス固有ＩＤ」の値をクリアした上で、Ｓ１２に移行する。この結果、バス固有ＩＤは自装置には登録されず、図２２のフローチャートで示される図２０のＳ９のバス固有ＩＤ設定処理を終了し（図２２のＳ１３）、図２０のＳ９からＳ２の監視処理に戻る。
【０２５３】
上述した本実施形態の適用例について、以下に説明する。
図２３は、パーソナルコンピュータメインボードにおける図１の伝送システム１００の構成例を示す図である。この構成例では、図１のＳＰＩマスタデバイス１０１に対応するメインボード上のＳＰＩマスタデバイスに、図１の第２のＳＰＩスレーブデバイス１０３に対応するＳＰＩ温度センサが接続される。例えば、製品ラインナップとして、以下のものがあった場合を考える。
１．温度センサ無し
２．温度センサ１台
３．温度センサ２台
【０２５４】
このようなラインナッブを、図２３の構成例で実装した場合、以下のような特徴を有する。
１．配線は４本のみで、並行して配線が可能になる。
２．配線が少なく、かつ配線ルートが簡単で済む。
３．ＳＰＩマスタデバイスは、温度センサが何個あるか、プログラムで認識が可能のため、共通のプログラムで、メインボードのラインナップに対応できる。ラインナップ毎にプログラムを変更しなくて済むため、プログラムの開発やメンテナンスが楽になる。
【０２５５】
図２４は、車載システムにおける図１の伝送システム１００の構成例を示す図である。この構成例では、図１のＳＰＩマスタデバイス１０１として動作する車載コンピュータに、図１の第２のＳＰＩスレーブデバイス１０３として動作する温度センサや回転センサが接続される。例えば、製品ラインナップとして、以下のものがあった場合を考える。
１．ＡＢＳ（アンチロックブレーキシステム）有り＋ブレーキパッド温度センサ無し
２．ＡＢＳ有り＋ブレーキパッド温度センサ有り
【０２５６】
このようなラインアップを実現する本実施形態による車載システムの配線例は、図２４（ａ）に示される。この配線例において、全ての配線は４本の並行線であり、分岐コネクタはラインナップに対応するためのものである。この配線例は、以下の特徴を有する。
【０２５７】
１．配線は４本のみで、並行して配線が可能になる。図２４（ｂ）および（ｃ）は、上述のラインナップ１．および２．のそれぞれの場合における従来の配線例を示す。これらの図に示されるように、従来は、ラインナップ別に長い配線を７本、１１本などというように管理をする必要があった。これに対して、本実施形態が適用される図２４の配線例は、少ない配線数で車載システムを実現でき、かつラインナップ間で共通化を図ることが可能となる。
【０２５８】
２．車載コンピュータは、共通のプログラムでラインナップに対応できる。ラインナップ毎にプログラムを変更しなくて済み、プログラムの開発やメンテナンスが楽になる。
【０２５９】
以上の実施形態は、複数のスレーブ装置が一般方式の第一のスレーブ装置と拡張方式の第二のスレーブ装置との併設から成る伝送システムに関する。他の実施形態の伝送システムにおいては第一のスレーブ装置はなくてもよい。すなわち、本発明は拡張方式の第二のスレーブ装置に同じ拡張方式の第二のスレーブ装置を増設する場合にも適用できる。この場合、マスタ装置と全てのスレーブ装置間の伝送システム内では、スレーブセレクト信号線は1本のみの信号線として共有化される。
【０２６０】
以上の実施形態に関して、さらに以下の付記を開示する。
（付記１）
マスタ装置と、前記マスタ装置と接続されると共に自装置の識別子が設定された複数のスレーブ装置を備える伝送システムであって、
前記マスタ装置は、
前記複数のスレーブ装置のうちの第１のスレーブ装置が応答しないクロック長さの制御信号を前記複数のスレーブ装置のそれぞれに第１のタイミングで伝送する第１の伝送手段と、前記複数のスレーブ装置のそれぞれに対して前記複数のスレーブ装置のうちの増設され得る第２のスレーブ装置を指定する識別子を前記第１のタイミングより後の第２のタイミングで伝送する第２の伝送手段とを備え、
前記複数のスレーブ装置は、
前記制御信号と自装置を指定する前記識別子とを受信した場合に、前記マスタ装置に対してデータを伝送する第３の伝送手段を備える、
ことを特徴とした伝送システム。
（付記２）
前記第１の伝送手段が前記第１のスレーブ装置を選択するためのスレーブセレクト信号線を前記制御信号の１クロック長さ分だけ第１の論理状態にして通信開始とし、続いて前記第２の伝送手段が前記スレーブセレクト信号線を第２の論理状態にして通信期間とし、前記第２の論理状態の終了後前記第１の伝送手段が前記スレーブセレクト信号線を前記制御信号の１クロック長さ分だけ第１の論理状態に戻して通信終了とした後に前記第１のスレーブ装置が応答しない第２の論理状態にし、
前記マスタ装置および前記第２のスレーブ装置は、前記通信開始から前記通信終了までの通信期間で、前記第２の伝送手段および前記第３の伝送手段により、前記制御信号に同期したシリアルデータの通信を行う、
ことを特徴とした付記１記載の伝送システム。
（付記３）
前記マスタ装置および前記第１のスレーブ装置は、前記通信期間以外の期間において、前記マスタ装置が前記スレーブセレクト信号線を前記第１のスレーブ装置が応答する第１の論理状態にすることにより、前記制御信号に同期したシリアルデータの通信を行う、
ことを特徴とした付記２記載の伝送システム。
（付記４）
前記マスタ装置は、前記通信期間で、前記第２の伝送手段により、識別子探索コマンドに続いて、前記第２のスレーブ装置間で一意な識別子であるデバイス固有識別子の候補を探索用のデバイス固有識別子として送信する第１の動作を実行し、
前記第２のスレーブ装置は、前記通信期間で、前記識別子探索コマンドに続いて受信した前記探索用のデバイス固有識別子が自装置のデバイス固有識別子と比較して、一致すれば第１の論理状態を有する応答を出力し、一致しなければ第２の論理状態を有する応答を出力する第２の動作を実行し、
前記マスタ装置は、前記通信期間で、前記探索用のデバイス固有識別子を全て送信した後に、順次入力する前記応答が全て第１の論理状態であれば、前記送信した探索用のデバイス固有識別子を何れかの前記第２のスレーブ装置に設定されているデバイス固有識別子として登録する第３の動作を実行する、
ことを特徴とした付記３記載の伝送システム。
（付記５）
前記マスタ装置は、登録されている前記デバイス固有識別子を設定用の前記デバイス固有識別子として順次指定しながら、前記通信期間で、前記第２の伝送手段により、識別子設定コマンドに続いて、前記設定用のデバイス固有識別子と、任意のデータ長さを有するバス固有識別子とを送信し、
前記第２のスレーブ装置は、前記通信期間で、前記識別子設定コマンドに続いて受信した前記設定用のデバイス固有識別子が自装置のデバイス固有識別子に一致すれば、さらに前記バス固有識別子を自装置に設定する、
ことを特徴とした付記３または４記載の伝送システム。
（付記６）
前記マスタ装置は、前記通信期間で、前記第２の伝送手段により、識別子指定コマンドに続いて、通信を行う前記第２のスレーブ装置に対応し任意のデータ長さを有するバス固有識別子を送信し、
前記第２のスレーブ装置は、前記通信期間で、前記識別子指定コマンドに続いて受信した前記バス固有識別子が自装置に設定されているバス固有識別子と比較して、一致すれば、前記通信終了以後前記スレーブセレクト信号線が第２の論理状態になったタイミングで、前記マスタ装置との間で、前記制御信号に同期したデータ通信を行い、一致しなければ、その後に前記通信期間で識別子解除コマンドまたはリセットコマンドを受信するまでは、前記マスタ装置から入力するデータに応答しない、
ことを特徴とした付記３乃至５記載の伝送システム。
（付記７）
前記スレーブセレクト信号線は前記マスタ装置と前記識別子探索コマンドで探索される複数のスレーブ装置を接続する一本の信号線からなる、
ことを特徴とした付記４記載の伝送システム。
（付記８）
伝送システム上で自装置の識別子が設定され得る複数のスレーブ装置が接続されるマスタ装置であって、
前記複数のスレーブ装置のうちの第１のスレーブ装置が応答しないクロック長さの制御信号を前記複数のスレーブ装置のそれぞれに第１のタイミングで伝送する第１の伝送手段と、前記複数のスレーブ装置のそれぞれに対して前記複数のスレーブ装置のうちの増設された第２のスレーブ装置を指定する識別子を前記第１のタイミングより後の第２のタイミングで伝送することにより、前記制御信号と自装置を指定する前記識別子を受信した前記第２のスレーブ装置にデータを伝送させる第２の伝送手段と、
を備えることを特徴としたマスタ装置。
【符号の説明】
【０２６１】
１００  伝送システム
１０１  ＳＰＩマスタデバイス
１０２  第１のＳＰＩスレーブデバイス
１０３  第２のＳＰＩスレーブデバイス
１０４  ＣＬＫ信号線
１０５  ＳＳ信号線
１０６  ＭＯＳＩ信号線
１０７  ＭＩＳＯ信号線
３０１、４０１  マイコンコア
３０２、４０３  送信用シフトレジスタ
３０３、４０２  受信用シフトレジスタ
３０４  クロック生成器
３０５、４０５  クロック出力制御回路
３０６、４０７  送信用レジスタ
３０７、４０６  受信用レジスタ
３０８、４０８  汎用１ビットレジスタ
【図１】
0006652702.tif 000002
【図２】
0006652702.tif 000003
【図３】
0006652702.tif 000004
【図４】
0006652702.tif 000005
【図５】
0006652702.tif 000006
【図６】
0006652702.tif 000007
【図７】
0006652702.tif 000008
【図８】
0006652702.tif 000009
【図９】
0006652702.tif 000010
【図１０】
0006652702.tif 000011
【図１１】
0006652702.tif 000012
【図１２】
0006652702.tif 000013
【図１３】
0006652702.tif 000014
【図１４】
0006652702.tif 000015
【図１５】
0006652702.tif 000016
【図１６】
0006652702.tif 000017
【図１７】
0006652702.tif 000018
【図１８】
0006652702.tif 000019
【図１９】
0006652702.tif 000020
【図２０】
0006652702.tif 000021
【図２１】
0006652702.tif 000022
【図２２】
0006652702.tif 000023
【図２３】
0006652702.tif 000024
【図２４】
0006652702.tif 000025