JP6652702B2 - 伝送システムおよびマスタ装置 - Google Patents

伝送システムおよびマスタ装置 Download PDF

Info

Publication number
JP6652702B2
JP6652702B2 JP2015252754A JP2015252754A JP6652702B2 JP 6652702 B2 JP6652702 B2 JP 6652702B2 JP 2015252754 A JP2015252754 A JP 2015252754A JP 2015252754 A JP2015252754 A JP 2015252754A JP 6652702 B2 JP6652702 B2 JP 6652702B2
Authority
JP
Japan
Prior art keywords
spi
slave
master device
unique
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2015252754A
Other languages
English (en)
Other versions
JP2017117245A (ja
Inventor
佐久間 繁夫
繁夫 佐久間
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Client Computing Ltd
Original Assignee
Fujitsu Client Computing Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Client Computing Ltd filed Critical Fujitsu Client Computing Ltd
Priority to JP2015252754A priority Critical patent/JP6652702B2/ja
Priority to US15/358,801 priority patent/US10282329B2/en
Publication of JP2017117245A publication Critical patent/JP2017117245A/ja
Application granted granted Critical
Publication of JP6652702B2 publication Critical patent/JP6652702B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)
  • Small-Scale Networks (AREA)

Description

マスタ装置とそのマスタ装置に接続される複数のスレーブ装置とを備える伝送システムに関する。
パーソナルコンピュータや組込み用途で多く使用されるシリアルバスに、SPI(Serial Peripheral Interface)、MicroWire、I2 C、CAN(Controller Area Network)などが知られている。これらのシリアルバスは例えば、EEPROM(Electrically Erasable Programmable Read Only Memory)、各種センサ、入出力制御、D/A・A/Dコンバータなどの周辺機器を接続する用途で使用される。
マスタデバイス(マスタ装置)のシリアルバスに周辺機器のスレーブデバイス(スレーブ装置)を増設する場合、一般的にスレーブセレクト信号線(以下、「SS(Slave Select)信号線」と表記)を、マスタ装置と1対1接続で増設する必要がある。そのため、ハードウエア、ソフトウェア共に、大きな変更が必要であった。例えば、SPIマスタ装置に第1のSPI温度センサを基板端に一カ所設置しているときに、別の基板端に第2のSPI温度センサを後から増設したいような場合である。SPIの場合、SPIマスタ装置から新規にSS信号線を増設し第2のSPI温度センサへ配線しなければならず、大幅な設計変更が必要な場合がある。
また、マスタ装置にどのようなスレーブ装置が接続されているか知りたい場合に、例えば従来のSPIには、スレーブ装置の有無を知る手段が提供されていないため、スレーブ装置が無いことを確実に知ることができないという課題があった。例えば、商品構成で温度センサが無いもの、1つのもの、2つのものを考えたとき、その構成をSPIとは別に知らせる手段を用いなくてはならない。例えば、商品構成毎に内蔵するソフトウェアを用意したり、構成を知らせるハードウエアを追加しなくてはならない。
マスタ装置にSS信号などの信号の追加なしにSPIのスレーブ装置の増設を行う従来技術として、ID(識別子)を2ビット分程度持つことができるスレーブ装置が知られている。
また、以下のような従来技術も知られている(例えば特許文献1に記載の技術)。共通バスが、クロック伝送ライン、マスタ装置からスレーブ装置へデータを伝送する第一のデータ伝送ライン、スレーブ装置からマスタ装置へデータを伝送する第二のデータ伝送ラインおよび制御信号伝送ラインからなる4ラインで構成される。そして、マスタ装置として動作するデバイスが制御信号、クロック信号とともにデータを送信すべきスレーブ装置のデバイスアドレスおよびシリアルデータを含むデータ列を送出する。受信したデバイスアドレスの一致したデバイスがスレーブ装置として動作するとともにマスタ装置に受信データを返信する。そして、マスタ装置は返信された受信データを受けてスレーブ装置の動作を確認するとともにデータ列の最後部においてエンドファンクションコードを送出する。
特開平05−265948号公報
しかし、IDを2ビット分程度持つことができるスレーブ装置の従来技術では、同種のスレーブ装置がいくつ並列して増設できるかはマスタ装置の設定ピンの数に依存しており、並列で増設可能なスレーブ装置の台数はせいぜい4〜8台程度であった。
また、例えば特許文献1に記載のスレーブ装置は、一般的なSPIスレーブ装置と混在させて接続すると、例えばマスタ装置が、通信開始と通信終了を示すコマンドを送信する際に、誤動作が発生する危険性が高い。したがって、上記従来のスレーブ装置は一般的なSPIスレーブ装置と併設できないという課題があった。
そこで、本発明の1つの側面では、制御信号線を増設する必要がなく、従来のスレーブ装置に混在させて、新たなスレーブ装置を増設可能とすることを目的とする。
態様の一例では、マスタ装置と、マスタ装置と接続される複数のスレーブ装置を備える伝送システムであって、マスタ装置は、複数のスレーブ装置のうちの第1のスレーブ装置が応答しないクロック長さの制御信号を複数のスレーブ装置のそれぞれに第1のタイミングで伝送する第1の伝送手段と、複数のスレーブ装置のそれぞれに対して複数のスレーブ装置のうちの増設された第2のスレーブ装置を指定する識別子を第1のタイミングより後の第2のタイミングで伝送する第2の伝送手段とを備える。複数のスレーブ装置のうちの第2のスレーブ装置は、制御信号と自装置を指定する識別子を受信した場合に、マスタ装置に対してデータを伝送する第3の伝送手段を備える。そして、マスタ装置は、第2のスレーブ装置との通信を開始する場合、第1の伝送手段によって、スレーブセレクト信号をクロック信号の1クロック長さ分だけ第1の論理状態にして通信開始とし、続いて、スレーブセレクト信号を第2の論理状態にして第2のスレーブ装置との通信期間とし、第2の論理状態の終了後、スレーブセレクト信号をクロック信号の1クロック長さ分だけ第1の論理状態に戻して第2のスレーブ装置と通信終了とした後に、スレーブセレクト信号を第1のスレーブ装置が応答しない第2の論理状態にする。
制御信号線を増設する必要がなく、従来のスレーブ装置に混在させて、新たなスレーブ装置を増設することが可能となる。
マスタデバイスとスレーブデバイスが接続される伝送システムの実施形態の構成例を示す図である。 本実施形態の基本動作の例を示すタイミングチャートである。 図1のSPIマスタデバイス101の構成例を示すブロック図である。 図1の第2のSPIスレーブデバイス103の構成例を示すブロック図である。 デバイス固有ID探索処理とデバイス固有ID応答処理の例を示すタイミングチャートである。 バス固有ID設定処理の例を示すタイミングチャートである。 バス固有IDを用いたSPI通信処理の例を示すタイミングチャートである。 リセット処理の例を示すタイミングチャートである。 SPIマスタデバイス101の状態遷移図である。 第2のSPIスレーブデバイス103の状態遷移図である。 本実施形態の動作例を示すタイミングチャートである。 SPIマスタデバイス101が実行する全体制御処理の例を示すフローチャートである。 デバイス固有ID探索処理の詳細例を示すフローチャート(その1)である。 デバイス固有ID探索処理の詳細例を示すフローチャート(その2)である。 デバイス固有ID探索処理の詳細例を示すフローチャート(その3)である。 バス固有ID設定処理の詳細例を示すフローチャート(その1)である。 バス固有ID設定処理の詳細例を示すフローチャート(その2)である。 SPIアクセス処理の詳細例を示すフローチャート(その1)である。 SPIアクセス処理の詳細例を示すフローチャート(その2)である。 第2のSPIスレーブデバイス103が実行する全体制御処理の例を示すフローチャートである。 デバイス固有ID応答処理の詳細例を示すフローチャートである。 バス固有ID設定処理の詳細例を示すフローチャートである。 パーソナルコンピュータメインボードにおける伝送システムの構成例を示す図である。 車載システムにおける伝送システムの構成例を示す図である。
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。図1は、SPIマスタデバイスとスレーブデバイスが接続される伝送システム100の実施形態の構成例を示す図である。本実施形態における伝送システム100はSPIシリアルバス方式を採用するシステムであり、マスタデバイスであるSPIマスタデバイス101(マスタ装置)を備える。また、伝送システム100は、一般的なSPIシリアルバス方式(以下単に「一般方式」と表記)によりSPIマスタデバイス101と通信を行うスレーブデバイスである、第1のSPIスレーブデバイス102(第1のスレーブ装置)を備える。さらに、伝送システム100は、本実施形態で提案する拡張可能な方式(以下単に「拡張方式」と表記)によりSPIマスタデバイス101と通信を行うスレーブデバイスである、第2のSPIスレーブデバイス103(第2のスレーブ装置)を備える。
伝送システム100は、クロック信号を伝送するCLK信号線104(クロック信号線)を備える。CLK信号線104は、SPIマスタデバイス101、第1のSPIスレーブデバイス102、または第2のSPIスレーブデバイス103の各CLK端子に接続される。以下の説明において、CLK信号線104上を流れるクロック信号を、CLK信号と表記する。
また、伝送システム100は、SS信号線105(スレーブセレクト信号線)を備える。SS信号線105は、SPIマスタデバイス101、第1のSPIスレーブデバイス102、または第2のSPIスレーブデバイス103の各SS端子に接続される。以下の説明において、SS信号線105上を流れるスレーブセレクト信号を、SS信号と表記する。
さらに、伝送システム100は、SPIマスタデバイス101から第1のSPIスレーブデバイス102または第2のSPIスレーブデバイス103にシリアルデータを伝送するMOSI信号線106(マスタ出力スレーブ入力信号線)を備える。MOSI信号線106は、SPIマスタデバイス101、第1のSPIスレーブデバイス102、または第2のSPIスレーブデバイス103の各MOSI端子に接続される。以下の説明において、MOSI信号線106上を流れるシリアルデータを、MOSIシリアルデータと表記する。
加えて、伝送システム100は、第1のSPIスレーブデバイス102または第2のSPIスレーブデバイス103からSPIマスタデバイス101にシリアルデータを伝送するMISO信号線107(マスタ入力スレーブ出力信号線)を備える。MISO信号線107は、SPIマスタデバイス101、第1のSPIスレーブデバイス102、または第2のSPIスレーブデバイス103の各MISO端子に接続される。以下の説明において、MISO信号線107上を流れるシリアルデータを、MISOシリアルデータと表記する。
以下に説明する本実施形態は、SPIシリアルバス方式を例として説明するが、通信方法がほとんど同じであるMicroWireバスへの転用は容易である。
図2は、図1の伝送システム100の基本動作の例を示すタイミングチャートである。(I)は、図1の一般方式による第1のSPIスレーブデバイス102がSPIマスタデバイス101とSPI通信を行うときのタイミングチャート例である。(II)は、図1の拡張方式で動作する第2のSPIスレーブデバイス103がSPIマスタデバイス101とSPI通信を行うときのタイミングチャート例である。このタイミングチャートにおいて、「H」はハイレベルの論理状態、「L」はローレベルの論理状態を示す。「X」は、状態を考慮しないことを示す。
図2の(I)において、SPIマスタデバイス101は、一般方式の第1のSPIスレーブデバイス102との通信を開始するときは、(a)のCLK信号に同期させて(b)のSS信号を、ハイレベルからローレベルの論理状態にする。そして、SPIマスタデバイス101は、(c)のMOSIシリアルデータとして、MOSI信号線106(図1)に、第1のSPIスレーブデバイス102へのコマンドデータを送信する。第1のSPIスレーブデバイス102は、SS信号がローレベルになったことで、MOSI信号線106上のシリアルデータを受信する状態になり、コマンドデータを受信する。そして、第1のSPIスレーブデバイス102は、このコマンドデータに応答して、(d)のMISOシリアルデータとして、コマンド応答データを、MISO信号線107に送信する。このようにして、SPIマスタデバイス101と第1のSPIスレーブデバイス102は、コマンドデータとコマンド応答データの送受信を繰り返すことにより、通信を実行する。SPIマスタデバイス101は、一般方式の第1のSPIスレーブデバイス102との通信を終了するときは、(a)のCLK信号に同期させて(b)のSS信号を、ローレベルからハイレベルの論理状態に戻す。
次に、図2の(II)において、SPIマスタデバイス101は、拡張方式で動作する第2のSPIスレーブデバイス103との通信を開始するときは、第1の伝送手段として、次の制御を実施する。SPIマスタデバイス101は、第1のSPIスレーブデバイス102が応答しないクロック長さの制御信号であるSS信号を第1のタイミングで伝送する。具体的には、SPIマスタデバイス101は、(a)のCLK信号に同期させて(b)のSS信号を、CLK信号の1クロック長さ分だけ第1の論理状態すなわちローレベルにして通信開始とし、その後の第2のタイミングで第2の論理状態すなわちハイレベルに戻して通信期間とする。SPIマスタデバイス101は、第2の伝送手段として、第2の論理状態の第2のタイミングの通信期間で、拡張方式で動作する第2のSPIスレーブデバイス103を指定する識別子を含む拡張方式におけるコマンドを、(c)のMOSIシリアルデータとして伝送する。第2のSPIスレーブデバイス103は、上述の制御信号すなわち1クロック長さだけ第1の論理状態になるSS信号を受信すると通信開始を認識し、それに続いてSS信号が第2の論理状態になる第2のタイミングの通信期間で、SPIマスタデバイス101と通信可能な状態になる。この状態で、第2のSPIスレーブデバイス103は、第3の伝送手段として、自装置を指定する識別子を含むコマンドを受信した場合に、それに対するコマンド応答を、(d)のMISOシリアルデータとしてSPIマスタデバイス101に伝送する。このようにして、SPIマスタデバイス101と第2のSPIスレーブデバイス103は、上記第2のタイミングの通信期間で、コマンドデータとコマンド応答データの送受信を繰り返すことにより、通信を実行する。SPIマスタデバイス101は、拡張方式で動作する第2のSPIスレーブデバイス103との通信を終了するときは、(a)のCLK信号に同期させて(b)のSS信号を、再びCLK信号の1クロック長さ分だけ第1の論理状態すなわちローレベルにして通信終了とする。その後SPIマスタデバイス101は、SS信号を第2の論理状態すなわちハイレベルに戻す。
以上の制御動作により、本実施形態では、以下の3つの基本動作1、2、および3が実施される。
<基本動作1>
図2の(I)で示したように、SPIマスタデバイス101は、1クロック分のSS信号のアクティベートに続く第2のタイミングで、SS信号がハイレベルのままでも、複数の拡張方式で動作する第2のSPIスレーブデバイス103と通信できる。SS信号線105による第2のSPIスレーブデバイス103の指定が行われないので、SS信号を共有して拡張方式で動作する第2のSPIスレーブデバイス103の増設が可能になる。図1の例では、#1および#2の2台の第2のSPIスレーブデバイス103が、1本のSS信号線105により接続されている例が示されている。SPIの通信プロトコルは厳密には定められていないため、SS信号を単純に共有すると、ターゲットとするスレーブデバイス以外のスレーブデバイスが反応する可能性が必ずある。本実施形態で増設される第2のSPIスレーブデバイス103は、SS信号が1クロック長さ分だけ第1の論理状態となる第1のタイミングを、拡張方式における通信プロトコルの通信開始および通信終了として解釈することができる。SPIの通信は8ビット単位で行われるため、このとき同時に、一般方式による第1のSPIスレーブデバイス102は、拡張方式による通信プロトコルには反応しないようにすることができる。さらに、拡張方式による通信プロトコルでは、図2の(II)で示したように、SPIマスタデバイス101と第2のSPIスレーブデバイス103は、上記第1のタイミング以外は総てSS信号が第2の論理状態すなわちハイレベルの通信期間で通信を行う。このため、拡張方式によるSS信号を、図2の(I)で示した、SS信号がローレベルになることで選択される一般方式による第1のSPIスレーブデバイス102のための一般方式によるSS信号と共有できる。すなわち、SPIマスタデバイス101の1個のSS端子に接続される1本のSS信号線105は、一般方式による第1のSPIスレーブデバイス102のSS端子に接続されると同時に、拡張方式で動作する第2のSPIスレーブデバイス103のSS端子にも接続される。このように、本実施形態では、一般方式による第1のSPIスレーブデバイス102によるSPI通信と拡張方式で動作する第2のSPIスレーブデバイス103によるSPI通信とを、混信することなく共存させることが可能となる。
<基本動作2>
拡張方式で動作する第2のSPIスレーブデバイス103には、一意のID(識別子)が設定されており、そのIDをSPIマスタデバイス101が予め探索し登録する。拡張方式によるシリアルバス通信では、SPIマスタデバイス101は、この登録したIDを用いて、第2のSPIスレーブデバイス103を特定して通信を行うことができる。以下、このIDを、デバイス固有ID(デバイス固有識別子)と呼ぶ。このデバイス固有IDは、全ての第2のSPIスレーブデバイス103で一意であり、同じデバイス固有IDを持つ第2のSPIスレーブデバイス103は存在しない。このデバイス固有IDのデータ長は、全ての第2のSPIスレーブデバイス103で同じである。本実施形態では、SS信号を共有している第2のSPIスレーブデバイス103がSPIマスタデバイス101に何台接続されているか正確に見付けるために、このデバイス固有IDを探索する。
<基本動作3>
全ての第2のSPIスレーブデバイス103を一意に対応できるようにするために、デバイス固有IDは、48〜64ビット程度の十分なデータ長を有する。このようにデバイス固有IDのデータ長は長いので、デバイス固有IDをそのままSPI通信に用いると、通信速度に影響がでる可能性がある。このため、SPIマスタデバイス101は、各第2のSPIスレーブデバイス103に、上記デバイス固有IDとは別に、新たな任意のデータ長の例えばデバイス固有IDのデータ長より短いIDを割り当てることができる。以下、このIDを、バス固有ID(バス固有識別子)と呼ぶ。SPIマスタデバイス101は、第2のSPIスレーブデバイス103指定時にデバイス固有IDではなくバス固有IDを用いることにより、通信速度への影響を抑えることができる。バス固有IDのデータ長としては、図1の伝送システム100において、SPIマスタデバイス101に実際に接続されている第2のSPIスレーブデバイス103の台数に応じて決定することができる。この台数が例えば数十台程度であれば、バス固有IDのデータ長は6ビットもあれば十分である。なお、本実施形態では、バス固有IDは、1つの第2のSPIスレーブデバイス103との通信開始時に1回だけ指定され、その後はSPIマスタデバイス101と1つの第2のSPIスレーブデバイス103は、SPI通信を行うことができる。このため、バス固有IDの指定が通信速度に及ぼす影響を最小限に抑えることができる。このとき、他の第2のSPIスレーブデバイス103は、新たにバス固有IDが指定されるまで、SPI通信を行わないように制御できる。
上記基本動作1、2,3のように、第2のSPIスレーブデバイス103群は、SS信号のみに頼らず、1クロック分のSS信号のアクティベートに続く第2のタイミングでのデバイス固有IDとバス固有IDによりSPIマスタデバイス101から指定される。これにより、本実施形態では、SS信号線105の増設の必要無しに、第2のSPIスレーブデバイス103の柔軟な増設を可能にするものである。
図3は、図1のSPIマスタデバイス101の構成例を示すブロック図である。SPIマスタデバイス101は、マイコンコア301、送信用シフトレジスタ302、受信用シフトレジスタ303、クロック生成器304、#0および#1のクロック出力制御回路305を備える。マイコンコア301は、送信用レジスタ306、受信用レジスタ307、および#0、#1、および#2の汎用1ビットレジスタ(図中「汎用1bit」と記載)308を内蔵する。
マイコンコア301は、特には図示しないCPU(中央演算処理装置)、ROM(リードオンリーメモリ)、RAM(ランダムアクセスメモリ)等を搭載する一般的なコンピュータの構成に加えて、306〜208のレジスタ類を内蔵する。
マイコンコア301が内蔵する送信用レジスタ306は、マイコンコア301に接続される送信用シフトレジスタ302にセットする8ビットのデータを一時的に保持する。送信用シフトレジスタ302は、送信用レジスタ306から8ビットのデータをセットされた後、#1のクロック出力制御回路305が出力する8個のCLK信号に従って、MOSI端子から1ビットずつのシリアルデータを順次シフトしながら送信する。
受信用シフトレジスタ303は、#1のクロック出力制御回路305が出力する8個のCLK信号に従って、MISO端子で受信される1ビットずつのシリアルデータを順次シフトしながら受信する。マイコンコア301が内蔵する受信用レジスタ307は、マイコンコア301に接続される受信用シフトレジスタ303に8ビットのシリアルデータが入力した後、その8ビットのデータを一時的に保持する。
マイコンコア301が内蔵する#0および#1の汎用1ビットレジスタ308は、それぞれ値1がセットされることにより、外部の#0および#1のクロック出力制御回路305をそれぞれ動作させる。#0のクロック出力制御回路305は、#0の汎用1ビットレジスタ308に値1がセットされている間、クロック生成器304が出力するCLK信号をCLK端子から出力する。#1のクロック出力制御回路305は、#1の汎用1ビットレジスタ308に値1がセットされている間、クロック生成器304が出力するCLK信号を送信用シフトレジスタ302および受信用シフトレジスタ303に供給して、このCLK信号に同期したシフト動作を実行させる。
図4は、図1の第2のSPIスレーブデバイス103の構成例を示すブロック図である。第2のSPIスレーブデバイス103は、マイコンコア401、受信用シフトレジスタ402、送信用シフトレジスタ403、1クロック判定回路404、およびクロック出力制御回路405を備える。マイコンコア401は、受信用レジスタ406、送信用レジスタ407、#0、#1、#2、および#3の汎用1ビットレジスタ(図中「汎用1bit」と記載)408を内蔵する。
マイコンコア401は、特には図示しないCPU、ROM、RAM等を搭載する一般的なコンピュータの構成に加えて、406〜408のレジスタ類を内蔵する。
マイコンコア401が内蔵する送信用レジスタ407は、マイコンコア401に接続される送信用シフトレジスタ403にセットする8ビットのデータを一時的に保持する。送信用シフトレジスタ403は、送信用レジスタ407から8ビットのデータをセットされた後、クロック出力制御回路405が出力する8個のCLK信号に従って、MOSI端子から1ビットずつのシリアルデータを順次シフトしながら送信する。
受信用シフトレジスタ402は、クロック出力制御回路405が出力する8個のCLK信号に従って、MISO端子で受信される1ビットずつのシリアルデータを順次シフトしながら受信する。マイコンコア401が内蔵する受信用レジスタ406は、マイコンコア401に接続される受信用シフトレジスタ402に8ビットのシリアルデータが入力した後、その8ビットのデータを一時的に保持する。
マイコンコア401に接続される1クロック判定回路404は、SS端子からのSS信号とCLK端子からのCLK信号を入力することにより、SS信号が1クロック長さ分だけローレベルになったか否かを判定する。
マイコンコア401が内蔵する#0の汎用1ビットレジスタ408は、1クロック判定回路404の出力を保持する。
マイコンコア401が内蔵する#1の汎用1ビットレジスタ408は、値1がセットされることにより、外部のクロック出力制御回路405を動作させる。クロック出力制御回路405は、#1の汎用1ビットレジスタ308に値1がセットされている間、CLK端子から入力するCLK信号に同期したCLK信号を出力する。このCLK信号は、送信用シフトレジスタ302および受信用シフトレジスタ303に供給されて、このCLK信号に同期したシフト動作を実行させる。
マイコンコア401が内蔵する#2の汎用1ビットレジスタ408ビットレジスタ308は、CLK端子から入力するCLK信号を保持する。
マイコンコア401が内蔵する#3の汎用1ビットレジスタ408は、SS端子から入力するSS信号を保持する。
図3の構成を有するSPIマスタデバイス101と図4の構成を有する第2のSPIスレーブデバイス103の詳細動作について、以下に説明する。
図5は、SPIマスタデバイス101によるデバイス固有ID探索処理と第2のSPIスレーブデバイス103によるデバイス固有ID応答処理の例を示すタイミングチャートである。これらの処理は、SPIマスタデバイス101が、どのデバイス固有IDが何れかの第2のSPIスレーブデバイス103で使用されているかを知るための処理である。SPIマスタデバイス101は、決められたビット数(例えば48〜64ビット程度)のデバイス固有IDの候補値を、オール0から順次インクリメントしながら、前述した通信開始から通信終了までの期間で、第2のSPIスレーブデバイス103に問合せを行う。SPIマスタデバイス101は、何れかの第2のSPIスレーブデバイス103から応答があったデバイス固有IDの候補値を、使用されているデバイス固有IDとして登録する。以下に、デバイス固有ID探索処理とデバイス固有ID応答処理の流れを説明する。
<SPIマスタデバイス101の動作1>
図2(II)で前述したように、SPIマスタデバイス101は、図3のSS端子から出力する図5(b)のSS信号を、図3のCLK端子から出力する図5(a)のCLK信号に同期する1クロック長さ分だけ第1の論理状態すなわちローレベルにする。その後、SPIマスタデバイス101は、SS信号を、第2の論理状態すなわちハイレベルに戻す。この時点でSPIマスタデバイス101と第2のSPIスレーブデバイス103とが通信開始となる。この制御は主に、図3のマイコンコア301内の#0および#2の汎用1ビットレジスタ308と#0のクロック出力制御回路305を用いて実行される。
<SPIマスタデバイス101の動作2>
SPIマスタデバイス101は、通信開始後、SS信号をハイレベルにした第2のタイミングの通信期間において、以下の動作を実行する。SPIマスタデバイス101は、MSBから2ビットにID探索コマンド(識別子探索コマンド)“00”がセットされ、下位6ビットに“000000”が埋められた8ビットのシリアルデータ501を生成する。SPIマスタデバイス101は、このシリアルデータ501を、図3のCLK端子から出力する図5(a)のCLK信号に同期させて、図5(c)のMOSIシリアルデータとして、図3のMOSI端子から送信する。この制御は主に、図3の送信用レジスタ306、送信用シフトレジスタ302と、#0および#1のクロック出力制御回路305とを用いて実行される。
<SPIマスタデバイス101の動作3>
SPIマスタデバイス101は、通信開始以降の通信期間において、シリアルデータ501の送信に引き続いて、以下の動作を実行する。SPIマスタデバイス101は、探索用のデバイス固有IDに対応するシリアルデータ502を、図3のCLK端子から出力する図5(a)のCLK信号に同期させて、図5(c)のMOSIシリアルデータとして、図3のMOSI端子から順次送信する。このとき、SPIマスタデバイス101は、例えば48〜64ビットのデータ長を有する探索用のデバイス固有IDを、図3の送信用レジスタ306と送信用シフトレジスタ302を用いて、MSBから8ビットずつ区切ったシリアルデータ502として送信する。この制御は主に、図3の送信用レジスタ306、送信用シフトレジスタ302と、#0および#1のクロック出力制御回路305を用いて実行される。なお、この送信は、MSBからではなく、LSB(最下位ビット)から順次行われてもよい。
<第2のSPIスレーブデバイス103の動作1>
<SPIマスタデバイス101の動作1>と並行し、第2のSPIスレーブデバイス103は、図4のCLK端子から入力する図5(a)のCLK信号の1クロック長さ分だけローレベルになった、図4のSS端子から入力する図5(b)のSS信号を検知する。これにより、第2のSPIスレーブデバイス103は、通信開始の状態になる。この制御は主に、図4の1クロック判定回路404と#0の汎用1ビットレジスタ408を用いて実行される。
<第2のSPIスレーブデバイス103の動作2>
第2のSPIスレーブデバイス103は、上記通信開始以降の通信期間で、図4のCLK端子から入力する図5(a)のCLK信号に同期させて、以下の動作を実行する。第2のSPIスレーブデバイス103は、図4のMOSI端子から図5(c)のMOSIシリアルデータとして入力する最初の8ビットのシリアルデータ501として、MSBから2ビットのID探索コマンド“00”と下位6ビット“000000”を受信する。この制御は主に、図4の#1の汎用1ビットレジスタ408と、クロック出力制御回路405と、受信用シフトレジスタ402と、受信用レジスタ406を用いて実行される。第2のSPIスレーブデバイス103は、このID探索コマンドを認識した後、図4のMISO端子から出力される図5(d)のMISOシリアルデータを、論理状態「Z」のオープンドレイン出力503に切り替える。その後、第2のSPIスレーブデバイス103は、デバイス固有ID応答処理を実行する。この論理状態「Z」は、最初はSPIマスタデバイス101に接続される全ての第2のSPIスレーブデバイス103のMISO端子が、オープンドレイン状態(ハイインピーダンス状態)であることを示している。この状態においては、SPIマスタデバイス101からは、図3のMISO端子の論理状態が「H」(ハイレベル)に見える。
<第2のSPIスレーブデバイス103の動作3>
デバイス固有ID応答処理において、第2のSPIスレーブデバイス103は、図4のCLK端子から入力する図5(a)のCLK信号に同期させて、以下の動作を実行する。第2のSPIスレーブデバイス103は、図4のMOSI端子から図5(c)のMOSIシリアルデータとして順次入力する探索用のデバイス固有IDのシリアルデータ502を、自装置のデバイス固有IDのMSBから1ビットずつのデータと順次比較する。この制御は主に、図4の#1の汎用1ビットレジスタ408と、クロック出力制御回路405と、受信用シフトレジスタ402と、受信用レジスタ406を用いて実行される。この比較の結果、第2のSPIスレーブデバイス103は、図4のCLK端子から入力する図5(a)のCLK信号に同期させて、図4のMISO端子から図5(d)のMISOシリアルデータとして、次のようなシリアルデータ504または505を送信する。比較の結果一致が検出されれば、第2のSPIスレーブデバイス103は、一致が検出されたビット位置に対応するタイミングで論理状態「L」となるデバイス固有ID応答のシリアルデータ504を送信する。このとき、第2のSPIスレーブデバイス103は、図4の受信用シフトレジスタ402および受信用レジスタ406を介して入力する8ビットずつの探索用のデバイス固有IDに対応して、デバイス固有ID応答のシリアルデータ504も8ビットずつ送信する。この制御は主に、図4の送信用レジスタ407、送信用シフトレジスタ403と、クロック出力制御回路405を用いて実行される。比較の結果一致が検出されなくなった場合は、第2のSPIスレーブデバイス103は、図4のMISO端子をオープンドレインにしてハイインピーダンス状態505とし、それ以降IDの比較を行なわない。
<SPIマスタデバイス101の動作4>
SPIマスタデバイス101は、通信開始以降の通信期間中に、図4のMISO端子から順次入力する8ビットずつのデバイス固有ID応答のシリアルデータ504(図5(d))の値を検証する。この8ビットずつのデバイス固有ID応答のシリアルデータ504は、<SPIマスタデバイス101の動作3>でSPIマスタデバイス101が8ビットずつ送信した探索用のデバイス固有IDのシリアルデータ502(図5(c))に対する応答データである。<第2のSPIスレーブデバイス103の動作3>で前述したように、デバイス固有ID応答のシリアルデータ504は、何れかの第2のSPIスレーブデバイス103から応答される。この制御は主に、図3の#1の汎用1ビットレジスタ308と、#1のクロック出力制御回路305と、受信用シフトレジスタ303と、受信用レジスタ307を用いて実行される。この検証動作が8ビットずつ繰り返される結果、探索用のデバイス固有IDのシリアルデータ502に対応するデバイス固有ID応答のシリアルデータ504の全てのビットの論理状態が「L」となった場合、SPIマスタデバイス101は、次の動作を実行する。SPIマスタデバイス101は、その探索用のデバイス固有IDが何れかの第2のSPIスレーブデバイス103に対応するデバイス固有IDとして探索できたとして、その探索用のデバイス固有IDを、内部のメモリ等に登録する。一方、探索用のデバイス固有IDのシリアルデータ502に対応するデバイス固有ID応答のシリアルデータ504の何れかのビットの論理状態が「Z」になった場合には、SPIマスタデバイス101は、次の動作を実行する。この状態は、そのビットの探索用のデバイス固有IDのシリアルデータ502に関して、全ての第2のSPIスレーブデバイス103が各デバイスに設定されているデバイス固有IDとの不一致を検出した場合である。この場合には、SPIマスタデバイス101は、現在の探索用のデバイス固有IDは探索できなかったとして登録を行わない。
<SPIマスタデバイス101の動作5>
<SPIマスタデバイス101の動作4>の後、SPIマスタデバイス101は、次の処理を実行する。図2(II)で前述したように、SPIマスタデバイス101は、図3のSS端子から出力する図5(b)のSS信号を再び、図3のCLK端子から出力する図5(a)のCLK信号に同期する1クロック長さ分だけ第1の論理状態すなわちローレベルにする。その後、SPIマスタデバイス101は、SS信号を、第2の論理状態すなわちハイレベルに戻す。この時点がSPIマスタデバイス101と第2のSPIスレーブデバイス103との通信終了となる。この制御は主に、図3のマイコンコア301内の#0および#2の汎用1ビットレジスタ308と#0のクロック出力制御回路305を用いて実行される。1つの探索用のデバイス固有IDにつき通信終了となった後、SPIマスタデバイス101は、次の探索用のデバイス固有IDを設定し、上述のSPIマスタデバイス101の動作1〜5と、第2のSPIスレーブデバイス103の動作1〜3を繰り返し実行する。これにより、SPIマスタデバイス101は、それに接続されている第2のSPIスレーブデバイス103において設定される可能性のある全ての探索用のデバイス固有IDについて探索を実行し、見つかったデバイス固有IDを登録することができる。
図6は、バス固有ID設定処理の例を示すタイミングチャートである。<基本動作3>として前述したように、第2のSPIスレーブデバイス103を一意に識別するデバイス固有IDのデータ長は長いので、SPIマスタデバイス101は、各第2のSPIスレーブデバイス103に、短い長さのバス固有IDを割り当てる。以下に、バス固有ID設定処理の流れを説明する。
<SPIマスタデバイス101の動作1>
図2(II)で前述したように、SPIマスタデバイス101は、図3のSS端子から出力する図6(b)のSS信号を、図3のCLK端子から出力する図6(a)のCLK信号に同期する1クロック長さ分だけ第1の論理状態すなわちローレベルにする。その後、SPIマスタデバイス101は、SS信号を、第2の論理状態すなわちハイレベルに戻す。この時点でSPIマスタデバイス101と第2のSPIスレーブデバイス103とが通信開始となる。この制御は主に、図3のマイコンコア301内の#0および#2の汎用1ビットレジスタ308と#0のクロック出力制御回路305を用いて実行される。
<SPIマスタデバイス101の動作2>
SPIマスタデバイス101は、通信開始後、SS信号をハイレベルにした第2のタイミングの通信期間において、以下の動作を実行する。SPIマスタデバイス101は、MSBから2ビットにID設定コマンド(識別子設定コマンド)“01”がセットされ、下位6ビットに設定したいバス固有IDが埋められた8ビットのシリアルデータ601を生成する。バス固有IDのデータ長が6ビットより長ければ、上記下位6ビットにはバス固有IDの上位6ビットが埋められる。バス固有IDのデータ長が6ビット未満であれば、上位側に0が埋められて6ビットデータとされる。SPIマスタデバイス101は、このシリアルデータ601を、図3のCLK端子から出力する図6(a)のCLK信号に同期させて、図6(c)のMOSIシリアルデータとして、図3のMOSI端子から送信する。この制御は主に、図3の送信用レジスタ306、送信用シフトレジスタ302と、#0および#1のクロック出力制御回路305とを用いて実行される。
<SPIマスタデバイス101の動作3>
SPIマスタデバイス101は、通信開始以降の通信期間において、シリアルデータ601の送信に引き続いて、以下の動作を実行する。SPIマスタデバイス101は、設定用のデバイス固有IDに対応するシリアルデータ602を、図3のCLK端子から出力する図6(a)のCLK信号に同期させて、図6(c)のMOSIシリアルデータとして、図3のMOSI端子から順次送信する。この設定用のデバイス固有IDは、前述のデバイス固有ID探索処理およびデバイス固有ID応答処理によりSPIマスタデバイス101に登録されているデバイス固有IDから1つずつ選択されるものである。このとき、SPIマスタデバイス101は、例えば48〜64ビットのデータ長を有する設定用のデバイス固有IDを、図3の送信用レジスタ306と送信用シフトレジスタ302を用いて、MSBから8ビットずつ区切ったシリアルデータ602として送信する。この制御は主に、図3の送信用レジスタ306、送信用シフトレジスタ302と、#0および#1のクロック出力制御回路305を用いて実行される。なお、この送信は、MSBからではなく、LSB(最下位ビット)から順次行われてもよい。
<SPIマスタデバイス101の動作4>
SPIマスタデバイス101は、通信開始以降の通信期間において、シリアルデータ602の送信に引き続いて、以下の動作を実行する。前述したように、設定したいバス固有IDのデータ長が6ビットより長ければ、シリアルデータ601の下位6ビットにはバス固有IDの上位6ビットが埋められる。この場合、SPIマスタデバイス101は、バス固有IDの残りの下位ビットを上位ビット側から順に、8ビットずつ区切ったシリアルデータ603として送信する。この制御は主に、図3の送信用レジスタ306、送信用シフトレジスタ302と、#0および#1のクロック出力制御回路305を用いて実行される。
<第2のSPIスレーブデバイス103の動作1>
<SPIマスタデバイス101の動作1>と並行し、第2のSPIスレーブデバイス103は、図4のCLK端子から入力する図6(a)のCLK信号の1クロック長さ分だけローレベルになった、図4のSS端子から入力する図6(b)のSS信号を検知する。これにより、第2のSPIスレーブデバイス103は、通信開始の状態になる。この制御は主に、図4の1クロック判定回路404と#0の汎用1ビットレジスタ408を用いて実行される。
<第2のSPIスレーブデバイス103の動作2>
第2のSPIスレーブデバイス103は、上記通信開始以降の通信期間で、図4のCLK端子から入力する図6(a)のCLK信号に同期させて、以下の動作を実行する。第2のSPIスレーブデバイス103は、図4のMOSI端子から図6(c)のMOSIシリアルデータとして入力する最初の8ビットのシリアルデータ601として、MSBから2ビットのID設定コマンド“01”と下位6ビットのバス固有IDの上位6ビットを受信する。この制御は主に、図4の#1の汎用1ビットレジスタ408と、クロック出力制御回路405と、受信用シフトレジスタ402と、受信用レジスタ406を用いて実行される。その後、第2のSPIスレーブデバイス103は、バス固有ID設定処理を実行する。
<第2のSPIスレーブデバイス103の動作3>
バス固有ID設定処理において、第2のSPIスレーブデバイス103は、図4のCLK端子から入力する図6(a)のCLK信号に同期させて、以下の動作を実行する。第2のSPIスレーブデバイス103は、図4のMOSI端子から図6(c)のMOSIシリアルデータとして8ビットずつ順次入力する設定用のデバイス固有IDのシリアルデータ602を受信する。この制御は主に、図4の#1の汎用1ビットレジスタ408と、クロック出力制御回路405と、受信用シフトレジスタ402と、受信用レジスタ406を用いて実行される。第2のSPIスレーブデバイス103は、上記受信した設定用のデバイス固有IDを、自装置に設定されているデバイス固有IDと比較する。この比較の結果一致が検出されれば、第2のSPIスレーブデバイス103は、図4のMOSI端子から図6(c)のMOSIシリアルデータとして続いて8ビットずつ入力するバス固有IDの残りのビットのシリアルデータ603を受信する。この制御は主に、図4の#1の汎用1ビットレジスタ408と、クロック出力制御回路405と、受信用シフトレジスタ402と、受信用レジスタ406を用いて実行される。第2のSPIスレーブデバイス103は、先に受信したバス固有IDの上位6ビットと上記受信したバス固有IDの残りのビットとを合わせて、自装置に設定されたバス固有IDとして、内部のメモリ等に登録する。バス固有IDを登録した第2のSPIスレーブデバイス103は、これ以降、図5で前述したデバイス固有ID探索処理には応答しない。
<SPIマスタデバイス101の動作5>
<SPIマスタデバイス101の動作4>の後、SPIマスタデバイス101は、次の処理を実行する。図2(II)で前述したように、SPIマスタデバイス101は、図3のSS端子から出力する図6(b)のSS信号を再び、図3のCLK端子から出力する図6(a)のCLK信号に同期する1クロック長さ分だけ第1の論理状態すなわちローレベルにする。その後、SPIマスタデバイス101は、SS信号を、第2の論理状態すなわちハイレベルに戻す。この時点がSPIマスタデバイス101と第2のSPIスレーブデバイス103との通信終了となる。この制御は主に、図3のマイコンコア301内の#0および#2の汎用1ビットレジスタ308と#0のクロック出力制御回路305を用いて実行される。1つの設定用のデバイス固有IDにつき通信終了となった後、SPIマスタデバイス101は、次の未送信の設定用のデバイス固有IDを選択する。前述したように、この設定用のデバイス固有IDは、前述のデバイス固有ID探索処理およびデバイス固有ID応答処理によりSPIマスタデバイス101に登録されているデバイス固有IDから選択される。さらに、SPIマスタデバイス101は、新たに選択した設定用のデバイス固有IDに対応させて、新たなバス固有IDを決定する。この新たなバス固有IDは、SPIマスタデバイス101に接続されている複数の第2のSPIスレーブデバイス103を一意に識別できるものとする。そして、SPIマスタデバイス101は、これらの設定用のデバイス固有IDと新たなバス固有IDについて、上述のSPIマスタデバイス101の動作1〜5と、第2のSPIスレーブデバイス103の動作1〜3を繰り返し実行する。これにより、SPIマスタデバイス101は、それに接続されている各第2のSPIスレーブデバイス103に、各第2のSPIスレーブデバイス103を一意に識別可能なバス固有IDを登録することができる。これ以降、SPIマスタデバイス101と各第2のSPIスレーブデバイス103は、バス固有IDを用いてSPI通信を実行する。
図7は、バス固有IDを用いたSPI通信処理の例を示すタイミングチャートである。SPIマスタデバイス101は、通信をする第2のSPIスレーブデバイス103の指定または解除を、バス固有IDを用いて行う。バス固有IDを指定された第2のSPIスレーブデバイス103は、SS信号がハイレベル状態のままSPI通信によって通信を行うことができる。バス固有IDを指定されなかった第2のSPIスレーブデバイス103は、バス固有IDの指定の解除がされない限り、SPI通信への応答は一切行わない。また、一般方式による第1のSPIスレーブデバイス102も、SS信号がハイレベル状態のときには、SPI通信への応答はしないので問題ない。以下に、バス固有IDを用いたSPI通信処理の流れを説明する。
<SPIマスタデバイス101の動作1>
図2(II)で前述したように、SPIマスタデバイス101は、図3のSS端子から出力する図7(b)のSS信号を、図3のCLK端子から出力する図7(a)のCLK信号に同期する1クロック長さ分だけ第1の論理状態すなわちローレベルにする。その後、SPIマスタデバイス101は、SS信号を、第2の論理状態すなわちハイレベルに戻す。この時点でSPIマスタデバイス101と第2のSPIスレーブデバイス103とが通信開始となる。この制御は主に、図3のマイコンコア301内の#0および#2の汎用1ビットレジスタ308と#0のクロック出力制御回路305を用いて実行される。
<SPIマスタデバイス101の動作2>
SPIマスタデバイス101は、通信開始後、SS信号をハイレベルにした第2のタイミングの通信期間において、以下の動作を実行する。SPIマスタデバイス101は、MSBから2ビットにID指定コマンド(識別子指定コマンド)“10”がセットされ、下位6ビットに設定したいバス固有IDが埋められた8ビットのシリアルデータ701を生成する。バス固有IDのデータ長が6ビットより長ければ、上記下位6ビットにはバス固有IDの上位6ビットが埋められる。バス固有IDのデータ長が6ビット未満であれば、上位側に0が埋められて6ビットデータとされる。SPIマスタデバイス101は、このシリアルデータ701を、図3のCLK端子から出力する図7(a)のCLK信号に同期させて、図7(c)のMOSIシリアルデータとして、図3のMOSI端子から送信する。この制御は主に、図3の送信用レジスタ306、送信用シフトレジスタ302と、#0および#1のクロック出力制御回路305とを用いて実行される。
<SPIマスタデバイス101の動作3>
SPIマスタデバイス101は、通信開始以降の通信期間において、シリアルデータ701の送信に引き続いて、以下の動作を実行する。前述したように、設定したいバス固有IDのデータ長が6ビットより長ければ、シリアルデータ701の下位6ビットにはバス固有IDの上位6ビットが埋められる。この場合、SPIマスタデバイス101は、バス固有IDの残りの下位ビットを上位ビット側から順に、8ビットずつ区切ったシリアルデータ702として送信する。この制御は主に、図3の送信用レジスタ306、送信用シフトレジスタ302と、#0および#1のクロック出力制御回路305を用いて実行される。
<第2のSPIスレーブデバイス103の動作1>
<SPIマスタデバイス101の動作1>と並行し、第2のSPIスレーブデバイス103は、図4のCLK端子から入力する図7(a)のCLK信号の1クロック長さ分だけローレベルになった、図4のSS端子から入力する図7(b)のSS信号を検知する。これにより、第2のSPIスレーブデバイス103は、通信開始の状態になる。この制御は主に、図4の1クロック判定回路404と#0の汎用1ビットレジスタ408を用いて実行される。
<第2のSPIスレーブデバイス103の動作2>
第2のSPIスレーブデバイス103は、上記通信開始以降の通信期間で、図4のCLK端子から入力する図7(a)のCLK信号に同期させて、以下の動作を実行する。第2のSPIスレーブデバイス103は、図4のMOSI端子から図7(c)のMOSIシリアルデータとして入力する最初の8ビットのシリアルデータ701として、MSBから2ビットのID指定コマンド“10”と下位6ビットのバス固有IDの上位6ビットを受信する。この制御は主に、図4の#1の汎用1ビットレジスタ408と、クロック出力制御回路405と、受信用シフトレジスタ402と、受信用レジスタ406を用いて実行される。その後、第2のSPIスレーブデバイス103は、バス固有IDを用いたSPI通信処理を実行する。
<第2のSPIスレーブデバイス103の動作3>
バス固有ID設定処理において、第2のSPIスレーブデバイス103は、図4のCLK端子から入力する図7(a)のCLK信号に同期させて、以下の動作を実行する。第2のSPIスレーブデバイス103は、図4のMOSI端子から図7(c)のMOSIシリアルデータとして続いて8ビットずつ入力するバス固有IDの残りのビットのシリアルデータ702を受信する。この制御は主に、図4の#1の汎用1ビットレジスタ408と、クロック出力制御回路405と、受信用シフトレジスタ402と、受信用レジスタ406を用いて実行される。第2のSPIスレーブデバイス103は、先に受信したバス固有IDの上位6ビットと上記受信したバス固有IDの残りのビットとを合わせたバス固有IDを、図6で前述したバス固有ID設定処理により自装置に登録されているバス固有IDと比較する。この比較の結果一致が検出されれば、第2のSPIスレーブデバイス103は、SPI通信の待機状態になる。
<SPIマスタデバイス101の動作4>
<SPIマスタデバイス101の動作3>の後、SPIマスタデバイス101は、次の処理を実行する。図2(II)で前述したように、SPIマスタデバイス101は、図3のSS端子から出力する図7(b)のSS信号を再び、図3のCLK端子から出力する図7(a)のCLK信号に同期する1クロック長さ分だけ第1の論理状態すなわちローレベルにする。その後、SPIマスタデバイス101は、SS信号を、第2の論理状態すなわちハイレベルに戻す。この制御は主に、図3のマイコンコア301内の#0および#2の汎用1ビットレジスタ308と#0のクロック出力制御回路305を用いて実行される。これ以降、SPIマスタデバイス101は、図3のCLK端子から出力する図7(a)のCLK信号に同期して、図3のMOSI端子からSPI通信のシリアルデータ703を送信する。
<第2のSPIスレーブデバイス103の動作4>
<第2のSPIスレーブデバイス103の動作3>によりSPI通信の待機状態になった第2のSPIスレーブデバイス103は、以下の処理を実行する。第2のSPIスレーブデバイス103は、<SPIマスタデバイス101の動作4>と並行し、図4のCLK端子から入力する図7(a)のCLK信号の1クロック長さ分だけローレベルになった、図4のSS端子から入力する図7(b)のSS信号を検知する。これにより、第2のSPIスレーブデバイス103は、SPI通信可能状態になる。この制御は主に、図4の1クロック判定回路404と#0の汎用1ビットレジスタ408を用いて実行される。SPI通信可能状態では、第2のSPIスレーブデバイス103は、図4のCLK端子から入力する図7(a)のCLK信号に同期して、図4のMOSI端子から入力するSPI通信の図7(c)のMOSIシリアルデータ703を、8ビットずつ受信して処理する。この制御は主に、図4の#1の汎用1ビットレジスタ408と、クロック出力制御回路405と、受信用シフトレジスタ402と、受信用レジスタ406を用いて実行される。SPI通信可能状態において、第2のSPIスレーブデバイス103は、必要に応じて、図4のCLK端子から入力する図7(a)のCLK信号に同期して、図4のMISO端子から、図7(d)のSPI通信のシリアルデータ704を8ビットずつ送信する。この制御は主に、図4の送信用レジスタ407、送信用シフトレジスタ403と、クロック出力制御回路405を用いて実行される。一方、<第2のSPIスレーブデバイス103の動作3>での比較処理においてバス固有IDの一致が検出されずSPI通信の待機状態にならなかった第2のSPIスレーブデバイス103は、その後にバス固有IDの指定を解除するコマンドまたはリセットコマンドを受信するまでは、SPIマスタデバイス101から送信されるSPI通信のシリアルデータには応答しない。
<SPIマスタデバイス101の動作5>
SPIマスタデバイス101は、<SPIマスタデバイス101の動作4>によるSPI通信を終了するときにはまず、図3のSS端子から出力する図7(b)のSS信号を、図3のCLK端子から出力する図7(a)のCLK信号に同期する1クロック長さ分だけ第1の論理状態すなわちローレベルにする。この制御は主に、図3のマイコンコア301内の#0および#2の汎用1ビットレジスタ308と#0のクロック出力制御回路305を用いて実行される。続いて、SPIマスタデバイス101は、通信開始後、SS信号をハイレベルにした第2のタイミングの通信期間において、以下の動作を実行する。SPIマスタデバイス101は、MSBから2ビットに前述したID指定コマンド(識別子指定コマンド)“10”がセットされ、下位6ビットに“000000”が埋められた8ビットのシリアルデータを生成する。このデータは、ID指定解除コマンドとして機能する。SPIマスタデバイス101は、このシリアルデータを、図3のCLK端子から出力する図7(a)のCLK信号に同期させて、図7(c)のMOSIシリアルデータとして、図3のMOSI端子から送信する。この制御は主に、図3の送信用レジスタ306、送信用シフトレジスタ302と、#0および#1のクロック出力制御回路305とを用いて実行される。最後に、SPIマスタデバイス101は、図3のSS端子から出力する図7(b)のSS信号を、図3のCLK端子から出力する図7(a)のCLK信号に同期する1クロック長さ分だけ第1の論理状態すなわちローレベルにする。この制御は主に、図3のマイコンコア301内の#0および#2の汎用1ビットレジスタ308と#0のクロック出力制御回路305を用いて実行される。
<第2のSPIスレーブデバイス103の動作5>
<SPIマスタデバイス101の動作1>と並行し、第2のSPIスレーブデバイス103は、図4のCLK端子から入力する図7(a)のCLK信号の1クロック長さ分だけローレベルになった、図4のSS端子から入力する図7(b)のSS信号を検知する。この制御は主に、図4の1クロック判定回路404と#0の汎用1ビットレジスタ408を用いて実行される。続いて、第2のSPIスレーブデバイス103は、図4のCLK端子から入力する図7(a)のCLK信号に同期させて、以下の動作を実行する。第2のSPIスレーブデバイス103は、図4のMOSI端子から図7(c)のMOSIシリアルデータとして入力する8ビットのシリアルデータとして、MSBから2ビットのID指定コマンド“10”と下位6ビット“000000”を受信する。この制御は主に、図4の#1の汎用1ビットレジスタ408と、クロック出力制御回路405と、受信用シフトレジスタ402と、受信用レジスタ406を用いて実行される。第2のSPIスレーブデバイス103は、ID指定コマンド“10”と下位6ビット“000000”の組合せを受信した場合には、今まで実行していたSPI通信を終了する。
図8は、リセット処理の例を示すタイミングチャートである。電源の解除なしにSPIマスタデバイス101を初期状態にしたいときなど(ウォームリセット時など)に、このリセット処理が実行される。以下に、リセット処理の流れを説明する。
<SPIマスタデバイス101の動作1>
図2(II)で前述したように、SPIマスタデバイス101は、図3のSS端子から出力する図8(b)のSS信号を、図3のCLK端子から出力する図8(a)のCLK信号に同期する1クロック長さ分だけ第1の論理状態すなわちローレベルにする。その後、SPIマスタデバイス101は、SS信号を、第2の論理状態すなわちハイレベルに戻す。この時点でSPIマスタデバイス101と第2のSPIスレーブデバイス103とが通信開始となる。この制御は主に、図3のマイコンコア301内の#0および#2の汎用1ビットレジスタ308と#0のクロック出力制御回路305を用いて実行される。
<SPIマスタデバイス101の動作2>
SPIマスタデバイス101は、通信開始後、SS信号をハイレベルにした第2のタイミングの通信期間において、以下の動作を実行する。SPIマスタデバイス101は、MSBから2ビットにリセットコマンド“11”がセットされたシリアルデータを生成する。SPIマスタデバイス101は、このシリアルデータを、図3のCLK端子から出力する図8(a)のCLK信号に同期させて、図8(c)のMOSIシリアルデータとして、図3のMOSI端子から送信する。この制御は主に、図3の送信用レジスタ306、送信用シフトレジスタ302と、#0および#1のクロック出力制御回路305とを用いて実行される。
<第2のSPIスレーブデバイス103の動作1>
<SPIマスタデバイス101の動作1>と並行し、第2のSPIスレーブデバイス103は、図4のCLK端子から入力する図7(a)のCLK信号の1クロック長さ分だけローレベルになった、図4のSS端子から入力する図7(b)のSS信号を検知する。これにより、第2のSPIスレーブデバイス103は、通信開始の状態になる。この制御は主に、図4の1クロック判定回路404と#0の汎用1ビットレジスタ408を用いて実行される。
<第2のSPIスレーブデバイス103の動作2>
第2のSPIスレーブデバイス103は、上記通信開始以降の通信期間で、図4のCLK端子から入力する図8(a)のCLK信号に同期させて、以下の動作を実行する。第2のSPIスレーブデバイス103は、図4のMOSI端子から入力する図8(c)のMOSIシリアルデータとして、MSBから2ビットのリセットコマンド“11”を受信する。この制御は主に、図4の#1の汎用1ビットレジスタ408と、クロック出力制御回路405と、受信用シフトレジスタ402と、受信用レジスタ406を用いて実行される。この結果、第2のSPIスレーブデバイス103は、図6のバス固有ID設定処理により自装置に設定されていたバス固有IDの登録を解除する。
<第2のSPIスレーブデバイス103の動作2>
<SPIマスタデバイス101の動作3>の後、SPIマスタデバイス101は、図5のデバイス固有ID探索処理により探索されたデバイス固有IDの登録と、図6のバス固有ID設定処理により設定したバス固有IDの登録を解除する。
図9は、図5から図8で説明したSPIマスタデバイス101の制御処理の状態遷移を示す状態遷移図である。
SPIマスタデバイス101は、電源投入後(S901)のリセット状態(S902)を介して、図5で前述したデバイス固有ID探索処理の状態に遷移する(S903)。
続いて、SPIマスタデバイス101は、デバイス固有ID探索処理の状態(S903)からデバイス固有IDが検出されると(S904)、図6で前述したバス固有ID設定処理の状態に遷移し(S905)、デバイス固有ID探索処理の状態(S903)に戻る。
SPIマスタデバイス101は、デバイス固有ID探索処理(S903)で全てのデバイス固有IDの探索とバス固有IDの登録が完了すると(S906)、アイドル状態(S907)に遷移する。
SPIマスタデバイス101は、アイドル状態(S907)から、SS信号のローレベルへの設定(S908)により、一般方式による第1のSPIスレーブデバイス102に対するSPIアクセス(S910)に遷移し、SS信号のローレベルの解除(S909)によりアイドル状態(S907)に戻る。
さらに、SPIマスタデバイス101は、アイドル状態(S907)から、図7で前述したバス固有IDを用いたSPI通信処理(S911)により、拡張方式で動作する第2のSPIスレーブデバイス103に対するSPIアクセスの状態(S912)に遷移する。
SPIマスタデバイス101は、SPIアクセスの状態(S912)で他のバス固有IDが指定されると(S913)、そのバス固有IDに対応する第2のSPIスレーブデバイス103に対するSPIアクセスの状態(S912)に遷移する。
SPIマスタデバイス101は、SPIアクセスの状態(S912)で、図7で前述したバス固有IDの指定の解除(S914)がなされると、アイドル状態(S907)に戻る。
SPIマスタデバイス101は、アイドル状態(S907)において、図8で前述したリセット処理(S915)により、図5で前述したデバイス固有ID探索処理の状態に遷移する(S903)。
図10は、図5から図8で説明した第2のSPIスレーブデバイス103および第1のSPIスレーブデバイス102の制御処理の状態遷移を示す状態遷移図である。
まず、第1のSPIスレーブデバイス102または第2のSPIスレーブデバイス103は、電源投入後(S1001)に、第1のアイドル状態(S1002)に遷移する。
第1のSPIスレーブデバイス102は、第1のアイドル状態(S1002)から、SS信号のローレベルへの設定(S1003)により、一般方式によるSPIマスタデバイス101に対するSPI応答(S1004)に遷移し、SS信号のローレベルの解除(S1005)により第1のアイドル状態(S1002)に戻る。
第2のSPIスレーブデバイス103は、第1のアイドル状態(S1002)から、図5で前述したSPIマスタデバイス101によるデバイス固有ID探索処理(S1006)に応答して、デバイス固有ID応答処理の状態(S1007)に遷移する。その後、第2のSPIスレーブデバイス103は、第1のアイドル状態(S1002)に戻る。
第2のSPIスレーブデバイス103は、第1のアイドル状態(S1002)から、図6で前述したバス固有ID設定処理(S1008)により自装置にバス固有IDを設定し、その後第2のアイドル状態(S1009)に遷移する。
第2のSPIスレーブデバイス103は、第2のアイドル状態(S1009)から、図7のSPIマスタデバイス101によるバス固有IDを用いたSPI通信処理で、自装置に登録されているバス固有IDが指定されると(S1010)、次の処理を実行する。この場合、第2のSPIスレーブデバイス103は、拡張方式で動作するSPIマスタデバイス101に対するSPI応答(S1011)に遷移する。
第2のSPIスレーブデバイス103は、SPI応答の状態(S1011)で、図7で前述したバス固有IDの指定の解除または別のバス固有IDの指定(S1012)がなされると、第2のアイドル状態(S1009)に戻る。
第2のSPIスレーブデバイス103は、第2のアイドル状態(S1009)またはSPI応答の状態(S1011)で、図8で前述したリセット処理(S1013またはS1014)により、第1のアイドル状態(S1002)に戻る。
図11は、本実施形態の動作例を示すタイミングチャートである。図7で前述したようにして、通信期間1101でI番目のバス固有IDが指定される。この結果、その通信期間に続いてSS信号がハイレベルとなる期間1102で、SPIマスタデバイス101がI番目の第2のSPIスレーブデバイス103との間で、拡張方式によるSPI通信を実行することが可能となる。この期間1102では、バス固有IDを指定されていない他のII番目等の第2のSPIスレーブデバイス103は、SPIマスタデバイス101からの通信には応答しない。また、期間1102では、SS信号はハイレベルであるため、一般方式による第1のSPIスレーブデバイス102も、SPIマスタデバイス101からの通信には応答しない。このSPI通信が終了すると、図7で前述したようにして、通信期間1103でバス固有IDの指定の解除がなされる。
次に、図7で前述したようにして、通信期間1104でII番目のバス固有IDが指定される。この結果、その通信期間に続いてSS信号がハイレベルとなる期間1105で、SPIマスタデバイス101がII番目の第2のSPIスレーブデバイス103との間で、拡張方式によるSPI通信を実行することが可能となる。この期間1105では、バス固有IDを指定されていない他のI番目等の第2のSPIスレーブデバイス103は、SPIマスタデバイス101からの通信には応答しない。また、期間1105では、SS信号はハイレベルであるため、一般方式による第1のSPIスレーブデバイス102も、SPIマスタデバイス101からの通信には応答しない。このSPI通信が終了すると、図7で前述したようにして、通信期間1106でバス固有IDの指定の解除がなされる。
SPIマスタデバイス101は、一般方式による第1のSPIスレーブデバイス102と通信を行いたいときには、期間1107に示されるように、SS信号をローレベルに設定する。これにより、SPIマスタデバイス101が第1のSPIスレーブデバイス102との間で、一般方式によるSPI通信を実行することが可能となる。
以上説明した動作を、図3の構成を有するSPIマスタデバイス101のマイコンコア301または図4の構成を有する第2のSPIスレーブデバイス103のマイコンコア401が、それぞれにインストールされたドライバソフトウェアプログラムによって実行する場合の処理について、図12から図19のフローチャート、および図20から図22のフローチャートに従って説明する。
図12は、SPIマスタデバイス101が実行する全体制御処理の例を示すフローチャートである。
図3のマイコンコア301は、SPIインタフェースの制御処理を開始する(S1)。図8で前述したリセット処理により任意のタイミングでリセットされた場合も、このS1に戻る。
次に、マイコンコア301は、図5で前述したデバイス固有ID探索処理を実行する(S2)。
マイコンコア301は、S2の実行の結果、デバイス固有IDが見つかったか否かを判定する(S3)。
S3の判定がYESならば、マイコンコア301は、図6で前述したバス固有ID設定処理を実行する(S4)。S3の判定がNOならば、この処理はスキップする。
その後、マイコンコア301は、SPIアクセスを実行する(S5)。
マイコンコア301は、図8で前述したリセット処理によりリセットがなされたか否かを判定する(S6)。
S6の判定がNOならば、マイコンコア301は、S4のSPIアクセスの処理に戻る。
S6の判定がYESならば、マイコンコア301は、S1に戻る。
図13、図14,および図15は、図12のS2のデバイス固有ID探索処理の詳細例を示すフローチャートである。この処理は、図5で前述したSPIマスタデバイス101によるデバイス固有ID探索処理に対応している。
マイコンコア301はまず初期化処理を実行する(図13のS1)。この処理において、マイコンコア301は、特には図示しないメモリ上に一時記憶される探索用のデバイス固有IDを、「0」(2進数で「0000 0000 0000 0000・・・0000 0000」にする。また、マイコンコア301は、特には図示しないメモリ上に記憶されている後述する「探索ID送信完了フラグ」をクリアする。また、マイコンコア301は、特には図示しないメモリ上に記憶されている後述する「送っていない最上位ビットの位置」を記憶する変数の値を、MSB(最上位ビット)である「63」にする。さらに、マイコンコア301は、図3のMISO端子を、オープンドレイン出力にする。
次に、マイコンコア301は、図3の送信用レジスタ306において、上位2ビットに図5で前述したID探索コマンドの値“00”を設定し、下位6ビットに“000000”を設定する(図13のS2)。これは、図5に関して前述した<SPIマスタデバイス101の動作2>の処理である。
続いて、マイコンコア301は、SS信号とCLK信号の制御を実行する(図13のS3)。これは、図5に関して前述した<SPIマスタデバイス101の動作1>の処理である。すなわち、マイコンコア301は、図3のSS端子から出力されるSS信号が図3のCLK端子から出力されるCLK信号の1クロック長さ分だけローレベルとなる信号を生成する。具体的には、マイコンコア301は、図3の#2の汎用1ビットレジスタ308に、ローレベル値を設定する。そして、マイコンコア301は、図3の#0の汎用1ビットレジスタ308を制御して、#0のクロック出力制御回路305から、1周期分のみのCLK信号を出力させる。
S3の1クロック長さ分のSS信号の制御の後、マイコンコア301は、SS信号をハイレベルにする制御を実行する(図13のS4)。これは、図5に関して前述した<SPIマスタデバイス101の動作1>の処理である。具体的には、マイコンコア301は、図3の#2の汎用1ビットレジスタ308に、ハイレベル値を設定する。
次に、マイコンコア301は、S2で図3の送信用レジスタ306に設定されたID探索コマンドを含む8ビットデータを、送信用シフトレジスタ302に転送する(図13のS5)。これは、図5に関して前述した<SPIマスタデバイス101の動作2>の処理である。
次に、マイコンコア301は、ID探索コマンドを含む8ビットデータの出力処理を実行する(図13のS6)。これは、図5に関して前述した<SPIマスタデバイス101の動作2>の処理である。具体的には、マイコンコア301は、#0の汎用1ビットレジスタ308を制御することにより、#0のクロック出力制御回路305からCLK端子を介して、8ビット分のCLK信号を出力する。また、マイコンコア301は、#1の汎用1ビットレジスタ308を制御することにより、#1のクロック出力制御回路305から送信用シフトレジスタ302および受信用シフトレジスタ303に、8ビット分のCLK信号を出力する。この結果、S5で送信用シフトレジスタ302に転送されたID探索コマンドを含む8ビットデータが、MOSI端子から順次シリアルデータ(図5(c)の501に対応)として出力される。これと同時に、MISO端子から順次入力する8ビット分のシリアルデータが、受信用シフトレジスタ303に順次記憶される。
次に、図13のS7からS11は、図5に関して前述した<SPIマスタデバイス101の動作3>の処理に対応する。
まず、マイコンコア301は、特には図示しないメモリ上に一時記憶されている探索用のデバイス固有IDのビット中で、図3の送信用レジスタ306に送っていない部分があるか否かを判定する(図13のS7)。
メモリ上の探索用のデバイス固有IDのビット中で図3の送信用レジスタ306に送っていない部分がまだある(S7の判定がYES)の場合は、マイコンコア301は、探索用のデバイス固有IDの転送処理を実行する(図13のS8)。この処理では、マイコンコア301は、メモリ上の探索用のデバイス固有IDのビットのうち、メモリ上の変数「送っていない最上位ビットの位置」が示す位置から8ビット分を、図3の送信用レジスタ306に転送する。
マイコンコア301は、メモリ上の変数「送っていない最上位ビットの位置」の値を、S8の結果更新された、メモリ上の探索用のデバイス固有IDのビットのうちまだ送っていない最上位ビットの位置に書き換える(図13のS9)。
次に、マイコンコア301は、ステップ8で図3の送信用レジスタ306に設定された探索用のデバイス固有IDの8ビットデータを、送信用シフトレジスタ302に転送する(図13のS10)。
次に、マイコンコア301は、探索用のデバイス固有IDの8ビットデータの出力処理を実行する(図13のS11)。具体的には、マイコンコア301は、#0の汎用1ビットレジスタ308を制御することにより、#0のクロック出力制御回路305からCLK端子を介して、8ビット分のCLK信号を出力する。また、マイコンコア301は、#1の汎用1ビットレジスタ308を制御することにより、#1のクロック出力制御回路305から送信用シフトレジスタ302および受信用シフトレジスタ303に、8ビット分のCLK信号を出力する。この結果、S10で送信用シフトレジスタ302に転送された探索用のデバイス固有IDを含む8ビットデータが、MOSI端子から順次シリアルデータ(図5(c)の502に対応)として出力される。これと同時に、MISO端子から順次入力する8ビット分のシリアルデータ(図5(d)の503、504に対応)が、受信用シフトレジスタ303に順次記憶される。
次に、図14のS12からS16は、図5に関して前述した<SPIマスタデバイス101の動作4>の処理に対応する。
まず、マイコンコア301は、図3の受信用レジスタ307に、図13のS11で受信用シフトレジスタ303に記憶された8ビットのデータを転送する(図14のS12)。このデータは、何れかの第2のSPIスレーブデバイス103からのデバイス固有ID応答のデータである。
次に、マイコンコア301は、S12で図3の受信用レジスタ307に転送された8ビットのデバイス固有ID応答のデータが0(2進数で「0000 0000」)であるか否かを判定する(図14のS13)。この処理は、何れかの第2のSPIスレーブデバイス103のデバイス固有IDが、8ビット前に送信された探索用のデバイス固有IDの8ビットデータと一致しているか否かを判定する処理である。
S13の判定がYESならば、マイコンコア301は、メモリ上の変数「探索ID送信完了フラグ」の値が1であるか否かを判定する(図14のS14)。
S14の判定がNOの場合には、探索用のデバイス固有IDの全てのビットの比較がまだ終了していないため、マイコンコア301は、図13のS7の処理に戻る。マイコンコア301は、S7で再び、特には図示しないメモリに記憶されている探索用のデバイス固有IDのビット中で、図3の送信用レジスタ306に送っていない部分があるか否かを判定する(図13のS7)。マイコンコア301は、S7の判定がYESならば、再び図13のS8以降を実行する。
メモリ上の探索用のデバイス固有IDのビット中で図3の送信用レジスタ306に送っていない部分がもうない(S7の判定がNOである)場合には、マイコンコア301は、まず特には図示しないメモリ上の探索ID送信完了フラグの値を1にする。その上で、マイコンコア301は、前述した図13のS9からS11、および図14のS12からS13までを再度実行する。探索用のデバイス固有IDの最後の8ビットが送信されてから、それに対応するデバイス固有ID応答のデータが返ってくるまでには、第2のSPIスレーブデバイス103内の図14の受信用シフトレジスタ303の8ビット分だけ遅延がある。このため、上述の図13のS9からS11、および図14のS12からS13までの一連の処理によって、探索用のデバイス固有IDの最後の8ビットに対応する最後の8ビットのデバイス固有ID応答のデータの受信および比較処理が実行される。なお、図13のS11では、図3の送信用シフトレジスタ302のデータが送信されるが、このデータは第2のSPIスレーブデバイス103では処理されないため、問題はない。
最後の8ビットのデバイス固有ID応答のデータについても図14のS13の判定がYESになると、探索用のデバイス固有IDの全ビットが、何れかの第2のSPIスレーブデバイス103のデバイス固有IDの全ビットと一致したことになる。
続いて、マイコンコア301がS14を実行した場合、図13のS7の判定がNOになったときにメモリ上の変数「探索ID送信完了フラグ」の値が1にされているので、S14の判定がYESになる。
S14の判定がYESの場合、マイコンコア301は、送信が完了した探索用のデバイス固有IDを、特には図示しないメモリ上の配列変数「見つかったデバイス固有ID」のテーブルに追加登録する(図14のS15)。
次に、マイコンコア301は、メモリに一時記憶されている探索用のデバイス固有IDのビットが全て1(2進数で「1111 1111・・・1111 1111」)になったか否かを判定する(図14のS16)。探索用のデバイス固有IDは、図13のS1で0に初期化された後、順次インクリメントされて、ビット値が全て1になったときに、設定され得る最後のデバイス固有IDが指定されたことになる。
従って、S16の判定がYESになると、マイコンコア301は、図13、図14、および図15のフローチャートで示される図12のS2のデバイス固有ID探索処理を終了する。この結果、特には図示しないメモリ上の配列変数「見つかったデバイス固有ID」のテーブルには、SPIマスタデバイス101に接続されている全ての第2のSPIスレーブデバイス103のデバイス固有IDが登録されることになる。
次の図14のS17、S19、S20,および図15のS21、S22は、図5に関して前述した<SPIマスタデバイス101の動作5>の処理に対応する。
まず、全ての探索用のデバイス固有IDの指定が終わっていない場合(S16の判定がNOの場合)には、マイコンコア301は、メモリ上に一時記憶されている探索用のデバイス固有IDの値に1を加えて、次の探索用のデバイス固有IDとする(図14のS17)。
その後、マイコンコア301は、図15のS22の処理に移行する。この処理については、後述する。
一方、探索用のデバイス固有IDの8ビットについての受信後の比較処理において、図14のS13の判定がNOとなった場合には、マイコンコア301は、次の処理を実行する。このケースは、図14のS12で図3の受信用レジスタ307に転送された8ビットのデバイス固有ID応答のデータが0(2進数で「0000 0000」)ではない場合である。
この場合、マイコンコア301はまず、デバイス固有ID応答のデータでMSB側からみて最初にその値が1となる位置に対応する探索用のデバイス固有IDのビット位置を、「不一致箇所」としてメモリに記憶する(図14のS19)。例えば、メモリに一時記憶されている探索用のデバイス固有IDが2進数の64ビットデータ「0000 0000 0000 0000・・・・0000 0000」である場合を考える。この探索用のデバイス固有IDに対応するデバイス固有ID応答のデータが、最初の8ビットは「0000 0000」で一致し、次の8ビットが「0001 1111」となって不一致になったとする。この場合、探索用のデバイス固有IDにおいて、63ビット目の最上位ビット(最下位ビットは0ビット目)からみて最初に値が1となる52ビット目が、「不一致箇所」として記憶される。
今、SPIマスタデバイス101が先に送信した探索用のデバイス固有IDの8ビットシリアルデータのうち、「不一致箇所」で、全ての第2のSPIスレーブデバイス103のデバイス固有IDの対応するビット位置の値が不一致になっている。この場合には、現在の探索用のデバイス固有IDの探索処理は中止して、次の探索用のデバイス固有IDを設定する必要がある。この場合、現在の探索用のデバイス固有IDの「不一致箇所」のビット位置の値と同じ値を有するデバイス固有IDを探索用のデバイス固有IDとして探索すると、「不一致箇所」で全ての第2のSPIスレーブデバイス103において必ず不一致が発生する。「不一致箇所」よりも下位ビットがどのような値に設定されても、「不一致箇所」のビット値が同じである限り不一致が発生する。ここで、探索用のデバイス固有IDはオール0の値からオール1の値まで増加するようにインクリメントされている(図14のS17参照)。このため以下の処理では、現在メモリに一時記憶されている探索用のデバイス固有IDの値に対して、値が増加する方向で、かつ「不一致箇所」に対応するビット位置の値が現在の値と異なるように、次に指定されるべき探索用のデバイス固有IDの値が算出される。
この処理を実行するために、マイコンコア301はまず、メモリに一時記憶されている探索用のデバイス固有IDの上記「不一致箇所」に対応するビット位置の値が1であるか否かを判定する(図14のS20)。
探索用のデバイス固有IDの上記「不一致箇所」に対応するビット位置の値が0(S20の判定がNO)なら、マイコンコア301は、次に指定すべき探索用のデバイス固有IDを以下のように算出しメモリに一時記憶させる(図15のS21)。
・MSBから「不一致箇所」の1ビット上位側のビット目までは、現在メモリに一時記憶されている探索用のデバイス固有IDの対応するビットの値と同じ値とする。
・「不一致箇所」のビットは、1とする。
・「不一致箇所」よりも下位のビットは、全て0とする。
例えば、現在の探索用のデバイス固有IDが64ビットデータ「0000 0001 0000 0000・・・・0000 0000」で、デバイス固有ID応答の最初の8ビットが「0000 0000」、次の8ビットが「0001 1111」とする。この場合、「不一致箇所」はMSBの63ビット目からみて52ビット目であり、52ビット目の値は0である。このため、次に指定すべき探索用のデバイス固有IDは、「不一致箇所」の52ビット目を1に反転させて、「0000 0001 0001 0000・・・・0000 0000」となる。
一方、探索用のデバイス固有IDの上記「不一致箇所」に対応するビット位置の値が1(S20の判定がYES)なら、マイコンコア301は、以下の処理を実行する(図15のS21′)。まず、マイコンコア301は、探索用のデバイス固有IDとそれぞれ同じデータ長を有する、以下の第1の値および第2の値を算出する。
<第1の値>:MSBから「不一致箇所」のビットまでは、現在メモリに一時記憶されている探索用のデバイス固有IDの対応するビットの値と同じ値とし、「不一致箇所」よりも下位のビットは全て0とする。
<第2の値>:「不一致箇所」のビットのみが1で、それ以外のビットは全て0とする。
次に、マイコンコア301は、上記第1の値と第2の値を加算し、その加算結果を次に指定すべき探索用のデバイス固有IDとして、メモリに一時記憶させる。
例えば、現在の探索用のデバイス固有IDが64ビットデータ「0000 0001 0001 0000・・・・0000 0000」で、デバイス固有ID応答の最初の8ビットが「0000 0000」、次の8ビットが「0001 1111」とする。この場合、第1の値は「0000 0001 0001 0000・・・・0000 0000」、第2の値は「0000 0000 0001 0000・・・・0000 0000」となる。この2つの値が加算される結果、次に指定されるべき探索用のデバイス固有IDは、「0000 0001 0010 0000・・・・0000 0000」となる。
上記S21またはS21′の後、マイコンコア301は、図13のS3およびS4と同様に、SS信号とCLK信号の制御を実行する(図15のS22)。すなわち、マイコンコア301は、図3のSS端子から出力されるSS信号が図3のCLK端子から出力されるCLK信号の1クロック長さ分だけローレベルとなる信号を生成する。具体的には、マイコンコア301は、図3の#2の汎用1ビットレジスタ308に、ローレベル値を設定する。そして、マイコンコア301は、図3の#0の汎用1ビットレジスタ308を制御して、#0のクロック出力制御回路305から、1周期分のみのCLK信号を出力させる。さらに、マイコンコア301は、図3の#2の汎用1ビットレジスタ308にハイレベル値を設定することにより、SS信号をハイレベルにする制御を実行する。
上記S22の処理の後、マイコンコア301は、図13のS3の処理に戻り、新たに指定した探索用のデバイス固有IDについての探索処理を続行する。
図16および図17は、図12のS4のバス固有ID設定処理の詳細例を示すフローチャートである。この処理は、図6で前述したSPIマスタデバイス101によるバス固有ID設定処理に対応している。
まず、マイコンコア301は、「バス固有IDの長さ」を決定する(図16のS1)。SPIマスタデバイス101に接続される第2のSPIスレーブデバイス103の数が、例えば63個以下ならば「バス固有IDの長さ」は6ビットであり、例えば319(63+256)個以下ならば「バス固有IDの長さ」は14ビットである。前者の6ビット長をデータ長タイプ1と呼び、後者の14ビット長をデータ長タイプ2と呼ぶ。なお、「バス固有IDの長さ」は、上記2タイプよりも長くてもよく、データ長タイプとして3以上の値が定義されてもよい。
次に、マイコンコア301は、特には図示しないメモリ上に記憶され、割り付けるバス固有IDの順番を格納する変数「割り付けるバス固有ID」の初期値を1に設定する(図16のS2)。
次にマイコンコア301は、メモリ上の配列変数「見つかったデバイス固有ID」のテーブル(図14のS15参照)の変数「割り付けるバス固有ID」が示す値番目のエントリから、第2のSPIスレーブデバイス103のデバイス固有IDを取得する。マイコンコア301は、このデバイス固有IDを、図6で前述した設定用のデバイス固有IDとして、メモリ上に記憶される変数「割り付けるID」に設定する(以上、図16のS3)。
続いて、マイコンコア301は、SS信号とCLK信号の制御を実行する(図16のS4)。これは、図6に関して前述した<SPIマスタデバイス101の動作1>の処理である。すなわち、マイコンコア301は、図3のSS端子から出力されるSS信号が図3のCLK端子から出力されるCLK信号の1クロック長さ分だけローレベルとなる信号を生成する。具体的には、マイコンコア301は、図3の#2の汎用1ビットレジスタ308に、ローレベル値を設定する。そして、マイコンコア301は、図3の#0の汎用1ビットレジスタ308を制御して、#0のクロック出力制御回路305から、1周期分のみのCLK信号を出力させる。
S4の1クロック長さ分のSS信号の制御の後、マイコンコア301は、SS信号をハイレベルにする制御を実行する(図16のS5)。これは、図6に関して前述した<SPIマスタデバイス101の動作1>の処理である。具体的には、マイコンコア301は、図3の#2の汎用1ビットレジスタ308に、ハイレベル値を設定する。
次に、マイコンコア301は、図3の送信用レジスタ306において、上位2ビットに図6で前述したID設定コマンドの値“01”を設定し、下位6ビットに「割り付けるバス固有ID」の上位6ビットを設定する(図16のS6)。これは、図6に関して前述した<SPIマスタデバイス101の動作2>の処理である。
次に、マイコンコア301は、S6で図3の送信用レジスタ306に設定されたID設定コマンドを含む8ビットデータを、送信用シフトレジスタ302に転送する(図16のS7)。これは、図6に関して前述した<SPIマスタデバイス101の動作2>の処理である。
次に、マイコンコア301は、ID設定コマンドを含む8ビットデータの出力処理を実行する(図16のS8)。これは、図6に関して前述した<SPIマスタデバイス101の動作2>の処理である。具体的には、マイコンコア301は、#0の汎用1ビットレジスタ308を制御することにより、#0のクロック出力制御回路305からCLK端子を介して、8ビット分のCLK信号を出力する。また、マイコンコア301は、#1の汎用1ビットレジスタ308を制御することにより、#1のクロック出力制御回路305から送信用シフトレジスタ302および受信用シフトレジスタ303に、8ビット分のCLK信号を出力する。この結果、S7で送信用シフトレジスタ302に転送されたID設定コマンドを含む8ビットデータが、MOSI端子から順次シリアルデータ(図6(c)の601に対応)として出力される。これと同時に、MISO端子から順次入力する8ビット分のシリアルデータが、受信用シフトレジスタ303に順次記憶される。
次に、図17のS9からS11は、図6に関して前述した<SPIマスタデバイス101の動作3>の処理に対応する。
まずマイコンコア301は、図16のS3で「割り付けるID」に格納されている、「割り付けるバス固有ID」番目に見つかったデバイス固有IDの8ビット分を、図3の送信用レジスタ306に設定する。さらに、マイコンコア301は、送信用レジスタ306に設定されたデバイス固有IDの8ビットデータを、送信用シフトレジスタ302に転送する(以上、図17のS9)。
次に、マイコンコア301は、設定用のデバイス固有IDの8ビットデータの出力処理を実行する(図17のS10)。具体的には、マイコンコア301は、#0の汎用1ビットレジスタ308を制御することにより、#0のクロック出力制御回路305からCLK端子を介して、8ビット分のCLK信号を出力する。また、マイコンコア301は、#1の汎用1ビットレジスタ308を制御することにより、#1のクロック出力制御回路305から送信用シフトレジスタ302および受信用シフトレジスタ303に、8ビット分のCLK信号を出力する。この結果、S9で送信用シフトレジスタ302に転送された設定用のデバイス固有IDの8ビットデータが、MOSI端子から順次シリアルデータ(図6(c)の602に対応)として出力される。これと同時に、MISO端子から順次入力する8ビット分のシリアルデータが、受信用シフトレジスタ303に順次記憶される。
その後、マイコンコア301は、図16のS3で「割り付けるID」に格納されているデバイス固有IDの全てのビット分を、図3の送信用レジスタ306に設定したか否かを判定する(図17のS11)。
S11の判定がNOならば、S9の処理に戻って、設定用のデバイス固有IDの8ビットずつの送信処理を続行する。
設定用のデバイス固有IDの全てのビットの送信が終了してS11の判定がYESになると、マイコンコア301は、図17のS12からS17の処理を実行する。これらの処理は、図6に関して前述した<SPIマスタデバイス101の動作4>の処理に対応する。この場合、マイコンコア301は、図16のS1で設定したバス固有IDのデータ長タイプが2以上である場合に、S12からS17の処理を実行する。データ長タイプが1である場合には、図6(c)のシリアルデータ603は不要で601だけでよいため、S12からS17の処理はスキップする。
まずマイコンコア301は、メモリ上の変数「割り付けるバス固有ID」に記憶されているバス固有IDの上位側から未送信の8ビットを、図3の送信用レジスタ306に設定する。さらに、マイコンコア301は、送信用レジスタ306に設定されたバス固有IDの8ビットデータを、送信用シフトレジスタ302に転送する(以上、図17のS12)。
次に、マイコンコア301は、バス固有IDの8ビットデータの出力処理を実行する(図17のS13)。具体的には、マイコンコア301は、#0の汎用1ビットレジスタ308を制御することにより、#0のクロック出力制御回路305からCLK端子を介して、8ビット分のCLK信号を出力する。また、マイコンコア301は、#1の汎用1ビットレジスタ308を制御することにより、#1のクロック出力制御回路305から送信用シフトレジスタ302および受信用シフトレジスタ303に、8ビット分のCLK信号を出力する。この結果、S9で送信用シフトレジスタ302に転送されたバス固有IDの8ビットデータが、MOSI端子から順次シリアルデータ(図6(c)の603に対応)として出力される。これと同時に、MISO端子から順次入力する8ビット分のシリアルデータが、受信用シフトレジスタ303に順次記憶される。
マイコンコア301は、受信用シフトレジスタ303に記憶された8ビットの応答データを、図3の受信用レジスタ307に転送する(図17のS14)。
マイコンコア301は、受信用レジスタ307に転送された内容が0であるか否かを判定する(図17のS15)。図6では前述しなかったが、第2のSPIスレーブデバイス103は、SPIマスタデバイス101から、設定用のデバイス固有IDを受信して自装置のデバイス固有IDと一致した場合や、バス固有IDを受信した場合に、ローレベルの応答シリアルデータを返す。マイコンコア301は、受信用レジスタ307に転送された応答データが0でない場合(S15の判定がNOの場合)には、設定用のデバイス固有IDに対応する第2のSPIスレーブデバイス103から応答がなく故障であると判定する。この場合には、マイコンコア301は、その第2のSPIスレーブデバイス103は無視して、S17′に移行し、次の第2のSPIスレーブデバイス103に対する処理に移る。
S15の判定がYESなら、マイコンコア301は、メモリ上の変数「割り付けるバス固有ID」に記憶されているバス固有IDの全てのビットを送信したか否かを判定する(図17のS16)。
S16の判定がNOならば、マイコンコア301は、S12の処理に戻って、バス固有IDの残りのビットの送信処理を続行する。
S16の判定がYESになったら、マイコンコア301は、最後の8ビットデータの受信処理を実行する(図17のS17)。具体的には、マイコンコア301は、#0の汎用1ビットレジスタ308を制御することにより、#0のクロック出力制御回路305からCLK端子を介して、8ビット分のCLK信号を出力する。また、マイコンコア301は、#1の汎用1ビットレジスタ308を制御することにより、#1のクロック出力制御回路305から送信用シフトレジスタ302および受信用シフトレジスタ303に、8ビット分のCLK信号を出力する。この結果、S5で送信用シフトレジスタ302の8ビットデータが、MOSI端子から順次シリアルデータとして出力される。これと同時に、MISO端子から順次入力する8ビット分のシリアルデータが、受信用シフトレジスタ303に順次記憶される。
その後、マイコンコア301は、SS信号とCLK信号の制御を実行する(図17のS17′)。これは、図6で前述した<SPIマスタデバイス101の動作5>の処理である。すなわち、マイコンコア301は、図3のSS端子から出力されるSS信号が図3のCLK端子から出力されるCLK信号の1クロック長さ分だけローレベルとなる信号を生成する。具体的には、マイコンコア301は、図3の#2の汎用1ビットレジスタ308に、ローレベル値を設定する。そして、マイコンコア301は、図3の#0の汎用1ビットレジスタ308を制御して、#0のクロック出力制御回路305から、1周期分のみのCLK信号を出力させる。さらに、マイコンコア301は、図3の#2の汎用1ビットレジスタ308にハイレベル値を設定することにより、SS信号をハイレベルにする制御を実行する。
上記処理の後、マイコンコア301は、メモリの変数「割り付けるバス固有ID」の値を+1インクリメントし、その値でメモリ上の配列変数「見つかったデバイス固有ID」のテーブル(図14のS15参照)の未処理のエントリにアクセスする(図17のS17′′)。
マイコンコア301は、このアクセスに失敗したか否かを判定することにより、登録されている全ての第2のSPIスレーブデバイス103にバス固有IDを設定したか否かを判定する(図17のS18)。
S18の判定がNOなら、マイコンコア301は、S3の処理に戻って、新たな設定用のデバイス固有IDに対応する第2のSPIスレーブデバイス103に対して、バス固有ID設定処理を続行する。
S18の判定がYESになったならば、マイコンコア301は、図16および図17のフローチャートで示される図12のS4のバス固有ID設定処理を終了する。
図18および図19は、図12のS5のSPIアクセス処理の詳細例を示すフローチャートである。この処理は、図7で前述したバス固有IDを用いたSPI通信処理を含み、拡張方式で動作する第2のSPIスレーブデバイス103に対するSPIアクセス処理に加えて、一般方式による第1のSPIスレーブデバイス102に対するSPIアクセス処理を含む。
まず、マイコンコア301は、一般方式の第1のSPIスレーブデバイス102へのアクセスが発生したか否かを判定する(図18のS1)。
S1の判定がYESの場合、マイコンコア301は、一般方式によるSPI通信を開始する(図18のS2)。具体的には、マイコンコア301は、図3の#2の汎用1ビットレジスタ308にローレベル値を設定し、SS端子から出力されるSS信号をローレベルにする。また、マイコンコア301は、図3の#0の汎用1ビットレジスタ308を制御することにより、#0のクロック出力制御回路305に、CLK端子にCLK信号を連続的に出力させる。
続いて、マイコンコア301は、一般方式によるSPI通信を実施する(図18のS3)。この詳細については、説明を省略する。
マイコンコア301は、一般方式によるSPI通信を終了するときは、図3の#2の汎用1ビットレジスタ308にハイレベル値を設定し、SS端子から出力されるSS信号をハイレベルにする。
その後、マイコンコア301は、S1の処理に戻る。
S1の判定がNOの場合、マイコンコア301は、拡張方式によるSPI通信を開始する。
まずマイコンコア301は、SS信号とCLK信号の制御を実行する(図18のS5)。これは、図7に関して前述した<SPIマスタデバイス101の動作1>の処理である。すなわち、マイコンコア301は、図3のSS端子から出力されるSS信号が図3のCLK端子から出力されるCLK信号の1クロック長さ分だけローレベルとなる信号を生成する。具体的には、マイコンコア301は、図3の#2の汎用1ビットレジスタ308に、ローレベル値を設定する。そして、マイコンコア301は、図3の#0の汎用1ビットレジスタ308を制御して、#0のクロック出力制御回路305から、1周期分のみのCLK信号を出力させる。その後、マイコンコア301は、図3の#2の汎用1ビットレジスタ308にハイレベル値を設定し、SS端子から出力されるSS信号をハイレベルにする。
次に、マイコンコア301は、図3の送信用レジスタ306において、上位2ビットに図7で前述したID指定コマンドの値“10”を設定し、下位6ビットに設定したいバス固有IDの上位6ビット分を設定する。そして、マイコンコア301は、送信用レジスタ306に設定されたID指定コマンドを含む8ビットデータを、送信用シフトレジスタ302に転送する(以上、図18のS6)。これは、図7に関して前述した<SPIマスタデバイス101の動作2>の処理である。
次に、マイコンコア301は、ID指定コマンドを含む8ビットデータの出力処理を実行する(図18のS7)。これは、図7に関して前述した<SPIマスタデバイス101の動作2>の処理である。具体的には、マイコンコア301は、#0の汎用1ビットレジスタ308を制御することにより、#0のクロック出力制御回路305からCLK端子を介して、8ビット分のCLK信号を出力する。また、マイコンコア301は、#1の汎用1ビットレジスタ308を制御することにより、#1のクロック出力制御回路305から送信用シフトレジスタ302に、8ビット分のCLK信号を出力する。この結果、S6で送信用シフトレジスタ302に転送されたID指定コマンドを含む8ビットデータが、MOSI端子から順次シリアルデータ(図7(c)の701に対応)として出力される。
次に、図18のS8からS10は、図7に関して前述した<SPIマスタデバイス101の動作3>の処理に対応する。
まず、マイコンコア301は、バス固有IDのデータ長が14ビット長(図16のS1参照)であるか否かを判定する(図18のS8)。
S8の判定がNOならば、バス固有IDのデータ長は6ビット長であり、S6およびS7で送信が完了しているので、S9およびS10はスキップして図19のS11に移行する。
S8の判定がYESならば、マイコンコア301は、図3の送信用レジスタ306に、バス固有IDの残りの下位8ビットを設定する。そして、マイコンコア301は、送信用レジスタ306に設定されたバス固有IDの8ビットデータを、送信用シフトレジスタ302に転送する(以上、図18のS9)。これは、図7に関して前述した<SPIマスタデバイス101の動作3>の処理である。
次に、マイコンコア301は、バス固有IDを含む8ビットデータ(図7(c)の703に対応)の出力処理を実行する(図18のS10)。この処理は、前述した図18のS7と同様である。
その後、マイコンコア301は、SS信号とCLK信号の制御を実行する(図18のS10′)。これは、図7で前述した<SPIマスタデバイス101の動作4>の処理である。すなわち、マイコンコア301は、図3のSS端子から出力されるSS信号が図3のCLK端子から出力されるCLK信号の1クロック長さ分だけローレベルとなる信号を生成する。具体的には、マイコンコア301は、図3の#2の汎用1ビットレジスタ308に、ローレベル値を設定する。そして、マイコンコア301は、図3の#0の汎用1ビットレジスタ308を制御して、#0のクロック出力制御回路305から、1周期分のみのCLK信号を出力させる。さらに、マイコンコア301は、図3の#2の汎用1ビットレジスタ308にハイレベル値を設定することにより、SS信号をハイレベルにする制御を実行する。
これ以降、SPIマスタデバイス101は、以下の図19のS11からS17の一連の処理により、図3のCLK端子から出力するCLK信号に同期して、図3のMOSI端子からSPI通信のシリアルデータ(図7(c)の703に対応)を送信する。これは、図7に関して前述した<SPIマスタデバイス101の動作4>の処理に対応する。
まずマイコンコア301は、SPI通信において送信するコマンドやデータを図3の送信用レジスタ306に設定し、この送信用レジスタ306の内容を図3の送信用シフトレジスタ302に転送する(図19のS11)。
次に、マイコンコア301は、送信するコマンドやデータを含む8ビットデータの出力処理を実行する(図19のS12)。具体的には、マイコンコア301は、#0の汎用1ビットレジスタ308を制御することにより、#0のクロック出力制御回路305からCLK端子を介して、8ビット分のCLK信号を出力する。また、マイコンコア301は、#1の汎用1ビットレジスタ308を制御することにより、#1のクロック出力制御回路305から送信用シフトレジスタ302に、8ビット分のCLK信号を出力する。この結果、S11で送信用シフトレジスタ302に転送された送信するコマンドやデータを含む8ビットデータが、MOSI端子から順次シリアルデータ(図7(c)の703に対応)として出力される。
マイコンコア301は、必要ならば、SPI通信においてさらに付加的に送信するコマンドやデータを図3の送信用レジスタ306に設定し、この送信用レジスタ306の内容を図3の送信用シフトレジスタ302に転送する(図19のS13)。
次に、マイコンコア301は、付加的に送信するコマンドやデータを含む8ビットデータの出力処理を実行する(図19のS14)。具体的には、マイコンコア301は、#0の汎用1ビットレジスタ308を制御することにより、#0のクロック出力制御回路305からCLK端子を介して、8ビット分のCLK信号を出力する。また、マイコンコア301は、#1の汎用1ビットレジスタ308を制御することにより、#1のクロック出力制御回路305から送信用シフトレジスタ302および受信用シフトレジスタ303に、8ビット分のCLK信号を出力する。この結果、S13で送信用シフトレジスタ302に転送された付加的に送信するコマンドやデータを含む8ビットデータが、MOSI端子から順次シリアルデータ(図7(c)の703に対応)として出力される。これと同時に、MISO端子から順次入力する8ビット分のシリアルデータ(図7(d)の704に対応)が、受信用シフトレジスタ303に順次記憶される。
マイコンコア301は、受信用シフトレジスタ303に記憶された8ビットの応答データを、図3の受信用レジスタ307に転送する(図19のS15)。
マイコンコア301は、受信用レジスタ307に転送された応答データを処理する(図19のS16)。
次に、マイコンコア301は、第2のSPIスレーブデバイス103へのSPIアクセスが完了したか否かを判定する(図19のS17)。
SPIアクセスが完了していない(S17の判定がNOである)場合には、マイコンコア301は、図19のS13の処理に戻って、SPIアクセスを続行する。
SPIアクセスが完了した(S17の判定がYESになった)場合には、マイコンコア301は、図18のS5と同様の、SS信号とCLK信号の1クロック長出力制御を実行する(図19のS18)。これは、図7に関して前述した<SPIマスタデバイス101の動作5>の処理である。
次に、マイコンコア301は、図3の送信用レジスタ306において、上位2ビットに図7で前述したID指定コマンドの値“10”を設定し、下位6ビットに“000000”を設定する。この8ビットのデータは、ID指定解除コマンドとして機能する。そして、マイコンコア301は、送信用レジスタ306に設定されたID指定解除コマンドを含む8ビットデータを、送信用シフトレジスタ302に転送する(以上、図19のS19)。これは、図7に関して前述した<SPIマスタデバイス101の動作5>の処理である。
次に、マイコンコア301は、ID指定コマンドを含む8ビットデータの出力処理を実行する(図19のS20)。この処理は、前述した図18のS7と同様である。
その後、マイコンコア301は、図18のS5と同様の、SS信号とCLK信号の1クロック長出力制御を実行する(図19のS21)。これは、図7で前述した<SPIマスタデバイス101の動作4>の処理である。
以上により、マイコンコア301は、図18および図19のフローチャートで示される図12のS5のSPIアクセス処理を終了する。
図20は、第2のSPIスレーブデバイス103が実行する全体制御処理の例を示すフローチャートである。
図4のマイコンコア401は、SPIインタフェースの制御処理を開始する(図20のS1)。図8で前述したリセット処理により任意のタイミングでリセットされた場合も、このS1に戻る。
マイコンコア401は、図4の#3の汎用1ビットレジスタ408の値を監視することにより、SS端子から入力するSS信号がローレベルになるまで待つ(図20のS2)。
SS信号がローレベルになると、マイコンコア401は、次の処理を実行する。マイコンコア401は、図4の1クロック判定回路404の出力を#0の汎用1ビットレジスタ408に転送して判定することにより、1クロック分のSS信号が入力して通信開始状態になったか否かを判定する(図20のS3)。
S3の判定がNOならば、マイコンコア401は、図4の#3の汎用1ビットレジスタ408の値を監視することにより、SS端子から入力するSS信号がローレベルである間、第1のSPIスレーブデバイス102と同様の一般方式によるSPIスレーブデバイスとして、SPIマスタデバイス101との間で通信を実行する(図20のS4)。
マイコンコア401は、図4の#3の汎用1ビットレジスタ408の値を監視することにより、SS端子から入力するSS信号のローレベルの状態が解除されハイレベルになったら、S2の監視処理に戻る。
S2でSS信号がローレベルになりさらに#0の汎用1ビットレジスタ408により1クロック分のSS信号が入力したと判定された(図20のS3の判定がNOになった)場合、マイコンコア401は、拡張方式による通信開始の状態と判定する。これは、前述した図5、図6、または図7で前述した<第2のSPIスレーブデバイス103の動作1>の処理に対応する。
この場合、マイコンコア401は、#0の汎用1ビットレジスタ408の内容をリセットした後、MOSI端子から入力するシリアルデータの受信処理を実行する(図20のS5)。具体的には、マイコンコア401は、#1の汎用1ビットレジスタ408を制御することにより、クロック出力制御回路405から送信用シフトレジスタ403および受信用シフトレジスタ402に、8ビット分のCLK信号を出力する。この結果、MOSI端子から順次入力する8ビット分のシリアルデータが、受信用シフトレジスタ402に順次記憶される。さらに、マイコンコア401は、図4の受信用レジスタ406に、受信用シフトレジスタ402に記憶された8ビットのデータを転送する。
次に、マイコンコア401は、受信用レジスタ406に転送されたデータの上位2ビットが、ID探索コマンド“00”であるか否かを判定する(図20のS6)。
S6の判定がYESならば、マイコンコア401は、デバイス固有ID応答処理を実行する(図20のS7)。これは、図5で前述した<第2のSPIスレーブデバイス103の動作2>の処理に対応する。この処理の詳細については、図21のフローチャートを用いて後述する。S7の処理の後、マイコンコア401は、S2の監視処理に戻る。
S6の判定がNOならば、マイコンコア401は、受信用レジスタ406に転送されたデータの上位2ビットが、ID設定コマンド“01”であるか否かを判定する(図20のS8)。
S8の判定がNOならば、マイコンコア401は、S2の監視処理に戻る。
S8の判定がYESならば、マイコンコア401は、バス固有ID設定処理を実行する(図20のS9)。これは、図6で前述した<第2のSPIスレーブデバイス103の動作2>の処理に対応する。この処理の詳細については、図22のフローチャートを用いて後述する。
S9の処理の後、マイコンコア401は、S9でバス固有IDが自装置に設定されたか否かを判定する(図20のS10)。
S10の判定がNOならば、マイコンコア401は、S2の監視処理に戻る。
S10の判定がYESならば、マイコンコア401は、次の処理を実行する。マイコンコア401は、図4の1クロック判定回路404の出力を#0の汎用1ビットレジスタ408に転送して判定することにより、1クロック分のSS信号が入力して通信開始状態になるまで待機する(図20のS11の判定がNOの繰返し)。これは、図7で前述した<第2のSPIスレーブデバイス103の動作1>の処理に対応する。
S11の判定がYESになると、マイコンコア401は、S5と同様の処理により、図4のMOSI端子から入力するシリアルデータを受信用シフトレジスタ402に入力し、受信用レジスタ406に転送する。マイコンコア401は、受信用レジスタ406に転送されたデータの上位2ビットが、ID指定コマンド“10”であり、かつ続いて受信したバス固有IDとして自装置に登録されているバス固有IDが指定されるまで待機する(図20のS12の判定がNOの繰返し)。これは、図7で前述した<第2のSPIスレーブデバイス103の動作2>および<第2のSPIスレーブデバイス103の動作3>の処理に対応する。
S12の判定がYESになると、マイコンコア401は、次の処理を実行する。マイコンコア401は、図4の1クロック判定回路404の出力を#0の汎用1ビットレジスタ408に転送して判定することにより、1クロック分のSS信号が入力して通信終了状態になるまで待機する(図20のS12´の判定がNOの繰返し)。これは、図7で前述した<第2のSPIスレーブデバイス103の動作4>の処理に対応する。
S12´の判定がYESになると、マイコンコア401は、SPI通信可能状態になる(図20のS13)。SPI通信可能状態では、マイコンコア401は、#3の汎用1ビットレジスタ408の値がハイレベル、すなわち、SS端子から入力するSS信号がハイレベルの状態で、SPI通信を実行する。この場合、マイコンコア401は、図4のCLK端子から入力する図7(a)のCLK信号に同期して、図4のMOSI端子から入力するSPI通信のシリアルデータ(図7(c)の703に対応)を、8ビットずつ受信して処理する。また、マイコンコア401は、必要に応じて、図4のCLK端子から入力するCLK信号に同期して、図4のMISO端子から、SPI通信のシリアルデータ(図7(d)の704に対応)を8ビットずつ送信する。これらの処理は、図7で前述した<第2のSPIスレーブデバイス103の動作4>の処理に対応する。具体的には、マイコンコア401は、図4の#1の汎用1ビットレジスタ408を制御することにより、クロック出力制御回路405から送信用シフトレジスタ403および受信用シフトレジスタ402に、8ビット分のCLK信号を出力する。この結果、MOSI端子から順次入力する8ビット分のシリアルデータが、受信用シフトレジスタ402に順次記憶され、続けて受信用レジスタ406に転送される。また、送信用レジスタ407から送信用シフトレジスタ403にセットされたデータが、MISO端子から8ビット分のシリアルデータとして順次送信される。
マイコンコア401は、SPI通信可能状態において、SPIマスタデバイス101から自装置へのバス固有IDの指定の解除が指示されたか否かを判定する(図20のS14)。具体的には、マイコンコア401は、図4の1クロック判定回路404の出力を#0の汎用1ビットレジスタ408に転送して判定することにより、1クロック分のSS信号が入力して通信開始状態が指定されたか否かを判定する。この判定がYESになると、マイコンコア401は、S5と同様の処理により、図4のMOSI端子から入力するシリアルデータを受信用シフトレジスタ402に入力し、受信用レジスタ406に転送する。マイコンコア401は、受信用レジスタ406に転送されたデータの上位2ビットがID指定コマンド“10”であり、かつ下位6ビットが“000000”となってID指定解除が指定されているか否かを判定する。あるいは、マイコンコア401は、受信用レジスタ406に転送されたデータの上位2ビットがID指定コマンド“10”であり、かつ続けて自装置に設定されているバス固有ID以外のバス固有IDが指定されているか否かを判定する。これらの判定の後、マイコンコア401は、図4の1クロック判定回路404の出力を#0の汎用1ビットレジスタ408に転送して判定することにより、1クロック分のSS信号が入力して通信終了状態になるまで待機した後、S14の判定処理を終了する。
S14の処理の結果、上記何れかの判定がNOの場合には、マイコンコア401は、S13のSPI通信可能状態に戻る。
一方、S14の処理の結果、上記何れの判定もYESになった場合には、マイコンコア401は、SPI通信可能状態を終了して、S11の通信開始状態の検出処理に戻る。
マイコンコア401は、S12のコマンド判定処理で、図8で前述したリセットコマンド“11”を検出した場合には、自装置におけるバス固有IDの登録を解除(特には図示しないメモリ上の設定をクリア)した上で、S1の開始状態に戻る。
図21は、図20のS7のデバイス固有ID応答処理の詳細例を示すフローチャートである。
図4のマイコンコア401は、デバイス固有ID応答処理を開始する(図21のS1)。
マイコンコア401はまず、初期化処理を実行する(図21のS2)。具体的には、マイコンコア401は、後述する特には図示しないメモリに記憶される「不一致フラグ」をクリアする。また、マイコンコア401は、図4の1クロック判定回路404から#0の汎用1ビットレジスタ408に値1がセットされたときに、割込み処理が発生するように設定を行う。この割込み処理については、後述する。
以下に説明する図21のS3からS10までの一連の処理は、図5で前述した<第2のSPIスレーブデバイス103の動作3>の処理に対応する。
マイコンコア401は、図4のMOSI端子から入力するシリアルデータの受信待ち状態となる(図21のS3)。具体的には、マイコンコア401は、図4の#1の汎用1ビットレジスタ408を制御することにより、クロック出力制御回路405から送信用シフトレジスタ403および受信用シフトレジスタ402に、8ビット分のCLK信号を出力する。この結果、MOSI端子から順次入力する8ビット分のシリアルデータが、受信用シフトレジスタ402に順次記憶される。
その後、マイコンコア401は、図4の受信用シフトレジスタ402の内容を、受信用レジスタ406に転送する(図21のS4)。
マイコンコア401は、メモリ上の「不一致フラグ」に値1がセットされているか否かを判定する(図21のS5)。
S8の判定がYESならば、マイコンコア401は、図4の送信用レジスタ407に比較結果としてオールビット1(2進数「1111 1111」)をセットする(図21のS6)。その後、マイコンコア401は、後述するS8に移行する。
S5の判定がNOならば、マイコンコア401は、SPIマスタデバイス101から受信用レジスタ406に受信された探索用のデバイス固有IDの新たな8ビットデータを、自装置のデバイス固有IDの該当する8ビットと比較する(図21のS7)。マイコンコア401は、MSBから順に比較して、合致しているところまでの各ビットの比較結果を0とする。合致していないビット以下の各ビットの比較結果は1とする。マイコンコア401は、この結果得られる8ビットの比較結果データを図4の送信用レジスタ407に転送する。
S6またはS7の処理の後、マイコンコア401は、送信用レジスタ407に転送された比較結果において、合致しないビット部分があるか否かを判定する(図21のS8)。
S8の判定がYESならば、マイコンコア401は、メモリ上の「不一致フラグ」に値1をセットする(図21のS9)。S8の判定がNOならば、マイコンコア401は、S9はスキップする。
その後、マイコンコア401は、8ビットの比較結果データの応答処理を実行する(図21のS13)。具体的には、マイコンコア401は、#1の汎用1ビットレジスタ408を制御することにより、クロック出力制御回路405から送信用シフトレジスタ403および受信用シフトレジスタ402に、8ビット分のCLK信号を出力する。この結果、S9またはS10で送信用レジスタ407から送信用シフトレジスタ403に転送された8ビットの比較結果データが、MISO端子から順次シリアルデータ(図5(d)の504、505に対応)として出力される。これと同時に、MOSI端子から順次入力する8ビット分のシリアルデータ(図5(c)の502に対応)が、受信用シフトレジスタ402に順次記憶される。
その後、マイコンコア401は、図21のS7の処理に戻って、受信用シフトレジスタ402に受信された探索用のデバイス固有IDの新たな8ビットデータに対応する比較結果データの応答処理を実行する。
S7で前述したように、探索用のデバイス固有IDと自装置のデバイス固有IDの8ビットがMSBから順に比較されて、合致しているところまでの各ビットの比較結果は0とされ、合致していないビット以下の各ビットの比較結果は1とされる。そして、合致していないところがあれば、S8の判定がYESとなって、S9で「不一致フラグ」に値1がセットされる。このように「不一致フラグ」に値1がいったんセットされると、それ以降は必ずS5の判定がYESとなって、比較結果の8ビットはオール1となって、不一致が発生したビットより下位ビットにおいて無意味な比較が行われないように制御される。
なお、マイコンコア401は、図4の送信用レジスタ407において値1がセットされているビットが送信用シフトレジスタ403からMISO端子から出力されるタイミングにおいて、MISO端子をオープンドレインにしてハイインピーダンス状態とする。
上記デバイス固有ID応答処理における図21のS3以降の任意の処理中に、図4の1クロック判定回路404から#0の汎用1ビットレジスタ408に値1がセットされて割込み処理が発生すると、マイコンコア401は、次の処理を実行する。マイコンコア401は、通信終了の状態になったと判定し、図4の#0の汎用1ビットレジスタ408をクリアし、かつこのレジスタで割込み処理が発生しないように設定を変更する。この上で、マイコンコア401は、図21のフローチャートで示される図20のS7のデバイス固有ID応答処理を終了し、図20のS7からS2の監視処理に戻る。
図22は、図20のS9のバス固有ID設定処理の詳細例を示すフローチャートである。
図4のマイコンコア401は、バス固有ID設定処理を開始する(図22のS1)。
マイコンコア401はまず、初期化処理を実行する(図22のS2)。具体的には、マイコンコア401は、図4の1クロック判定回路404から#0の汎用1ビットレジスタ408に値1がセットされたときに、割込み処理が発生するように設定を行う。この割込み処理が発生すると、マイコンコア401は、制御を図22のステップAに移す。この割込み処理については、後述する。
マイコンコア401は、図20のS5で受信用レジスタ406にセットされたID設定コマンド“01”を含む8ビットデータ(図6(c)の601に対応)の下位6ビットからバス固有IDの上位6ビット分を取り出す。そして、マイコンコア401は、その取り出した6ビット分を、特には図示しないメモリ上の変数「バス固有ID」に追加保存する(図22のS3)。これは、前述した図6の<第2のSPIスレーブデバイス103の動作2>の処理に対応する。
続いて、以下の図22のS4からS10の一連の処理は、前述した図6の<第2のSPIスレーブデバイス103の動作3>の処理に対応する。
まずマイコンコア401は、図4のMOSI端子から入力する設定用のデバイス固有IDのシリアルデータ(図6(c)の602に対応)の受信待ち状態となる(図22のS4)。具体的には、マイコンコア401は、図4の#1の汎用1ビットレジスタ408を制御することにより、クロック出力制御回路405から送信用シフトレジスタ403および受信用シフトレジスタ402に、8ビット分のCLK信号を出力する。この結果、MOSI端子から順次入力する8ビット分のシリアルデータが、受信用シフトレジスタ402に順次記憶される。マイコンコア401は、受信用シフトレジスタ402に記憶された8ビットデータを、図4の受信用レジスタ406に転送する。
マイコンコア401は、受信用レジスタ406に転送された設定用のデバイス固有IDの新たな8ビットデータを、特には図示しないメモリ上の変数「比較用デバイス固有ID」に追加登録する(図22のS5)。
マイコンコア401は、自装置のデバイス固有IDのデータ長分だけ、設定用のデバイス固有IDのデータを受信したか否かを判定する(図22のS6)。
S6の判定がNOならば、マイコンコア401は、S4の処理に戻って、設定用のデバイス固有IDの新たな8ビットデータの受信処理を続行する。
S6の判定がYESになると、マイコンコア401は、メモリ上の変数「比較用デバイス固有ID」に揃った設定用のデバイス固有IDを、自装置のデバイス固有IDと比較して一致したか否かを判定する(図22のS7)。
S7の判定がYESならば、マイコンコア401は、図4のMOSI端子から入力する残りのバス固有IDのシリアルデータ(図6(c)の603に対応)の受信待ち状態となる(図22のS9)。具体的には、マイコンコア401は、図4の#1の汎用1ビットレジスタ408を制御することにより、クロック出力制御回路405から送信用シフトレジスタ403および受信用シフトレジスタ402に、8ビット分のCLK信号を出力する。この結果、MOSI端子から順次入力する8ビット分のシリアルデータが、受信用シフトレジスタ402に順次記憶される。マイコンコア401は、受信用シフトレジスタ402に記憶された8ビットデータを、図4の受信用レジスタ406に転送する。
マイコンコア401は、受信用レジスタ406に転送されたバス固有IDの新たな8ビットデータを、特には図示しないメモリ上の変数「バス固有ID」に追加登録する(図22のS10)。
マイコンコア401は、上述のS9とS10の処理を繰り返すことにより、最終的にメモリ上の変数「バス固有ID」に全データが揃う。
メモリ上の変数「バス固有ID」に全データが揃ったタイミングで、SPIマスタデバイス101からの制御により、図4の1クロック判定回路404から#0の汎用1ビットレジスタ408に値1がセットされて割込み処理が発生する。この結果、マイコンコア401は、バス固有ID設定処理に関して通信終了の状態になったと判定し、図4の#0の汎用1ビットレジスタ408をクリアし、かつこのレジスタで割込み処理が発生しないように設定を変更する。この上で、マイコンコア401は、図22のステップAに制御を移す。
これにより、マイコンコア401は、メモリ上の変数「バス固有ID」に全データが揃っていれば、その値を自装置に対して登録されたバス固有IDとして、メモリ等に登録する(図22のS12)。
その後、図22のフローチャートで示される図20のS9のバス固有ID設定処理を終了し(図22のS13)、図20のS9からS2の監視処理に戻る。
前述したS7の判定がNO、すなわち、メモリ上の変数「比較用デバイス固有ID」に揃った設定用のデバイス固有IDが自装置のデバイス固有IDと不一致であると判定された場合には、マイコンコア401は、次の処理を実行する。マイコンコア401は、メモリ上の変数「バス固有ID」の値をクリアした上で、S12に移行する。この結果、バス固有IDは自装置には登録されず、図22のフローチャートで示される図20のS9のバス固有ID設定処理を終了し(図22のS13)、図20のS9からS2の監視処理に戻る。
上述した本実施形態の適用例について、以下に説明する。
図23は、パーソナルコンピュータメインボードにおける図1の伝送システム100の構成例を示す図である。この構成例では、図1のSPIマスタデバイス101に対応するメインボード上のSPIマスタデバイスに、図1の第2のSPIスレーブデバイス103に対応するSPI温度センサが接続される。例えば、製品ラインナップとして、以下のものがあった場合を考える。
1.温度センサ無し
2.温度センサ1台
3.温度センサ2台
このようなラインナッブを、図23の構成例で実装した場合、以下のような特徴を有する。
1.配線は4本のみで、並行して配線が可能になる。
2.配線が少なく、かつ配線ルートが簡単で済む。
3.SPIマスタデバイスは、温度センサが何個あるか、プログラムで認識が可能のため、共通のプログラムで、メインボードのラインナップに対応できる。ラインナップ毎にプログラムを変更しなくて済むため、プログラムの開発やメンテナンスが楽になる。
図24は、車載システムにおける図1の伝送システム100の構成例を示す図である。この構成例では、図1のSPIマスタデバイス101として動作する車載コンピュータに、図1の第2のSPIスレーブデバイス103として動作する温度センサや回転センサが接続される。例えば、製品ラインナップとして、以下のものがあった場合を考える。
1.ABS(アンチロックブレーキシステム)有り+ブレーキパッド温度センサ無し
2.ABS有り+ブレーキパッド温度センサ有り
このようなラインアップを実現する本実施形態による車載システムの配線例は、図24(a)に示される。この配線例において、全ての配線は4本の並行線であり、分岐コネクタはラインナップに対応するためのものである。この配線例は、以下の特徴を有する。
1.配線は4本のみで、並行して配線が可能になる。図24(b)および(c)は、上述のラインナップ1.および2.のそれぞれの場合における従来の配線例を示す。これらの図に示されるように、従来は、ラインナップ別に長い配線を7本、11本などというように管理をする必要があった。これに対して、本実施形態が適用される図24の配線例は、少ない配線数で車載システムを実現でき、かつラインナップ間で共通化を図ることが可能となる。
2.車載コンピュータは、共通のプログラムでラインナップに対応できる。ラインナップ毎にプログラムを変更しなくて済み、プログラムの開発やメンテナンスが楽になる。
以上の実施形態は、複数のスレーブ装置が一般方式の第一のスレーブ装置と拡張方式の第二のスレーブ装置との併設から成る伝送システムに関する。他の実施形態の伝送システムにおいては第一のスレーブ装置はなくてもよい。すなわち、本発明は拡張方式の第二のスレーブ装置に同じ拡張方式の第二のスレーブ装置を増設する場合にも適用できる。この場合、マスタ装置と全てのスレーブ装置間の伝送システム内では、スレーブセレクト信号線は1本のみの信号線として共有化される。
以上の実施形態に関して、さらに以下の付記を開示する。
(付記1)
マスタ装置と、前記マスタ装置と接続されると共に自装置の識別子が設定された複数のスレーブ装置を備える伝送システムであって、
前記マスタ装置は、
前記複数のスレーブ装置のうちの第1のスレーブ装置が応答しないクロック長さの制御信号を前記複数のスレーブ装置のそれぞれに第1のタイミングで伝送する第1の伝送手段と、前記複数のスレーブ装置のそれぞれに対して前記複数のスレーブ装置のうちの増設され得る第2のスレーブ装置を指定する識別子を前記第1のタイミングより後の第2のタイミングで伝送する第2の伝送手段とを備え、
前記複数のスレーブ装置は、
前記制御信号と自装置を指定する前記識別子とを受信した場合に、前記マスタ装置に対してデータを伝送する第3の伝送手段を備える、
ことを特徴とした伝送システム。
(付記2)
前記第1の伝送手段が前記第1のスレーブ装置を選択するためのスレーブセレクト信号線を前記制御信号の1クロック長さ分だけ第1の論理状態にして通信開始とし、続いて前記第2の伝送手段が前記スレーブセレクト信号線を第2の論理状態にして通信期間とし、前記第2の論理状態の終了後前記第1の伝送手段が前記スレーブセレクト信号線を前記制御信号の1クロック長さ分だけ第1の論理状態に戻して通信終了とした後に前記第1のスレーブ装置が応答しない第2の論理状態にし、
前記マスタ装置および前記第2のスレーブ装置は、前記通信開始から前記通信終了までの通信期間で、前記第2の伝送手段および前記第3の伝送手段により、前記制御信号に同期したシリアルデータの通信を行う、
ことを特徴とした付記1記載の伝送システム。
(付記3)
前記マスタ装置および前記第1のスレーブ装置は、前記通信期間以外の期間において、前記マスタ装置が前記スレーブセレクト信号線を前記第1のスレーブ装置が応答する第1の論理状態にすることにより、前記制御信号に同期したシリアルデータの通信を行う、
ことを特徴とした付記2記載の伝送システム。
(付記4)
前記マスタ装置は、前記通信期間で、前記第2の伝送手段により、識別子探索コマンドに続いて、前記第2のスレーブ装置間で一意な識別子であるデバイス固有識別子の候補を探索用のデバイス固有識別子として送信する第1の動作を実行し、
前記第2のスレーブ装置は、前記通信期間で、前記識別子探索コマンドに続いて受信した前記探索用のデバイス固有識別子が自装置のデバイス固有識別子と比較して、一致すれば第1の論理状態を有する応答を出力し、一致しなければ第2の論理状態を有する応答を出力する第2の動作を実行し、
前記マスタ装置は、前記通信期間で、前記探索用のデバイス固有識別子を全て送信した後に、順次入力する前記応答が全て第1の論理状態であれば、前記送信した探索用のデバイス固有識別子を何れかの前記第2のスレーブ装置に設定されているデバイス固有識別子として登録する第3の動作を実行する、
ことを特徴とした付記3記載の伝送システム。
(付記5)
前記マスタ装置は、登録されている前記デバイス固有識別子を設定用の前記デバイス固有識別子として順次指定しながら、前記通信期間で、前記第2の伝送手段により、識別子設定コマンドに続いて、前記設定用のデバイス固有識別子と、任意のデータ長さを有するバス固有識別子とを送信し、
前記第2のスレーブ装置は、前記通信期間で、前記識別子設定コマンドに続いて受信した前記設定用のデバイス固有識別子が自装置のデバイス固有識別子に一致すれば、さらに前記バス固有識別子を自装置に設定する、
ことを特徴とした付記3または4記載の伝送システム。
(付記6)
前記マスタ装置は、前記通信期間で、前記第2の伝送手段により、識別子指定コマンドに続いて、通信を行う前記第2のスレーブ装置に対応し任意のデータ長さを有するバス固有識別子を送信し、
前記第2のスレーブ装置は、前記通信期間で、前記識別子指定コマンドに続いて受信した前記バス固有識別子が自装置に設定されているバス固有識別子と比較して、一致すれば、前記通信終了以後前記スレーブセレクト信号線が第2の論理状態になったタイミングで、前記マスタ装置との間で、前記制御信号に同期したデータ通信を行い、一致しなければ、その後に前記通信期間で識別子解除コマンドまたはリセットコマンドを受信するまでは、前記マスタ装置から入力するデータに応答しない、
ことを特徴とした付記3乃至5記載の伝送システム。
(付記7)
前記スレーブセレクト信号線は前記マスタ装置と前記識別子探索コマンドで探索される複数のスレーブ装置を接続する一本の信号線からなる、
ことを特徴とした付記4記載の伝送システム。
(付記8)
伝送システム上で自装置の識別子が設定され得る複数のスレーブ装置が接続されるマスタ装置であって、
前記複数のスレーブ装置のうちの第1のスレーブ装置が応答しないクロック長さの制御信号を前記複数のスレーブ装置のそれぞれに第1のタイミングで伝送する第1の伝送手段と、前記複数のスレーブ装置のそれぞれに対して前記複数のスレーブ装置のうちの増設された第2のスレーブ装置を指定する識別子を前記第1のタイミングより後の第2のタイミングで伝送することにより、前記制御信号と自装置を指定する前記識別子を受信した前記第2のスレーブ装置にデータを伝送させる第2の伝送手段と、
を備えることを特徴としたマスタ装置。
100 伝送システム
101 SPIマスタデバイス
102 第1のSPIスレーブデバイス
103 第2のSPIスレーブデバイス
104 CLK信号線
105 SS信号線
106 MOSI信号線
107 MISO信号線
301、401 マイコンコア
302、403 送信用シフトレジスタ
303、402 受信用シフトレジスタ
304 クロック生成器
305、405 クロック出力制御回路
306、407 送信用レジスタ
307、406 受信用レジスタ
308、408 汎用1ビットレジスタ

Claims (7)

  1. マスタ装置と、前記マスタ装置と接続される複数のスレーブ装置を備える伝送システムであって、
    前記マスタ装置は、
    前記複数のスレーブ装置のうちの第1のスレーブ装置が応答しないクロック長さの制御信号を前記複数のスレーブ装置のそれぞれに第1のタイミングで伝送する第1の伝送手段と、前記複数のスレーブ装置のそれぞれに対して前記複数のスレーブ装置のうちの増設された第2のスレーブ装置を指定する識別子を前記第1のタイミングより後の第2のタイミングで伝送する第2の伝送手段と、
    を備え、
    前記複数のスレーブ装置のうちの前記第2のスレーブ装置は、
    前記制御信号と自装置を指定する前記識別子とを受信した場合に、前記マスタ装置に対してデータを伝送する第3の伝送手段を備え
    前記マスタ装置は、
    前記第2のスレーブ装置との通信を開始する場合、前記第1の伝送手段によって、スレーブセレクト信号をクロック信号の1クロック長さ分だけ第1の論理状態にして通信開始とし、
    続いて、前記スレーブセレクト信号を第2の論理状態にして前記第2のスレーブ装置との通信期間とし、
    前記第2の論理状態の終了後、前記スレーブセレクト信号を前記クロック信号の1クロック長さ分だけ第1の論理状態に戻して前記第2のスレーブ装置と通信終了とした後に、
    前記スレーブセレクト信号を前記第1のスレーブ装置が応答しない第2の論理状態にする、
    ことを特徴とした伝送システム。
  2. 前記マスタ装置および前記第1のスレーブ装置は、前記通信期間以外の期間において、前記マスタ装置が前記スレーブセレクト信号を前記第1のスレーブ装置が応答する第1の論理状態にすることにより、前記クロック信号に同期したシリアルデータの通信を行う、
    ことを特徴とした請求項記載の伝送システム。
  3. 前記マスタ装置は、前記通信期間で、前記第2の伝送手段により、識別子探索コマンドに続いて、前記第2のスレーブ装置間で一意な識別子であるデバイス固有識別子の候補を探索用のデバイス固有識別子として送信し、
    前記第2のスレーブ装置は、前記通信期間で、前記識別子探索コマンドに続いて受信した前記探索用のデバイス固有識別子自装置のデバイス固有識別子と比較して、一致すれば第1の論理状態を有する応答を出力し、一致しなければ第2の論理状態を有する応答を出力し、
    前記マスタ装置は、前記通信期間で、前記探索用のデバイス固有識別子を送信した後に、順次入力する前記応答が第1の論理状態であれば、前記送信した探索用のデバイス固有識別子を何れかの前記第2のスレーブ装置に設定されているデバイス固有識別子として登録する、
    ことを特徴とした請求項記載の伝送システム。
  4. 前記マスタ装置は、登録されている前記デバイス固有識別子を設定用の前記デバイス固有識別子として順次指定しながら、前記通信期間で、前記第2の伝送手段により、識別子設定コマンドに続いて、前記設定用のデバイス固有識別子と、任意のデータ長さを有するバス固有識別子とを送信し、
    前記第2のスレーブ装置は、前記通信期間で、前記識別子設定コマンドに続いて受信した前記設定用のデバイス固有識別子が自装置のデバイス固有識別子に一致すれば、さらに前記バス固有識別子を自装置に設定する、
    ことを特徴とした請求項3記載の伝送システム。
  5. 前記マスタ装置は、前記通信期間で、前記第2の伝送手段により、識別子指定コマンドに続いて、通信を行う前記第2のスレーブ装置に対応し任意のデータ長さを有するバス固有識別子を送信し、
    前記第2のスレーブ装置は、前記通信期間で、前記識別子指定コマンドに続いて受信した前記バス固有識別子が自装置に設定されているバス固有識別子と比較して、一致すれば、前記通信終了以後前記スレーブセレクト信号が第2の論理状態になったタイミングで、前記マスタ装置との間で、前記クロック信号に同期したデータ通信を行い、一致しなければ、その後に前記通信期間で識別子解除コマンドまたはリセットコマンドを受信するまでは、前記マスタ装置から入力するデータに応答しない、
    ことを特徴とした請求項乃至記載の伝送システム。
  6. 前記スレーブセレクト信号が送信されるスレーブセレクト信号線は前記マスタ装置と前記識別子探索コマンドで探索される複数のスレーブ装置を接続する一本の信号線からなる、
    ことを特徴とした請求項記載の伝送システム。
  7. 伝送システム上で複数のスレーブ装置接続されるマスタ装置であって、
    前記マスタ装置は、
    前記複数のスレーブ装置のうちの第1のスレーブ装置が応答しないクロック長さの制御信号を前記複数のスレーブ装置のそれぞれに第1のタイミングで伝送する第1の伝送手段と、
    前記複数のスレーブ装置のそれぞれに対して前記複数のスレーブ装置のうちの増設された第2のスレーブ装置を指定する識別子を前記第1のタイミングより後の第2のタイミングで伝送することにより、前記制御信号と自装置を指定する前記識別子を受信した前記第2のスレーブ装置にデータを伝送させる第2の伝送手段と、
    を備え
    前記複数のスレーブ装置のうちの前記第2のスレーブ装置は、
    前記制御信号と自装置を指定する前記識別子とを受信した場合に、前記マスタ装置に対してデータを伝送する第3の伝送手段を備え、
    前記マスタ装置は、
    前記第2のスレーブ装置との通信を開始する場合、前記第1の伝送手段によって、スレーブセレクト信号をクロック信号の1クロック長さ分だけ第1の論理状態にして通信開始とし、
    続いて、前記スレーブセレクト信号を第2の論理状態にして前記第2のスレーブ装置との通信期間とし、
    前記第2の論理状態の終了後、前記スレーブセレクト信号を前記クロック信号の1クロック長さ分だけ第1の論理状態に戻して前記第2のスレーブ装置と通信終了とした後に、
    前記スレーブセレクト信号を前記第1のスレーブ装置が応答しない第2の論理状態にする、
    ことを特徴としたマスタ装置。
JP2015252754A 2015-12-25 2015-12-25 伝送システムおよびマスタ装置 Expired - Fee Related JP6652702B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015252754A JP6652702B2 (ja) 2015-12-25 2015-12-25 伝送システムおよびマスタ装置
US15/358,801 US10282329B2 (en) 2015-12-25 2016-11-22 Transmission system that includes master device and a plurality of slave devices

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015252754A JP6652702B2 (ja) 2015-12-25 2015-12-25 伝送システムおよびマスタ装置

Publications (2)

Publication Number Publication Date
JP2017117245A JP2017117245A (ja) 2017-06-29
JP6652702B2 true JP6652702B2 (ja) 2020-02-26

Family

ID=59087881

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015252754A Expired - Fee Related JP6652702B2 (ja) 2015-12-25 2015-12-25 伝送システムおよびマスタ装置

Country Status (2)

Country Link
US (1) US10282329B2 (ja)
JP (1) JP6652702B2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2539445A (en) * 2015-06-16 2016-12-21 Nordic Semiconductor Asa Data processing
US10979044B2 (en) * 2019-03-14 2021-04-13 Infineon Technologies Ag Chip reset via communication interface terminals
CN112506840B (zh) * 2020-12-07 2022-11-18 天津津航计算技术研究所 一种多对多spi总线切换方法
CN112817886B (zh) * 2021-02-04 2023-01-24 珠海全志科技股份有限公司 基于spi的主从通信方法及装置
CN112965927B (zh) * 2021-03-18 2021-11-30 深圳市航顺芯片技术研发有限公司 一种基于spi设备的信号驱动***及方法
JP7190526B2 (ja) * 2021-03-30 2022-12-15 本田技研工業株式会社 センサ及びセンサシステム
CN113312297A (zh) * 2021-06-22 2021-08-27 张玉禄 一种spi从接口、安全芯片及spi闪存电子装置
US11824681B2 (en) * 2021-08-18 2023-11-21 Stmicroelectronics Application Gmbh Processing system, related integrated circuit, device and method
CN113741274A (zh) * 2021-09-02 2021-12-03 浙江亿邦通联科技有限公司 一种spi扩展电路
US11847087B2 (en) * 2021-09-16 2023-12-19 Qualcomm Incorporated Systems and methods for chip operation using serial peripheral interface (SPI) with reduced pin options
CN114238196B (zh) * 2021-11-11 2022-12-20 珠海妙存科技有限公司 I2c总线单元、i2c总线***及通信同步控制方法
CN116405324B (zh) * 2023-06-06 2023-09-26 广州万协通信息技术有限公司 一种数据处理方法、装置、设备及存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3451628B2 (ja) 1992-03-24 2003-09-29 ソニー株式会社 4線式同期シリアル通信方式
US5754780A (en) * 1994-01-19 1998-05-19 Tokyo Electron Limited Apparatus and method for performing serial communication between master and slave devices
US20080288919A1 (en) * 2007-05-14 2008-11-20 Microsoft Corporation Encoding of Symbol Table in an Executable
CN101478577A (zh) * 2008-01-03 2009-07-08 鸿富锦精密工业(深圳)有限公司 主设备对从设备的定址***及方法
EP2287689B1 (de) * 2009-07-27 2012-11-14 Ziehl-Abegg AG Vorrichtung und Verfahren zur Adressierung einer Slave-Einheit
US20110078350A1 (en) * 2009-09-30 2011-03-31 Via Technologies, Inc. Method for generating multiple serial bus chip selects using single chip select signal and modulation of clock signal frequency
US8433838B2 (en) * 2010-09-17 2013-04-30 International Business Machines Corporation Remote multiplexing devices on a serial peripheral interface bus
US9274997B2 (en) * 2012-05-02 2016-03-01 Smsc Holdings S.A.R.L. Point-to-point serial peripheral interface for data communication between devices configured in a daisy-chain
US9760322B2 (en) * 2015-02-25 2017-09-12 Fuji Xerox Co., Ltd. Communication system and image forming apparatus
US9990316B2 (en) * 2015-09-21 2018-06-05 Qualcomm Incorporated Enhanced serial peripheral interface
TWI582596B (zh) * 2015-12-18 2017-05-11 視動自動化科技股份有限公司 具裝置類型及通訊類型自動辨識能力之多串列埠通訊系統及其方法
US10482045B2 (en) * 2016-02-17 2019-11-19 Analog Devices Global Unlimited Company Data communication interface for processing data in low power systems

Also Published As

Publication number Publication date
US10282329B2 (en) 2019-05-07
JP2017117245A (ja) 2017-06-29
US20170185548A1 (en) 2017-06-29

Similar Documents

Publication Publication Date Title
JP6652702B2 (ja) 伝送システムおよびマスタ装置
US6928501B2 (en) Serial device daisy chaining method and apparatus
US20160098371A1 (en) Serial peripheral interface daisy chain communication with an in-frame response
JPS595936B2 (ja) 多重モ−ド記憶装置
CN112416841A (zh) 基于i2c总线的多机通信的实现方法及多机通信***
US20080270654A1 (en) Bus System for Selectively Controlling a Plurality of Identical Slave Circuits Connected to the Bus and Method Therefore
US20060123168A1 (en) System and method for dynamically allocating addresses to devices coupled to an integrated circuit bus
US11106618B2 (en) Method for addressing an integrated circuit on a bus and corresponding device
CN108694140B (zh) 用于寻址i2c总线上的非易失性存储器的方法和对应的存储器设备
KR100726081B1 (ko) 집적회로 상호 통신을 이용한 차량의 네트워크 시스템 및그 제어방법
JP5476956B2 (ja) 通信システム及び通信方法
JP6391373B2 (ja) マスター・スレーブネットワーク装置
CN113132198A (zh) 一种多主一从的spi安全通信装置及通信方法
JPS62501803A (ja) 情報転送方法および装置
WO2005083577A2 (en) Integrated circuit with two different bus control units
JP2002189697A (ja) データ転送システム、及び、データ転送方式
JP6762546B1 (ja) シリアル通信方法及びシリアル通信システム
KR20010085633A (ko) 다중 프로세서 계산 시스템 및 다수의 프로세서를제어하는 방법
US20080126497A1 (en) Controller Apparatus with Shared Expansion Connection and Method for the same
JP2014119766A (ja) 通信システム
US20220188254A1 (en) Methods for identifying target slave address for serial communication interface
JPS58120341A (ja) プログラマブル・コントロ−ラの入出力デ−タ伝送方式
JPH04287150A (ja) 同期式シリアルバス方式
US20050038930A1 (en) Bus station
CN101021826A (zh) 桥接装置及其相关的电子***与接口控制方法

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20180706

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20180709

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20180709

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20180912

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180927

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190613

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190618

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190807

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191224

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200106

R150 Certificate of patent or registration of utility model

Ref document number: 6652702

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees