以下、添付図面を参照して本発明の実施形態を説明する。なお、実施形態を説明するための全図を通して、原則として(断りのない限り)、同一の部材等には同一の符号を付し、その繰り返しの説明は省略する。
〔実施形態1〕
<撮像システム>
図1は、撮像システムの構成例を示す図である。撮像システムは、撮像装置200(カメラ本体)と、カメラ本体200に着脱可能に装着されるアクセサリ装置としての中間アダプタ300と、中間アダプタ300に着脱可能に装着されるアクセサリ装置としての交換レンズ装置100とを含んで構成されている。カメラ本体200と、交換レンズ装置100や中間アダプタ300等のアクセサリ装置とは、各々の通信手段を用いて、互いに通信(制御命令や内部情報の伝送等)を行う。また、各々の通信手段は、それぞれ複数の通信方式をサポートしており、通信するデータの種類や通信目的に応じて、互いに同期して同一の通信方式へ切替えることにより、様々な状況に最適な通信形式で通信を行うことができる。なお、図1では、カメラ本体200に中間アダプタ300が装着されている構成を例示しているが、構成は、これには限定されない。交換レンズ装置100がカメラ本体200に直接装着されていてもよいし、カメラ本体200と交換レンズ装置100との間に複数の中間アダプタが装着されていてもよい。
交換レンズ装置100と中間アダプタ300とは、マウント400を介して機械的および電気的に接続されている。同様に、中間アダプタ300とカメラ本体200とは、マウント401を介して機械的および電気的に接続されている。交換レンズ装置100および中間アダプタ300は、マウント400、401に設けられた電源端子部を介してカメラ本体200から供給された電源を、後述する各種アクチュエータや各マイクロコンピュータの動作に利用する。また、交換レンズ装置100、中間アダプタ300およびカメラ本体200は、マウント400,401に設けられた通信端子部(図2を参照して後述)を介して相互に通信を行う。
交換レンズ装置100は、撮像光学系を含む。当該撮像光学系は、光学部材として、被写体側(OBJ側)から像側へ順に、フロントレンズユニット101、ズーム(変倍)のために移動するズームレンズユニット(変倍レンズユニット)102、光量を調節する開口絞りユニット114を含んでいる。当該撮像光学系は、さらに、像安定化のために移動する像安定化レンズユニット103、焦点調節のために移動するフォーカスレンズユニット104を含んでいる。
ズームレンズユニット102、フォーカスレンズユニット104は、それぞれ、保持枠105、106により保持されている。保持枠105、106は、それぞれ、ガイド部材によりガイドされて光軸方向に沿って移動可能に構成され、ステッピングモータ107、108によって駆動される。ステッピングモータ107、108は、それぞれ、駆動パルスに同期して保持枠105、106を移動させる。像安定化レンズユニット103は、撮像光学系の光軸に直交する方向の成分を有する方向へ移動することで、手振れ等のカメラの振れに起因する像振れを低減して像を安定化させる。
マイクロコンピュータ111(レンズマイコンともいう)は、交換レンズ装置100内の各部の動作を制御する制御部(レンズまたはアクセサリ制御部)として機能する。レンズマイコン111は、通信部112(レンズまたはアクセサリ通信部)を含み、通信部112を介して、カメラ本体200から制御コマンドや送信要求コマンドを受信する。なお、通信部112は、後述の第1通信路および第2通信路を含んでいる。レンズマイコン111は、制御コマンドに対応する制御を行ったり、送信要求コマンドに対応するデータを通信部112によりカメラ本体200に送信したりする。レンズマイコン111は、ズーミングやフォーカシングに関するコマンドに応答してズーム駆動回路119やフォーカス駆動回路120に駆動信号を出力し、ステッピングモータ107や108を駆動させる。このようにして、ズームレンズユニット102によるズーム処理やフォーカスレンズユニット104によるフォーカス処理(AF処理でありうる)が行われる。
絞りユニット114は、絞り羽根114aおよび114bを含んで構成されている。絞り羽根114aおよび114bの状態は、例えばホール素子115により検出され、ホール素子115の出力は、増幅回路122およびA/D変換回路123を介してレンズマイコン111に入力される。レンズマイコン111は、A/D変換回路123からの入力信号に基づき絞り駆動回路121に駆動信号を出力して絞りアクチュエータ113を駆動する。このようにして、絞りユニット114による光量調節処理が行われる。
さらに、レンズマイコン111は、交換レンズ装置100内に設けられた振動ジャイロ等の振れセンサにより検出されたカメラ振れに基づき像安定化駆動回路125に駆動信号を出力して像安定化アクチュエータ126(ボイスコイルモータ等)を駆動する。このようにして、像安定化レンズユニット103による像安定化処理が行われる。
また、交換レンズ装置100は、操作リング130および操作リング検出部131を有する。操作リング検出部131は、例えば、操作リング130の回転に応じて2相の信号を出力する2つのフォトインタラプタを含んで構成されうる。レンズマイコン111は、操作リング検出部131の出力に基づき、操作リング130の操作量を得る。また、レンズマイコン111は、操作リング130の操作量を、通信部112を介してカメラマイコン205(後述)に通知する。
中間アダプタ300は、例えば、エクステンダーであり、変倍レンズ301(光学部材)およびアダプタマイクロコンピュータ302(アダプタマイコンともいう)を含む。アダプタマイコン302は、中間アダプタ300内の各部の動作を制御する制御部(アダプタまたはアクセサリ制御部)として機能する。アダプタマイコン302は、アクセサリ通信部としての通信部303(アダプタまたはアクセサリ通信部)を含み、通信部303を介して、カメラ本体200から制御コマンドや送信要求コマンドを受信する。なお、通信部303は、後述の第1通信路および第2通信路を含んでいる。アダプタマイコン302は、制御コマンドに対応する制御を行ったり、送信要求コマンドに対応するデータを通信部303によりカメラ本体200に送信したりする。
カメラ本体200は、CCDやCMOSセンサ等の撮像素子201、A/D変換回路202、信号処理回路203、記録部204、カメラマイクロコンピュータ(カメラマイコンという)205および表示部206を含む。撮像素子201は、交換レンズ装置100内の撮像光学系により形成された被写体像を撮像(光電変換)して電気信号(アナログ信号)を出力する。A/D変換回路202は、当該アナログ信号をデジタル信号に変換する。信号処理回路203は、当該デジタル信号に対して画像処理を行って映像信号を生成する。また、信号処理回路203は、映像信号に基づき被写体像のコントラスト(撮像光学系の合焦状態)に関するフォーカス情報や被写体像の輝度に関する露出情報も生成する。また、信号処理回路203は、映像信号を表示部206に出力し、表示部206は、当該映像信号に基づき、構図やピント状態等の確認に用いられるライブビュー画像を表示する。
カメラマイコン205は、撮像指示スイッチや各種設定スイッチ等の操作部材からの入力に基づきカメラ本体200内の各部を制御する制御部(カメラ制御部)として機能する。また、カメラマイコン205は、通信部208(カメラ通信部)を含み、通信部208を介して制御コマンドをレンズマイコン111に送信する。なお、通信部208は、後述の第1通信路および第2通信路を含んでいる。当該制御コマンドは、ズームスイッチの操作等に基づくズームレンズユニット102のズーム動作に関するものを含みうる。また、当該制御コマンドは、輝度情報等に基づく絞りユニット114の光量調節動作に関するものを含みうる。また、当該制御コマンドは、コントラスト情報等に基づくフォーカスレンズユニット104の焦点調節動作に関するものを含みうる。また、カメラマイコン205は、交換レンズ装置100や中間アダプタ300の制御情報や状態情報を取得するための送信要求コマンドを、通信部208を介してレンズマイコン111やアダプタマイコン302に送信する。
以下、図2を参照して、カメラ本体200、交換レンズ装置100および中間アダプタ300を含む撮像システムにおける通信回路について説明する。図2は、撮像システムにおける通信回路の構成例を示す図である。カメラマイコン205、レンズマイコン111およびアダプタマイコン302は、マウント400、401に設けられた通信端子部を介して接続された信号線を用いて通信を行う。信号線は、通信のフロー制御を行うための信号を伝搬し、通信タイミングの通知に用いられる信号線CS(通知チャネル;第1通信チャネル;第1通信路)を含んで構成されている。また、信号線は、データを伝搬し、データの通信に用いられる信号線DATA(データ通信チャネル;第2通信チャネル;第2通信路)を含んで構成されている。
信号線CSは、カメラマイコン205、レンズマイコン111およびアダプタマイコン302に接続され、各マイコンは、信号線における信号レベル(電圧レベル)を検出可能である。また、信号線CSは、カメラ本体200内の電源にプルアップ接続されている。また、信号線CSは、さらに、交換レンズ装置100の接地スイッチ1121、カメラ本体200の接地スイッチ2081および中間アダプタ300の接地スイッチ3031を介して、GND(アースまたは接地)に接続されうる。すなわち、信号線CSは、オープンドレイン接続されている。この構成により、交換レンズ装置100、カメラ本体200および中間アダプタ300は、それぞれ、各接地スイッチをオン(接続)とすることにより、信号線CSの信号レベルをLo(Low;第1レベル)に設定可能である。一方、交換レンズ装置100、カメラ本体200および中間アダプタ300の全てが各々の接続スイッチをオフ(遮断)とすることにより、信号線CSの信号レベルをHi(High;第2レベル)に設定可能である。なお、信号線CSを伝搬する制御信号の内容や処理手順の詳細は後述する。
信号線DATAは、データの伝搬方向を切り換えながら使用可能な単線の双方向データ送信線でありうる。信号線DATAは、交換レンズ装置100内の入出力切り換えスイッチ1122を介してレンズマイコン111に接続可能である。また、信号線DATAは、カメラ本体200内の入出力切り換えスイッチ2082を介してカメラマイコン205に接続可能である。また、信号線DATAは、中間アダプタ300内の入出力切り換えスイッチ3032を介してアダプタマイコン302に接続可能である。各マイコンは、データを送信するためのデータ出力部(CMOS方式)とデータを受信するためのデータ入力部(CMOS方式)とを備えている。各マイコンは、入出力切り換えスイッチを操作することにより、信号線DATAをデータ出力部に接続するかデータ入力部に接続するかを選択することができる。この構成により、交換レンズ装置100、カメラ本体200および中間アダプタ300は、信号線DATAがデータ出力部に接続するように入出力切り換えスイッチを操作することにより、データ送信が可能となる。一方、交換レンズ装置100、カメラ本体200および中間アダプタ300は、信号線DATAがデータ入力部に接続するように入出力切り換えスイッチを操作することにより、データ受信が可能となる。当該入出力切り換えスイッチの操作手順の詳細は後述する。
なお、図2において通信回路の構成例を示したが、信回路の構成は、それには限定されない。例えば、信号線CSは、カメラ本体200内でGNDにプルダウン接続されているとともに、接地スイッチ1121、接地スイッチ2081および接地スイッチ3031を介して不図示の電源に接続されるように構成してもよい。また、信号線DATAは、各マイコンのデータ入力部に常に接続されていて、各マイコンのデータ出力部への接続はスイッチを介して選択的に行える構成としてもよい。
<通信データフォーマット>
図3を参照して、カメラマイコン205、レンズマイコン111およびアダプタマイコン302の間における通信データのフォーマットについて説明する。図3は、信号線DATAを使用して送受信される通信データのフォーマットを例示する図である。なお、このフォーマットは、後述するブロードキャスト通信およびP2P通信におけるものと共通である。通信データのフォーマットは、規定の通信ビットレートで送受信を行う、いわゆる調歩同期式通信を基本としている。データ送信を行っていない非送信状態では、信号レベルはHiに維持されている。データの送信開始をデータ受信側に通知するために、信号レベルを1ビット期間(スタートビットST)だけLoにする。続く2ビット目から9ビット目までの8ビット期間で1バイトのデータを送信する。データのビット配列は、MSBファーストフォーマットとして、最上位のデータD7から始まり、順にデータD6、データD5と続き、最下位のデータD0で終わる。続く10ビット目には、1ビットのパリティ情報PA(パリティビット)が付加されている。最後にデータの送信終了を受信側に通知するために、信号レベルを1ビット期間(ストップビットSP)だけHiにする。ストップビットSPにより、スタートビットSTにより開始された1フレームデータの送信期間が終了する。なお、図3において通信データのフォーマットを例示したが、通信データのフォーマットは、これには限定されない。例えば、データのビット配列は、LSBファーストフォーマットであってもよい。また、データは、9ビット長でもよい。また、通信データのフォーマットは、パリティ情報PAを含まなくてもよい。また、後述するブロードキャスト通信やP2P通信とは、通信データのフォーマットを異ならせてもよい。
<ブロードキャスト通信方式(第1通信方式)>
図4を参照して、カメラマイコン205、レンズマイコン111およびアダプタマイコン302の間で行われるブロードキャスト通信について説明する。図4は、ブロードキャスト通信における信号波形を例示する図である。ブロードキャスト通信方式(第1通信方式)は、カメラマイコン205、レンズマイコン111およびアダプタマイコン302のうちの1つのマイコンから他の複数のマイコンに対して同時にデータを送信する(1対多の一斉配信を行う)通信方式である。図4は、カメラマイコン205からレンズマイコン111およびアダプタマイコン302へのブロードキャスト通信に応答してアダプタマイコン302からカメラマイコン205およびレンズマイコン111へブロードキャスト通信が行われる場合を例示している。
まず、通信メインデバイスであるカメラマイコン205は、ブロードキャスト通信を開始することを通信サブデバイスであるレンズマイコン111およびアダプタマイコン302に通知するために、信号線CSへのLo出力(Loレベル信号の出力)を開始する。次に、カメラマイコン205は、送信するデータを信号線DATAに出力する。一方、レンズマイコン111とアダプタマイコン302とは、信号線DATAから入力されたスタートビットSTを検出した場合に、信号線CSへのLo出力を開始する。なお、この時点では既にカメラマイコン205が信号線CSへのLo出力を開始しているので、信号線CSの信号レベルは変化しない。
カメラマイコン205は、ストップビットSPまでの出力を終了した後、信号線CSへのLo出力を解除する、すなわち、信号線CSへのHi出力(Hiレベル信号の出力)に切り替える。一方、レンズマイコン111とアダプタマイコン302とは、信号線DATAから入力されたストップビットSPまでの受信を終了した後、受信したデータの解析および受信したデータに紐づけられた内部処理を行う。その後、レンズマイコン111とアダプタマイコン302とは、次のデータを受信するための準備を整えた後、信号線CSへのLo出力を解除する。前述したように、信号線CSの信号レベルは、カメラマイコン205、レンズマイコン111およびアダプタマイコン302の全てが信号線CSへのLo出力を解除することによりHiとなる。したがって、信号線CSの信号レベルがHiとなることを確認することにより、全てのマイコンが今回の通信に関する処理を終了し、次の通信を行うための準備を整えたことを判断することができる。
アダプタマイコン302は、信号線CSの信号レベルがHiに戻ったことを確認した後、ブロードキャスト通信を開始することをカメラマイコン205およびレンズマイコン111に通知するために、信号線CSへのLo出力を開始する。次に、アダプタマイコン302は、送信するデータを信号線DATAに出力する。一方、カメラマイコン205とレンズマイコン111とは、信号線DATAから入力されたスタートビットSTを検出した場合に、信号線CSへのLo出力を開始する。なお、この時点ではすでにアダプタマイコン302が信号線CSへのLo出力を開始しているので、信号線CSの信号レベルは変化しない。
アダプタマイコン302は、ストップビットSPまでの出力を終了した後、信号線CSへのLo出力を解除する。一方、カメラマイコン205とレンズマイコン111とは、信号線DATAから入力されたストップビットSPまでの受信を終了した後、受信したデータの解析および受信したデータに紐づけられた内部処理を行う。その後、カメラマイコン205とレンズマイコン111とは、次のデータを受信するための準備を整えた後、信号線CSへのLo出力を解除する。
以上のように、ブロードキャスト通信において信号線CSを用いて伝搬する信号は、ブロードキャスト通信および当該通信に係る内部処理を実行中であることを示す制御信号として機能する。
なお、図4においてブロードキャスト通信の信号波形を例示したが、当該信号波形は、それには限定されない。例えば、一度のブロードキャスト通信で送信するデータ量は、1バイトに替えて、2バイトや3バイト等としてもよい。また、ブロードキャスト通信は、通信メインデバイスであるカメラマイコン205から通信サブデバイスであるレンズマイコン111およびアダプタマイコン302への一方向に限定した通信としてもよい。
<P2P通信方式(第2通信方式)>
図5を参照して、カメラマイコン205、レンズマイコン111およびアダプタマイコン302の間で行われるP2P通信を説明する。図5は、P2P通信における信号波形を例示する図である。P2P通信は、Peer to Peer通信またはピア・トゥ・ピア通信の略記である。第2通信方式は、カメラマイコン205と、レンズマイコン111およびアダプタマイコン302の中からカメラマイコン205により指定された1つのマイコンとの間のみでデータの送受信(双方向通信)を行う(1対1の個別配信を行う)通信方式である。図5は、カメラマイコン205により通信相手としてレンズマイコン111が指定されている場合を示している。また、図5は、カメラマイコン205からレンズマイコン111への1バイトのデータ送信に応答する形でレンズマイコン111からカメラマイコン205への2バイトのデータ送信が行われる場合を示している。なお、通信相手の指定や切り換えの手順等は、後述する。
まず、通信メインデバイスであるカメラマイコン205は、送信するデータを信号線DATAに出力する。カメラマイコン205は、ストップビットSPまでの出力を終了した後、信号線CSへのLo出力を開始する。その後、カメラマイコン205は、次のデータの受信準備を整えた後、信号線CSへのLo出力を解除する。レンズマイコン111は、信号線CSから入力されたLo信号を検出した後、信号線DATAから入力された受信データの解析および受信したデータに紐づけられた内部処理を行う。レンズマイコン111は、信号線CSの信号レベルがHiに戻ったことを確認した後、送信すべきデータを2バイト分連続で信号線DATAに出力する。レンズマイコン111は、2バイト目のストップビットSPまでの出力を終了した後、信号線CSへのLo出力を開始する。その後、レンズマイコン111は、次のデータの受信準備を整えた後、信号線CSへのLo出力を解除する。なお、P2P通信の通信相手として指定されていないアダプタマイコン302は、信号線CSおよび信号線DATAに対する操作は一切行っていない。
以上のように、P2P通信において信号線CSを用いて伝搬する信号は、送信側の送信終了および次のデータ送信の待機要求を示す制御信号として機能する。なお、図5は、P2P通信の信号波形を例示したが、当該信号波形は、それには限定されない。例えば、一度のP2P通信で送信するデータ量は、2バイトに替えて、1バイトや3バイト以上であってもよい。
<通信方式の切り換え>
図6を参照して、カメラマイコン205、レンズマイコン111およびアダプタマイコン302の間で行われるブロードキャスト通信とP2P通信との相互の切り換え、およびP2P通信での通信相手の指定方法を説明する。図6は、通信方式を切り換える場合の信号波形を例示する図である。P2P通信での通信相手の指定は、ブロードキャスト通信で行われる。以下の説明では、カメラマイコン205によりP2P通信の通信相手としてアダプタマイコン302が指定された後、カメラマイコン205からの送信とアダプタマイコン302からの返信とがP2P通信により実行される。つづいて、カメラマイコン205によりP2P通信の通信相手としてレンズマイコン111が指定された後、カメラマイコン205からの送信とレンズマイコン111からの返信とがP2P通信により実行される。
まず、通信メインデバイスであるカメラマイコン205は、図4を参照して説明した手順でブロードキャスト通信を実行する。このブロードキャスト通信で通知(送信)するのは、次のP2P通信でカメラマイコン205と通信を行う相手を指定するサブデバイス指定データ(通信相手指定データ)である。通信サブデバイスであるレンズマイコン111およびアダプタマイコン302は、それぞれ、ブロードキャスト通信で受信したサブデバイス指定データに基づいて、P2P通信の通信相手として指定されたかを判断する。このブロードキャスト通信によって、カメラマイコン205および指定された通信サブデバイスにおいては、ブロードキャスト通信からP2P通信に切り替わる。ここでは、通信相手としてアダプタマイコン302が指定されているため、図5を参照して説明した手順でカメラマイコン205とアダプタマイコン302との間でP2P通信によりデータの送受信が行われる。前述したように、まず、カメラマイコン205がアダプタマイコン302にデータを送信し、その後、アダプタマイコン302がカメラマイコン205にデータを送信する。
カメラマイコン205とアダプタマイコン302との間のP2P通信が終了すると、カメラマイコン205は、ブロードキャスト通信によってP2P通信の通信相手としてレンズマイコン111を指定する。このブロードキャスト通信によって、アダプタマイコン302は、P2P通信を終了し、レンズマイコン111においては、ブロードキャスト通信からP2P通信に切り替わる。ここで、ブロードキャスト通信が実行されない場合、カメラマイコン205とアダプタマイコン302との間のP2P通信が継続されることになる。ここでは、上記のブロードキャスト通信が実行されたため、図5を参照して説明した手順でカメラマイコン205とレンズマイコン111との間でP2P通信によりデータの送受信が行われる。前述したように、まず、カメラマイコン205がレンズマイコン111にデータを送信し、その後、レンズマイコン111がカメラマイコン205にデータを送信する。
<ブロードキャスト通信およびP2P通信の処理の流れ>
ブロードキャスト通信及びP2P通信について、カメラマイコン205、レンズマイコン111およびアダプタマイコン302の間で行われる通信の手順(処理の流れ)を説明する。まず、図7および図8を参照して、ブロードキャスト通信における処理の流れを説明する。ここで、図7は、ブロードキャスト通信における通信メインデバイスの処理の流れを例示する図であり、図8は、ブロードキャスト通信における通信サブデバイスの処理の流れを例示する図である。
まず、通信メインデバイスとしてのカメラマイコン205の処理の流れを説明する。ステップS100では、カメラマイコン205は、ブロードキャスト通信を開始するイベントが発生したかを判断(判定)する。イベントが発生した場合、ステップS101に処理が進められ、イベントが発生していない場合、ステップS100の処理が繰り返される。
ステップS101では、カメラマイコン205は、接地スイッチ2081をオン(接続)として信号線CSへのLo出力を開始する。これにより、レンズマイコン111およびアダプタマイコン302に対してブロードキャスト通信の開始が通知される。
ステップS102では、カメラマイコン205は、入出力切り換えスイッチ2082を操作し、信号線DATAをカメラマイコン205のデータ出力部に接続する。
ステップS103では、カメラマイコン205は、データ送信を開始する。
ステップS104では、カメラマイコン205は、ステップS103で送信したデータに、送信要求コマンドが含まれているかを判断する。送信要求コマンドとは、通信メインデバイスとしてのカメラマイコン205から送信されたデータを受信した通信サブデバイスに対して、カメラマイコン205へのデータ送信を要求するコマンドである。送信要求コマンドが含まれている場合、ステップS106に処理が進められ、送信要求コマンドが含まれていない場合、ステップS105に処理が進められる。
ステップS105では、カメラマイコン205は、接地スイッチ2081をオフ(遮断)として信号線CSへのLo出力を解除する。
ステップS106では、カメラマイコン205は、入出力切り換えスイッチ2082を操作し、信号線DATAをカメラマイコン205のデータ入力部に接続する。
ステップS107では、カメラマイコン205は、接地スイッチ2081をオフ(遮断)として信号線CSへのLo出力を解除する。
ステップS108では、カメラマイコン205は、信号線CSの信号レベルがHiであるかを判断する。信号レベルがHiである場合、ステップS109に処理が進められ、信号レベルがHiでない場合、ステップS108の処理が繰り返される。
ステップS109では、カメラマイコン205は、信号線CSの信号レベルがLoであるかを判断する。信号レベルがLoである場合、ステップS110に処理が進められ、信号レベルがLoでない場合、ステップS109の処理が繰り返される。
ステップS110では、カメラマイコン205は、信号線DATAからのデータ受信を許可する。
ステップS111では、カメラマイコン205は、信号線DATAからのスタートビットの受信を検出したかを判断する。スタートビットの受信を検出した場合、ステップS112に処理が進められ、スタートビットの受信を検出していない場合、ステップS111の処理が繰り返される。
ステップS112では、カメラマイコン205は、接地スイッチ2081をオン(接続)として信号線CSへのLo出力を開始する。
ステップS113では、カメラマイコン205は、全データを受信したかを判断する。全データを受信した場合、ステップS114に処理が進められ、全データを受信していない場合、ステップS113の処理が繰り返される。
ステップS114では、カメラマイコン205は、信号線DATAからのデータ受信を禁止する。
ステップS115では、カメラマイコン205は、接地スイッチ2081をオフ(遮断)として信号線CSへのLo出力を解除する。
ステップS116では、カメラマイコン205は、信号線CSの信号レベルがHiであるかを判断する。信号レベルがHiである場合、ステップS117に処理が進められ、信号レベルがHiでない場合、ステップS116の処理が繰り返される。
ステップS117では、カメラマイコン205は、ステップS103で送信したデータが、通信相手を指定するサブデバイス指定データであったかを判断する。サブデバイス指定データであった場合、ステップS118に処理が進められ、サブデバイス指定データでなかった場合、本処理を終了する。
ステップS118では、カメラマイコン205は、ブロードキャスト通信方式からP2P通信方式への移行を行う。
次に、通信サブデバイスとしてのアダプタマイコン302の処理の流れを説明する。通信サブデバイスとしてのレンズマイコン111の処理の流れは、アダプタマイコン302におけるものと同様であるため、説明は省略する。
ステップS200では、アダプタマイコン302は、信号線CSの信号レベルがLoであるかを判断する。信号レベルがLoである場合、ステップS201に処理が進められ、信号レベルがLoでない場合、ステップS200の処理が繰り返される。
ステップS201では、アダプタマイコン302は、ブロードキャスト通信として、信号線DATAからのデータ受信を許可する。
ステップS202では、アダプタマイコン302は、信号線DATAからスタートビットの受信を検出したかを判断する。スタートビットの受信を検出した場合、ステップS205に処理が進められ、スタートビットの受信を検出していない場合、ステップS203に処理が進められる。
ステップS203では、アダプタマイコン302は、信号線CSの信号レベルがHiであるかを判断する。信号レベルがHiである場合、ステップS204に処理が進められ、信号レベルがHiでない場合、ステップS202に処理が戻される。
ステップS204では、アダプタマイコン302は、信号線DATAからのデータ受信を禁止する。
ここで、ステップS203およびステップS204の処理を行うのは、カメラマイコン205とレンズマイコン111との間でP2P通信が行われ、アダプタマイコン302のみがブロードキャスト通信のみを行う状況に対応するためである。この状況では、アダプタマイコン302は、カメラマイコン205からデータを受信することはない。
ステップS205では、アダプタマイコン302は、接地スイッチ3031をオン(接続)として信号線CSへのLo出力を開始する。
ステップS206では、アダプタマイコン302は、全データを受信したかを判断する。全データを受信した場合、ステップS207に処理が進められ、全データを受信していない場合、ステップS206の処理が繰り返される。
ステップS207では、アダプタマイコン302は、信号線DATAからのデータ受信を禁止する。
ステップS208では、アダプタマイコン302は、接地スイッチ3031をオフ(遮断)として信号線CSへのLo出力を解除する。
ステップS209では、アダプタマイコン302は、ステップS206で受信したデータに、送信要求コマンドが含まれるかを判断する。送信要求コマンドが含まれている場合、ステップS210に処理が進められ、送信要求コマンドが含まれていない場合、ステップS215に処理が進められる。
ステップS210では、アダプタマイコン302は、信号線CSの信号レベルがHiであるかを判断する。信号レベルがHiである場合、ステップS211に処理が進められ、信号レベルがHiでない場合、ステップS210の処理が繰り返される。
ステップS211では、アダプタマイコン302は、接地スイッチ3031をオン(接続)として信号線CSへのLo出力を開始する。
ステップS212では、アダプタマイコン302は、入出力切り換えスイッチ3032を操作し、信号線DATAをアダプタマイコン302のデータ出力部に接続する。
ステップS213では、アダプタマイコン302は、データ送信を開始する。
ステップS214では、アダプタマイコン302は、接地スイッチ3031をオフ(遮断)として信号線CSへのLo出力を解除する。
ステップS215では、アダプタマイコン302は、信号線CSの信号レベルがHiであるかを判断する。信号レベルがHiである場合、ステップS216に処理が進められ、信号レベルがHiでない場合、ステップS215の処理が繰り返される。
ステップS216では、アダプタマイコン302は、ステップS206で受信したデータがサブデバイス指定データであり、かつP2P通信におけるカメラマイコン205の通信相手として自身が指定されたかを判断する。データがサブデバイス指定データであり、かつ当該通信相手として自身が指定された場合、ステップS217に処理が進められ、データがサブデバイス指定データでない場合または当該通信相手として自身が指定されていない場合、本処理を終了する。
ステップS217では、アダプタマイコン302は、ブロードキャスト通信方式からP2P通信方式への移行を行う。
図9および図10を参照して、通常のP2P通信における処理の流れを説明する。ここで、図9は、P2P通信における通信メインデバイスの処理の流れを例示する図であり、図10は、P2P通信における通信サブデバイスの処理の流れを例示する図である。
まず、通信メインデバイスとしてのカメラマイコン205の処理の流れを説明する。ステップS300では、カメラマイコン205は、P2P通信を開始するイベントが発生したかを判断する。イベントが発生した場合、ステップS301に処理が進められ、イベントが発生していない場合、ステップS300の処理が繰り返される。
ステップS301では、カメラマイコン205は、入出力切り換えスイッチ2082を操作し、信号線DATAをカメラマイコン205のデータ出力部に接続する。
ステップS302では、カメラマイコン205は、通信メインデバイスによるP2Pバースト通信における送信を行うかを判断する。当該送信を行う場合はステップS303に処理が進められ、当該送信を行わない場合は、ステップS304に処理が進められる。
ステップS303では、カメラマイコン205は、通信メインデバイスによるP2Pバースト通信における送信を行い、その後、S305へ処理が進められる。通信メインデバイスによるP2Pバースト通信における送信の詳細は後述する。
ステップS304では、カメラマイコン205は、データ送信を開始する。
ステップS305では、カメラマイコン205は、接地スイッチ2081をオン(接続)として信号線CSへのLo出力を開始する。
ステップS306では、カメラマイコン205は、ステップS304で送信したデータに、送信要求コマンドが含まれているかを判断する。送信要求コマンドが含まれている場合、ステップS309に処理が進められ、送信要求コマンドが含まれていない場合、ステップS307に処理が進められる。
ステップS307では、カメラマイコン205は、接地スイッチ2081をオフ(遮断)として信号線CSへのLo出力を解除する。
ステップS308では、カメラマイコン205は、信号線CSの信号レベルがLoであるかを判断する。信号レベルがLoである場合、ステップS316に処理が進められ、信号レベルがLoでない場合、ステップS308の処理が繰り返される。
ステップS309では、カメラマイコン205は、入出力切り換えスイッチ2082を操作し、信号線DATAをカメラマイコン205のデータ入力部に接続する。
ステップS311では、カメラマイコン205は、接地スイッチ2081をオフ(遮断)として信号線CSへのLo出力を解除する。
ステップS312では、カメラマイコン205は、通信メインデバイスによるP2Pバースト通信における受信を行うかを判断する。当該受信を行う場合、ステップS313に処理が進められ、当該受信を行わない場合、ステップS314に処理が進められる。
ステップS313では、カメラマイコン205は、通信メインデバイスによるP2Pバースト通信における受信を行い、その後、ステップS315へ処理が進められる。通信メインデバイスによるP2Pバースト通信における受信の処理の詳細は後述する。
ステップS314では、カメラマイコン205は、信号線CSの信号レベルがLoであるかを判断する。信号レベルがLoである場合、ステップS315に処理が進められ、信号レベルがLoでない場合、ステップS314の処理が繰り返される。
ステップS315では、カメラマイコン205は、信号線DATAから受信したデータの解析を行う。
ステップS316では、カメラマイコン205は、信号線CSの信号レベルがHiであるかを判断する。信号レベルがHiである場合、ステップS317に処理が進められ、信号レベルがHiでない場合、ステップS316の処理が繰り返される。
ステップS317では、カメラマイコン205は、ブロードキャスト通信イベントが発生したかを判断する。当該イベントが発生した場合、ステップS318に処理が進められ、当該イベントが発生していない場合、本処理を終了する。
ステップS318では、カメラマイコン205は、P2P通信からブロードキャスト通信への移行を行う。
次に、通信サブデバイスとしてのアダプタマイコン302の処理の流れを説明する。通信サブデバイスとしてのレンズマイコン111の処理の流れは、アダプタマイコン302におけるものと同様であるため、説明は省略する。ステップS400では、アダプタマイコン302は、P2P通信として、信号線DATAからのデータ受信を許可する。
ステップS401では、アダプタマイコン302は、通信サブデバイスによるP2Pバースト通信における受信を行うかを判断する。当該受信を行う場合、ステップS402に処理が進められ、当該受信を行わない場合は、ステップS403に処理が進められる。
ステップS402では、アダプタマイコン302は、通信サブデバイスによるP2Pバースト通信における受信を行い、その後、ステップS404へ処理が進められる。通信サブデバイスによるP2Pバースト通信における受信の処理の詳細は後述する。
ステップS403では、アダプタマイコン302は、信号線CSの信号レベルがLoであるかを判断する。信号レベルがLoである場合、ステップS404に処理が進められ、信号レベルがLoでない場合、ステップS403の処理が繰り返される。
ステップS404では、アダプタマイコン302は、ブロードキャスト通信として、信号線DATAからのデータ受信を許可する。
ステップS405では、アダプタマイコン302は、信号線DATAから受信したデータの解析を行う。
ステップS406では、アダプタマイコン302は、信号線CSの信号レベルがHiであるかを判定する。信号レベルがHiである場合、ステップS408に処理が進められ、信号レベルがHiでない場合、ステップS407に処理が進められる。
ステップS407では、アダプタマイコン302は、信号線DATAからスタートビットの受信を検出したかを判断する。スタートビットの受信を検出した場合、ステップS420に処理が進められ、スタートビットの受信を検出していない場合、ステップS406に処理が戻される。
ステップS408では、アダプタマイコン302は、ステップS405で受信したデータに送信要求コマンドが含まれているかを判断する。送信要求コマンドが含まれている場合、ステップS409に処理が進められ、送信要求コマンドが含まれていない場合、ステップS414に処理が進められる。
ステップS409では、アダプタマイコン302は、入出力切り換えスイッチ3032を操作し、信号線DATAをアダプタマイコン302のデータ出力部に接続する。
ステップS410では、アダプタマイコン302は、通信サブデバイスによるP2Pバースト通信における送信を行うかを判断する。当該送信を行う場合、ステップS411に処理が進められ、当該送信を行わない場合、ステップS412に処理が進められる。
ステップS411では、アダプタマイコン302は、通信サブデバイスによるP2Pバースト通信における送信を行い、その後、ステップS413へ処理が進められる。通信サブデバイスによるP2Pバースト通信における送信の処理の詳細は後述する。
ステップS412では、アダプタマイコン302は、データ送信を開始する。
ステップS413では、アダプタマイコン302は、入出力切り換えスイッチ3032を操作し、信号線DATAをアダプタマイコン302のデータ入力部に接続する。
ステップS414では、アダプタマイコン302は、接地スイッチ3031をオン(接続)として信号線CSへのLo出力を開始する。
ステップS415では、アダプタマイコン302は、ブロードキャスト通信として、信号線DATAからのデータ受信を許可する。
ステップS416では、アダプタマイコン302は、接地スイッチ3031をオフ(遮断)として信号線CSへのLo出力を解除する。
ステップS417では、アダプタマイコン302は、信号線CSの信号レベルがHiであるかを判断する。信号レベルがHiである場合、ステップS419に処理が進められ、信号レベルがHiでない場合、ステップS418に処理が進められる。
ステップS418では、アダプタマイコン302は、信号線DATAからスタートビットの受信を検出したかを判断する。スタートビットの受信を検出した場合、ステップS420に処理が進められ、スタートビットの受信を検出していない場合、ステップS417に処理が戻される。
ステップS419では、アダプタマイコン302は、ステップS405で解析された受信データに基づく処理を実行する。なお、ステップS419の処理の実行後、本処理を再度開始することで、P2P通信を継続することができる。
ステップS420では、アダプタマイコン302は、P2P通信の処理を中断する。その後、ブロードキャスト通信を行うために、図8におけるステップS205に処理が進められる。
以上のように、ブロードキャスト通信によってP2P通信の通信相手を指定することができるとともに、ブロードキャスト通信とP2P通信との間の切り換えを行うことができる。
ここで、一度のP2P通信で送信できるデータサイズは、受信側の受信バッファサイズにより制限されるため、不十分である。また、通常のP2P通信を繰り返すことにより十分なデータサイズのデータを転送できるものの、通常のP2P通信は、通信メインデバイスと通信サブデバイスとが交互にデータ送信と信号線CSによる待機要求とを行うため、過大な送信時間を要してしまう。この課題を解決するのに、次に説明するP2Pバースト通信が有用である。
<P2Pバースト通信方式(第3通信方式)>
図11ないし図13を参照して、カメラマイコン205とアダプタマイコン302との間で行われるP2Pバースト通信を説明する。ここで、図11は、P2Pバースト通信(通信サブデバイス送信)における信号波形を例示する図である。ここでは、カメラマイコン205により、ブロードキャスト通信において、P2P通信の通信相手としてアダプタマイコン302が指定される。その後、カメラマイコン205からの送信とアダプタマイコン302からの返信とを含む通常のP2P通信が実行される。さらに、その後、カメラマイコン205がP2Pバースト通信方式(第3通信方式)に移行するためのコマンドを送信する。そうすることにより、第2通信方式から第3通信方式へ移行し、アダプタマイコン302からカメラマイコン205への片方向通信としてのP2Pバースト通信(通信サブデバイス送信)におけるデータ送信が行われる。
P2P通信の通信相手を指定する処理と、通常のP2P通信(P2Pバースト通信方式によらないP2P通信)とについては、図6を参照して説明したとおりであるため、説明を省略する。当該通常のP2P通信において、後に行われるP2Pバースト通信に必要な通信規約(通信プロトコルまたは通信条件ともいう)の情報の共有が行われる。P2Pバースト通信方式(第3通信方式)では、特定のデータサイズを有するデータブロック単位でデータの通信を行う。当該データブロック単位は、特定数または可変数のデータブロックを単位でありうる。そのため、当該通信規約情報は、それには限定されないが、ブロックサイズ、ブロック間ウェイト時間(待ち時間)、フロー制御までのブロック数、トータルサイズでありうる。
ここで、ブロックとは、P2Pバースト通信方式でデータを一挙に又は集中的に通信するための単位(まとまり)であり、ブロックサイズは、1ブロックのバイト数である。ブロックサイズは、ここでは、P2Pバースト通信の受信側であるカメラマイコン205が連続して受信可能なサイズとして、16バイトとなっている。ブロック間ウェイト時間は、P2Pバースト通信の送信側であるアダプタマイコン302が、1ブロックの送信を完了した後に次の1ブロックの送信を開始するまでの時間である。ブロック間ウェイト時間は、ここでは、P2Pバースト通信の受信側であるカメラマイコン205が1ブロックの受信を完了した後に次の1ブロックの受信が可能となるまでの時間であり、100μsとなっている。
P2Pバースト通信におけるフロー制御は、P2Pバースト通信の受信側であるカメラマイコン205が信号線CSを用いて通信タイミングの通知を行うことで実現されうる。例えば、カメラマイコン205は、P2Pバースト通信以外の処理にリソースを割り当てる必要性があるため、当該処理が完了するまで通信タイミングの通知を行わない(通信の待機を要求する;通信の待機処理を行う)。当該通知を行わないことにより、通信以外の処理の時間を確保することができる。
フロー制御までのブロック数は、P2Pバースト通信を開始してフロー制御までに(または、1つのフロー制御と、その次のフロー制御との間に)授受されるブロックの数である。当該ブロック数は、ここでは、P2Pバースト通信の受信側であるカメラマイコン205が、P2Pバースト通信以外の処理を上記待機の時間に完了できるだけのものであり、4ブロックとなっている。トータルサイズは、P2Pバースト通信の送信側であるアダプタマイコン302がP2Pバースト通信において送信すべき全データのサイズである。
カメラマイコン205は、アダプタマイコン302に対して、P2Pバースト通信(通信サブデバイス送信)に移行するためのコマンドを送信する。すると、アダプタマイコン302は、カメラマイコン205との間で、前述の通信規約情報に従ったP2Pバースト通信(通信サブデバイス送信)を行う。
具体的には、カメラマイコン205は、アダプタマイコン302に対して、信号線DATAにより、P2Pバースト通信(通信サブデバイス送信)に移行するためのコマンドを送信する。その後、カメラマイコン205は、信号線CSにより、送信終了および次のデータ送信の待機要求を通知する。アダプタマイコン302は、P2Pバースト通信(通信サブデバイス送信)に移行するためのコマンドを受信すると、P2Pバースト通信(通信サブデバイス送信)により送信すべきデータの生成を行う。
カメラマイコン205は、P2Pバースト通信での受信の準備が完了すると、信号線CSにおける要求信号による通信(データ送信)の待機の要求を解除する。アダプタマイコン302は、送信すべきデータの生成が完了し、カメラマイコン205からの要求信号による待機要求が解除されると、1ブロック分(ブロックサイズ16バイト)のデータを送信する。その後、アダプタマイコン302は、ブロック間ウェイト時間(100μs)以上通信を停止する。カメラマイコン205は、1ブロック分のデータを受信すると、ブロック間ウェイト時間以内に、次の1ブロック分のデータを受信するための処理を行う。
カメラマイコン205およびアダプタマイコン302は、P2Pバースト通信の開始またはフロー制御の実行の後、以上の1ブロック分の通信処理を4回(「フロー制御までのブロック数」としての4ブロック分)行う。アダプタマイコン302は、フロー制御までのブロック数分のデータ送信が完了すると、カメラマイコン205からのフロー制御を待つ。カメラマイコン205は、フロー制御までのブロック数分のデータの受信が完了すると、受信の中断およびデータ送信の待機の要求を通知するための待機要求信号を信号線CSにおける待機要求信号を出力する。そして、P2Pバースト通信でのデータ受信の準備が完了すると、信号線CSにおける待機要求信号を解除してフロー制御を完了する。
カメラマイコン205およびアダプタマイコン302は、当該フロー制御をはさみながら、トータルサイズ分のデータ転送が完了するまで通信処理を行う。カメラマイコン205は、トータルサイズ分の受信が完了すると、アダプタマイコン302による、信号線CSにおける、送信の終了およびデータ送信の待機の要求を通知するための待機要求信号を待つ。アダプタマイコン302は、トータルサイズ分のデータ転送が完了すると、信号線CSにおいて、送信の終了およびデータ送信の待機の要求を通知するための待機要求信号出力し、その後解除する。そうすることにより、P2Pバースト通信(通信サブデバイス送信)が完了する。
<P2Pバースト通信(通信サブデバイス送信)における処理の流れ>
図12ないし図13を参照して、P2Pバースト通信(サブデバイス送信)における処理の流れを説明する。図12は、P2Pバースト通信(通信サブデバイス送信)における通信メインデバイスの処理の流れを例示する図である。図13は、P2Pバースト通信(通信サブデバイス送信)における通信サブデバイスの処理の流れを例示する図である。まず、図12を参照して、通信メインデバイスとしてのカメラマイコン205の処理の流れを説明する。
まず、ステップS500では、カメラマイコン205は、データの受信処理を行い、S501へと進む。
ステップS501では、カメラマイコン205は、トータルサイズ分のデータ受信が完了したかを判断する。当該データ受信が完了した場合、ステップS511へ処理が進められ、当該データ受信が完了していない場合、ステップS502へ処理が進められる。
ステップS502では、カメラマイコン205は、信号線CSの信号レベルがLoであるかを判断する。信号レベルがLoである場合、処理を終了し、信号レベルがLoでない場合、ステップS503へ処理が進められる。
ステップS503では、カメラマイコン205は、ブロックサイズ分のデータ受信が完了したかを判断する。当該データ受信が完了した場合、ステップS504へ処理が進められ、当該データ受信が完了していない場合、ステップS500へ処理が戻される。
ステップS504では、カメラマイコン205は、フロー制御までのブロック数分のデータ受信が完了したかを判断する。当該データ受信が完了した場合、ステップS507へ処理が進められ、当該データ受信が完了していない場合、ステップS505へ処理が進められる。
ステップS505では、カメラマイコン205は、通信以外の処理を行う必要が有るかを判断する。当該処理を行う必要がある場合、ステップS507へ処理が進められ、当該処理を行う必要がない場合、ステップS506へ処理が進められる。
ステップS506では、カメラマイコン205は、P2Pバースト通信における受信データの処理を実施する。その後、ステップS500へ処理が進められる。当該受信データ処理は、受信データを退避し、次のブロックのデータを受信できるようにする処理である。この処理は、前述のブロック間ウェイト時間内に必ず完了する必要がある。
ステップS507では、カメラマイコン205は、接地スイッチ2081をオン(接続)として、信号線CSへのLo出力を開始する。
ステップS508では、カメラマイコン205は、ステップS506とは同様の受信データ処理を実行する。
ステップS509では、カメラマイコン205は、通信以外の処理を実行する。
ステップS510では、カメラマイコン205は、接地スイッチ2081をオフ(遮断)として、信号線CSへのLo出力を解除する。
ステップS511では、カメラマイコン205は、信号線CSの信号レベルがLoであるかを判断する。信号レベルがLoである場合、処理を終了し、信号レベルがLoでない場合、ステップS511の処理が繰り返される。
図13を参照して、通信サブデバイスとしてのアダプタマイコン302の処理の流れを説明する。通信サブデバイスとしてのレンズマイコン111の処理の流れは、アダプタマイコン302のものとは同様であるため、説明を省略する。
まず、ステップS600では、アダプタマイコン302は、データ送信を開始する。
ステップS601では、アダプタマイコン302は、トータルサイズ分のデータ送信を完了したかを判断する。当該データ送信が完了した場合、処理が終了となり、当該データ送信が完了していない場合、ステップS602へ処理が進められる。
ステップS602では、アダプタマイコン302は、ブロックサイズ分のデータ送信が完了したかを判断する。当該データ送信が完了した場合、ステップS603へ処理が進められ、当該データ送信が完了していない場合、ステップS600へ処理が戻される。
ステップS603では、アダプタマイコン302は、フロー制御までのブロック数分のデータ送信が完了したかを判断する。当該データ送信が完了した場合、ステップS607へ処理が進められ、当該データ送信が完了していない場合、ステップS604へ処理が進められる。
ステップS604では、アダプタマイコン302は、信号線CSの信号レベルがLoであるかを判断する。信号レベルがLoである場合、ステップS606へ処理が進められ、信号レベルがLoでない場合、ステップS605へ処理が進められる。
ステップS605では、アダプタマイコン302は、ブロック間ウェイト時間が経過したか判断する。当該時間が経過した場合、ステップS600へ処理が戻され、当該時間が経過していない場合、ステップS604へ処理が戻される。
ステップS606では、アダプタマイコン302は、入出力切り換えスイッチ3032を操作してアダプタマイコン302のデータ入力部に信号線DATAを接続する。その後、ステップS609へ処理が進められる。
ステップS607では、アダプタマイコン302は、入出力切り換えスイッチ3032を操作し、アダプタマイコン302のデータ入力部に信号線DATAを接続する。
ステップS608では、アダプタマイコン302は、信号線CSの信号レベルがLoであるかを判断する。信号レベルがLoである場合、ステップS609に処理が進められ、信号レベルがLoでない場合、ステップS608の処理が繰り返される。
ステップS609では、アダプタマイコン302は、ブロードキャスト通信における信号線DATAからのデータ受信を許可する。
ステップS610では、アダプタマイコン302は、信号線CSの信号レベルがHiであるかを判断する。信号レベルがHiである場合、ステップS612に処理が進められ、信号レベルがHiでない場合、ステップS611に処理が進められる。
ステップS611では、アダプタマイコン302は、信号線DATAからスタートビットの受信が検出されたかを判断する。スタートビットの受信が検出された場合、ステップS613に処理が進められ、スタートビットの受信が検出されていない場合、ステップS610に処理が戻される。
ステップS612では、アダプタマイコン302は、入出力切り換えスイッチ3032を操作してアダプタマイコン302のデータ出力部に信号線DATAを接続する。
ステップS613では、アダプタマイコン302は、P2P通信の処理を中断する。その後、ブロードキャスト通信を行うために、図8のステップS205に処理が進められる。
ここで、カメラマイコン205とアダプタマイコン302とが互いにP2Pバースト通信を行っている最中におけるレンズマイコン111の動作を、図8を参照して説明する。カメラマイコン205によるブロードキャスト通信において、P2P通信の通信相手としてアダプタマイコン302が指定されると、レンズマイコン111は、ステップS216において、通信サブデバイスとして指定されていないと判断する。そのため、レンズマイコン111は、P2P通信方式へ移行しないこととなる。したがって、つづく通常のP2P通信や、その後のP2Pバースト通信においては、信号線CSがLoとなっている間に信号線DATAがHi以外となることがない。そのため、ステップS202でスタートビットを受信したと判断されることがなく、ステップS200、ステップS201、ステップS202、ステップS203、ステップS204を順次遷移することになる。すなわち、カメラマイコン205とアダプタマイコン302とは、P2Pバースト通信の相手ではないレンズマイコン111等の通信サブデバイスが接続されていても、問題なくP2Pバースト通信を行うことができる。また、以上説明したように、P2P通信の通信相手としてアダプタマイコン302が指定されている場合、レンズマイコン111の処理には、P2Pバースト通信への移行を判断する処理(ステップS401と同様の処理)が含まれない。そのため、ブロードキャスト通信および通常のP2P通信のみに対応した従来の交換レンズ(レンズマイコン)が接続されている場合にも、カメラマイコン205とアダプタマイコン302との間で支障なくP2Pバースト通信を行うことができる。
以上説明したように、本実施形態では、信号線CSと信号線DATAとの2つの信号線で通信を行うシステムにおいて、ブロードキャスト通信方式とP2P通信方式との間で、信号線CS上を伝搬する信号を切り替えている。これにより、カメラマイコン205とレンズマイコン111やアダプタマイコン302との間の複数の通信方式を、信号線を増やすことなく実現することができる。また、通常のP2P通信とは異なるP2Pバースト通信(通信サブデバイス送信)を、信号線を増やすことなく実現することができる。
<P2Pバースト通信方式(通信メインデバイス送信)への切り替え>
図14ないし図16を参照して、カメラマイコン205とアダプタマイコン302との間で行われるP2Pバースト通信の切り替え、およびP2Pバースト通信の別の例を説明する。ここで、図14は、P2Pバースト通信(通信メインデバイス送信)における信号波形を例示する図である。また、図15は、P2Pバースト通信(通信メインデバイス送信)における通信メインデバイスの処理の流れを例示する図である。また、図16は、P2Pバースト通信(通信メインデバイス送信)における通信サブデバイスの処理の流れを例示する図である。
図14は、通信メインデバイスとしてのカメラマイコン205から通信サブデバイスとしてのアダプタマイコン302へデータ送信を行うP2Pバースト通信における信号波形を示している。ここでは、カメラマイコン205によるブロードキャスト通信においてP2P通信の通信相手としてアダプタマイコン302が指定され、その後、カメラマイコン205からの送信とアダプタマイコン302からの返信を含む通常のP2P通信が実行される。その後、カメラマイコン205からP2Pバースト通信(通信メインデバイス送信)によりデータ送信が行われ、その後、アダプタマイコン302からカメラマイコン205へ当該データ送信に関する返信が行われる。
P2P通信の通信相手を指定する処理と、通常のP2P通信については、図6を参照して前述したため、説明を省略する。当該P2P通信において、後に行われるP2Pバースト通信(通信メインデバイス送信)に必要な通信規約の情報の共有が行われる。当該通信規約情報の種類は、前述したP2Pバースト通信(通信サブデバイス送信)におけるものと同じでありうるものであり、ここでは、ブロックサイズ、ブロック間ウェイト時間、フロー制御までのブロック数、トータルサイズとしている。ブロックサイズは、ここでは、P2Pバースト通信の受信側におけるアダプタマイコン302が連続して受信可能なサイズとして、8バイトとなっている。また、ブロック間ウェイト時間は、ここでは、150μsとなっている。なお、ここでは、フロー制御までのブロック数が1となっているため、1ブロック送信後に必ずフロー制御が行われるため、ブロック間ウェイト時間は使用されない。トータルサイズは、P2Pバースト通信(通信メインデバイス送信)においてカメラマイコン205がアダプタマイコン302に送信すべきデータのサイズである。
アダプタマイコン302は、規約情報の共有を行うP2P通信における返信を行うと、P2Pバースト通信(通信メインデバイス送信)におけるデータ受信の準備を行い、当該準備が完了すると、信号線CSにおけるデータ送信に対する待機要求信号を解除する。カメラマイコン205は、アダプタマイコン302による待機要求信号の解除に基づいて、P2Pバースト通信(通信メインデバイス送信)を開始し、まずは1ブロック分(ブロックサイズ8バイト)のデータを送信する。フロー制御までのブロック数が1であるため、1ブロック送信後に、ブロック間ウェイト時間だけ待つのではなく、アダプタマイコン302によるフロー制御に従う。
アダプタマイコン302は、フロー制御までのブロック数分のデータ受信が完了すると、信号線CSに対して受信の中断およびデータ送信待機の要求を示す待機要求信号を出力する。そして、アダプタマイコン302は、P2Pバースト通信(通信メインデバイス送信)におけるデータ受信の準備が完了すると、信号線CSにおける待機要求信号を解除する。
カメラマイコン205およびアダプタマイコン302は、前述したフロー制御までの処理をトータルサイズ分のデータ通信が完了するまで繰り返す。アダプタマイコン302は、トータルサイズ分のデータ受信が完了すると、カメラマイコン205による、信号線CSに対する、送信の終了およびデータ送信待機の要求を示す待機要求信号の出力を待つ。カメラマイコン205は、トータルサイズ分のデータ送信が完了すると、信号線CSに対して当該待機要求信号の出力を行う。アダプタマイコン302は、カメラマイコン205による当該待機要求信号の解除に基づいて、P2Pバースト通信(通信メインデバイス送信)における受信結果に関するデータ送信を行う。そして、アダプタマイコン302は、信号線CSに対して、送信の終了およびデータ送信待機の要求を示す待機要求信号を出力した後、当該待機要求信号を解除することにより、P2Pバースト通信(通信メインデバイス送信)が終了する。
<P2Pバースト通信(通信メインデバイス送信)の処理の流れ>
図15ないし図16を参照して、P2Pバースト通信(通信メインデバイス送信)における処理の流れを説明する。図15は、P2Pバースト通信(通信メインデバイス送信)における通信メインデバイスの処理の流れを例示する図であり、図16は、P2Pバースト通信(通信メインデバイス送信)における通信サブデバイスの処理の流れを例示する図である。
まず、図15を参照して、通信メインデバイスとしてのカメラマイコン205の処理の流れを説明する。ステップS700では、カメラマイコン205は、データ送信を開始する。
ステップS701では、カメラマイコン205は、トータルサイズ分のデータ送信が完了したかを判断する。当該データ送信が完了した場合、処理が終了し、当該データ送信が完了していない場合、ステップS702へ処理が進められる。
ステップS702では、カメラマイコン205は、ブロックサイズ分のデータ送信が完了したかを判断する。当該データ送信が完了した場合、ステップS703へ処理が進められ、当該データ送信が完了していない場合、ステップS700へ処理が戻される。
ステップS703では、カメラマイコン205は、フロー制御までのブロック数分のデータ送信が完了したかを判断する。当該データ送信が完了した場合、ステップS706へ処理が進められ、当該データ送信が完了していない場合、ステップS704へ処理が進められる。
ステップS704では、カメラマイコン205は、信号線CSの信号レベルがLoであるかを判断する。信号レベルがLoである場合、ステップS707へ処理が進められ、信号レベルがLoでない場合、ステップS705へ処理が進められる。
ステップS705では、カメラマイコン205は、ブロック間ウェイト時間が経過したか判断する。当該時間が経過した場合、ステップS700へ処理が戻され、当該時間が経過していない場合、ステップS704へ処理が戻される。
ステップS706では、カメラマイコン205は、信号線CSの信号レベルがLoであるかを判断する。信号レベルがLoである場合、ステップS707に処理が進められ、信号レベルがLoでない場合、ステップS706の処理が繰り返される。
ステップS707では、カメラマイコン205は、信号線CSの信号レベルがHiであるかを判断する。信号レベルがHiである場合、ステップS700に処理が戻され、信号レベルがHiでない場合、ステップS707の処理が繰り返される。
つづいて、図16を参照して、通信サブデバイスとしてのアダプタマイコン302の処理の流れを説明する。レンズマイコン111の処理の流れは、アダプタマイコン302におけるものと同様であるため、説明を省略する。まず、ステップS800では、アダプタマイコン302は、データの受信処理を行う。
ステップS801では、アダプタマイコン302は、トータルサイズ分のデータ受信が完了したかを判断する。当該データ受信が完了した場合、ステップS816へ処理が進められ、当該データ受信が完了していない場合、ステップS802へ処理が進められる。
ステップS802では、アダプタマイコン302は、信号線CSの信号レベルがLoであるかを判断する。信号レベルがLoである場合、処理が終了し、信号レベルがLoでない場合、ステップS803へ処理が進められる。
ステップS803では、アダプタマイコン302は、ブロックサイズ分のデータ受信が完了したかを判断する。当該データ受信が完了した場合、ステップS804へ処理が進められ、当該データ受信が完了していない場合、ステップS800へ処理が戻される。
ステップS804では、アダプタマイコン302は、フロー制御までのブロック数分のデータ受信が完了したかを判断する。当該データ受信が完了した場合、ステップS807へ処理が進められ、当該データ受信が完了していない場合、ステップS805へ処理が進められる。
ステップS805では、アダプタマイコン302は、通信以外の処理を行う必要があるかを判断する。通信以外の処理を行う必要がある場合、ステップS807へ処理が進められ、通信以外の処理を行う必要がない場合、ステップS806へ処理が進められる。
ステップS806では、アダプタマイコン302は、受信データの処理を実行する。その後、ステップS800へ処理が進められる。当該受信データの処理は、当該受信データを退避させ、次のブロックのデータを受信できるようにするためのものである。当該処理は、前述のブロック間ウェイト時間内に必ず完了する必要がある。
ステップS807では、アダプタマイコン302は、接地スイッチ2081をオン(接続)として信号線CSへのLo出力を開始する。
ステップS808では、アダプタマイコン302は、ブロードキャスト通信における信号線DATAからのデータ受信を許可する。
ステップS809では、アダプタマイコン302は、ステップS806とは同様の受信データの処理を実行する。
ステップS810では、アダプタマイコン302は、通信以外の処理を実行する。
ステップS811では、アダプタマイコン302は、接地スイッチ2081をオフ(遮断)として信号線CSへのLo出力を解除する。
ステップS812では、アダプタマイコン302は、信号線CSの信号レベルがHiであるかを判断する。信号レベルがHiである場合、ステップS814に処理が進められ、信号レベルがHiでない場合、ステップS813に処理が進められる。
ステップS813では、アダプタマイコン302は、信号線DATAからスタートビットの受信が検出されたかを判断する。スタートビットの受信が検出された場合、ステップS815に処理が進められ、スタートビットの受信が検出されていない場合、ステップS812に処理が進められる。
ステップS814では、アダプタマイコン302は、P2P通信における信号線DATAからのデータ受信を許可する。
ステップS815では、アダプタマイコン302は、P2P通信を中断する。その後、ブロードキャスト通信を行うために、図8のステップS205に処理が進められる。なお、カメラマイコン205とアダプタマイコン302とが互いにP2Pバースト通信(通信メインデバイス送信)を行っている最中のレンズマイコン111の動作は、前述したP2Pバースト通信(通信サブデバイス送信)におけるものと同様である。そのため、当該動作の説明は省略する。
ここで、本実施形態によれば、効率的なデータ通信に有利なアクセサリ装置を提供することができることを説明する。P2Pバースト通信では、通常のP2P通信と比較して、通信に関する処理の一部の削減により、より短い時間でデータを送信することができる。具体的には、まず、データを受信する受信装置における、データ要求を行うためのデータ通信に関する処理の削減である。通常のP2P通信では、受信装置が連続して受信可能なサイズごと、すなわちブロックサイズごとに、データ要求を行うためのデータ通信の処理が必要であった。一方、P2Pバースト通信では、データ要求を行うためのデータ通信の処理は、P2Pバースト通信を開始するタイミングのみに必要となっている。
加えて、データを送信する送信装置がデータ通信タイミングを信号線CSで通知する処理の削減である。通常のP2P通信では、送信装置がブロックサイズごとにデータ通信タイミングを信号線CSで通知する処理が必要であった。一方、P2Pバースト通信では、送信装置がデータ通信タイミングを信号線CSで通知する処理は、P2Pバースト通信を終了するタイミングのみに必要となっている。
さらには、データを受信する受信装置がデータ通信タイミングを信号線CSで通知する処理の削減である。通常のP2P通信では、受信装置がブロックサイズごとに通信タイミングを信号線CSで通知する処理が必要であった。一方、P2Pバースト通信では、受信装置が通信タイミングを信号線CSで通知する処理は、フロー制御が不要なブロック間においては、不要となっている(送信装置がブロック間ウェイト時間だけ送信を停止するブロック間ウェイト処理を行っている)。ブロック間ウェイト時間は、受信装置において次の1ブロックのデータが受信可能となるのに要する時間である。この時間は、通常のP2P通信において、受信装置が通信タイミングを信号線CSで通知する処理に要する時間より短く設定することができる。よって、当該通知処理がブロック間ウェイト処理に置き換わることにより、通信時間が削減される。
以上のように、P2Pバースト通信では、通常のP2P通信と比較して、より短い時間で、すなわち効率的にデータを送信することができる。
以下に、本実施形態において、通信レートを1Mbpsとして4096バイトのデータを送信するのに要する通信時間を例示する。まず、通常のP2P通信での通信時間を説明する。1バイトの情報を送信するには、図3を参照して既に説明したとおり、スタートビットST、パリティビットPA、ストップビットSPが付加されるため、11ビットのデータ送信が必要となる。通信速度が1Mbpsである場合、11ビットの送信には11μsの時間を要する。通常のP2P通信は、図5に示すように、受信装置によるデータの要求および信号線CSでの通知(要求信号による待機の要求;通信の待機処理)、ならびに送信装置によるデータの送信および信号線CSでの通知は、全データの送信が完了するまで繰り返される。当該データの要求が1バイトの情報で行われる場合、当該要求には11μsの時間が必要となる。その後の信号線CSでの通知には、当該データの要求から信号線CSのレベルをLoにするまでに100μs、当該レベルをLoに維持する時間100μs、当該レベルをHiにしてから次のデータを受信するまでに100μsの時間が必要となる。すなわち、最短でも合計300μsの時間が必要となる。つづいて、送信装置が16バイトのデータを送信するのに、最短で176μsが必要となる。その後、送信装置による信号線CSでの通知には、前述のとおり、最短で300μsの時間が必要となる。以上から、通常のP2P通信では、16バイトの情報量(通信情報量)の送信に787μsの時間(2つの要求信号の時間間隔)が必要となり、よって、4096バイトの情報を送信するのには、最短でも201ms程度の時間が必要となる。
続いて、P2Pバースト通信での通信時間を説明する。P2Pバースト通信では、図11に示すように、受信装置によるデータの要求および信号線CSでの通知、ならびに送信装置によるブロック間ウェイト時間を3つ差し挟んでの4ブロック分のデータの送信、受信装置による信号線CSでの通知を行う。なお、4ブロック分のデータは、64バイトの情報量(通信情報量)を有する。当該送信装置による4ブロック分のデータの送信と当該受信装置による信号線CSでの通知は、全データの送信が完了するまで繰り返される。データの要求には、11μsの通信時間が必要となる。その後の信号線CSでの通知には、300μsの時間が必要となる。つづいて、送信装置が4ブロック分のデータを送信するのに、1つのフロー制御(通信の待機処理)と、その次のフロー制御との間に4ブロック分の送信時間と3回分のブロック間ウェイト時間が必要となる。すなわち、176μs×4+100μs×3=1004μsの時間が必要となる。つづくフロー制御には、信号線CSでの通知に要する時間と同じ時間を要し、すなわち最低300μsの時間が必要となる。よって、1つのフロー制御と、その次のフロー制御との間において、64バイトの送信に1304μsの時間(2つの要求信号の時間間隔)が必要となり、4096バイトのデータを送信するには、最短で約84ms程度の時間が必要となる。以上のことから、この例では、P2Pバースト通信は、通常のP2P通信に比べて半分以下の時間でデータ送信を行うことができる。
以上に説明したように、本実施形態によれば、例えば、効率的なデータ通信に有利なアクセサリ装置を提供することができる。第3通信方式は、アクセサリ装置と撮像装置との間での通信に要する時間に占める待機要求信号による待機の時間の割合が第2通信方式における当該割合よりも低いからである。また、信号線CSと信号線DATAとの2つの信号線で通信を行うシステムにおいて、P2Pバースト通信を、信号線を追加することなく実現することができる。ここで、受信装置における受信バッファサイズをブロックサイズとして規定し、1ブロック分のデータの送信の後に、受信装置が当該データの処理に必要な時間をブロック間ウェイト時間として規定することにより、効率的かつ正常なデータ通信が可能となる。また、フロー制御までのブロック数を規定し、当該ブロック数分のデータ送信の後に受信装置(受信側装置)が必要な時間だけ送信装置(送信側装置)によるデータ送信を待機させるフロー制御を行う。こうすることにより、受信装置が通信以外の処理も並行して行うことができる。また、P2Pバースト通信は、通常のP2P通信とは異なり、通信メインデバイスと通信サブデバイスとのうち送信する方が信号線DATAでデータを送信し、受信する方が信号線CSでフロー制御のための信号を送信する。このため、P2Pバースト通信は、通常のP2P通信に比べて通信時間を短縮することができる。なお、当該フロー制御は、通信以外の処理のための時間を確保するため、信号線CSをLoに維持する時間は相応に長くなる。そのため、フロックサイズやフロー制御までのブロック数をできるだけ大きくし、フロー制御の回数をできるだけ小さくするのが、P2Pバースト通信の効率の点では好ましい。
また、図14に示すように、ブロック間ウェイト時間を利用せずにフロー制御を行う場合、フロー制御までのブロック数を1とすればよい。こうすると、受信装置が受信バッファサイズ分だけデータを受信するごとにフロー制御を行うようにすることができる。これにより、受信装置において受信データの退避処理に要する時間が変動する場合、すなわちブロック間ウェイト時間を規定できない場合であっても、フロー制御によりP2Pバースト通信を行うことができる。
また、フロー制御を行わずにブロック間ウェイト時間を利用するようにしてもよい。この場合、例えば、フロー制御までのブロック数を∞とすればよい(通信規約では、便宜上当該ブロック数を0とすればよい)。その場合、図12のステップS504、図13のステップS603、図15のステップS703、図16のステップS804の条件分岐(判断)において、常に、フロー制御までのブロック数分のデータ受信が完了していないと判断されることになる。
また、図12のステップS505、図16のステップS805において、本来ブロック間ウェイト時間に係る処理のタイミングであるところ、通信以外の処理を実行する必要が生じた場合、信号線CSの信号レベルをLoにする。この場合、送信装置は、図13のステップS604、図15のステップS704において、本来ブロック間ウェイト時間だけ待機すべきタイミングであるところ信号線CSの信号レベルがLoであることを検知した場合、フロー制御に係る処理に移行する。こうすることにより、ブロック間ウェイト時間に係る処理のタイミングにおいて通信以外の処理を実行する必要が生じた場合に、当該通信以外の処理のための時間を確保することができる。
また、本実施形態では、通信サブデバイスは、P2P通信方式において、データ送信後に待機要求を示す制御信号(待機要求信号)を受信している(信号線CSの信号レベルがLoレベルになっている)間、ブロードキャスト通信における受信が可能である。具体的には、図10のステップS404およびステップS415、図13のステップS609、ならびに図16のステップS808において、通信サブデバイスは、ブロードキャスト通信における信号線DATAからのデータ受信を許可する。そして、図10のステップS407およびステップS418、図13のステップS611、ならびに図16のステップS813において、データの受信を許可している間に、データが受信されるかを判断する。データが受信された場合、図10のステップS420、図13のステップS613、および図16のステップS815において、P2P通信を中断し、ブローキャスト通信方式への移行を行うことができる。このようにして、カメラマイコン205は、アダプタマイコン302やレンズマイコン111との通信に異常を検出(認識)した場合、P2Pバースト通信での通信中であってもブロードキャスト通信へ移行できる。そのうえで、カメラマイコン205は、当該ブロードキャスト通信を介してP2Pバースト通信をやり直すことができる。
ここで、図17を参照して、通信サブデバイスとしてのレンズマイコン111やアダプタマイコン302からブロードキャスト通信を開始する場合を説明する。図17は、ブロードキャスト通信における信号波形を例示する図である。ブロードキャスト通信を通信サブデバイスから開始することを通信リクエストということにする。通信メインデバイスとしてのカメラマイコン205から通信サブデバイスへの通信が一時停止された状態において、通信サブデバイスは、カメラマイコン205への通信リクエストにより主体的にブロードキャスト通信を再開させることができる。ここでは、一例として、レンズマイコン111からブロードキャスト通信の開始を通知し、その後、カメラマイコン205からのブロードキャスト通信に応答してアダプタマイコン302がブロードキャスト通信を行う場合を説明する。
まず、レンズマイコン111は、ブロードキャスト通信を開始することをカメラマイコン205およびアダプタマイコン302に通知するために、信号線CSへのLo出力を開始する。次に、カメラマイコン205は、信号線CSの信号レベルがLoレベルになったことを検出すると、信号線CSへのLo出力を開始する。なお、この時点ではすでにレンズマイコン111が信号線CSへのLo出力を開始しているので、信号線CSの信号レベルは変化しない。
次に、カメラマイコン205は、送信すべきデータを信号線DATAに出力する。一方、アダプタマイコン302は、信号線DATAから入力されたスタートビットSTを検出したタイミングで、信号線CSへのLo出力を開始する。なお、この時点ではすでにレンズマイコン111やカメラマイコン205が信号線CSへのLo出力を開始しているので、信号線の信号レベルは変化しない。
カメラマイコン205は、ストップビットSPまでのデータ送信を終了した後、信号線CSへのLo出力を解除する。一方、レンズマイコン111およびアダプタマイコン302は、信号線DATAから入力されたストップビットSPまでのデータ受信を完了した後、当該受信データの解析および当該受信データに紐づけられた内部処理を行う。その後、レンズマイコン111およびアダプタマイコン302は、データ受信の準備を整えた後、信号線CSへのLo出力を解除する。前述したように、信号線CSの信号レベルは、カメラマイコン205、レンズマイコン111およびアダプタマイコン302の全てが信号線CSへのLo出力を解除することによりHiとなる。したがって、信号線CSの信号レベルがHiとなることを確認することにより、全てのマイコンが今回の通信に関する処理を終了し、次の通信を行うための準備を整えたと判断することができる。
アダプタマイコン302は、信号線CSの信号レベルがHiになったことを確認した後、ブロードキャスト通信を開始することをカメラマイコン205およびレンズマイコン111に通知するために、信号線CSへのLo出力を開始する。その後、アダプタマイコン302は、送信すべきデータを信号線DATAに出力する。一方、カメラマイコン205およびレンズマイコン111は、信号線DATAから入力されたスタートビットSTを検出した場合、信号線CSへのLo出力を開始する。なお、この時点では、すでにアダプタマイコン302が信号線CSへのLo出力を開始しているため、信号線CSの信号レベルは変化しない。
アダプタマイコン302は、ストップビットSPまでのデータ出力を終了した後、信号線CSへのLo出力を解除する。一方、カメラマイコン205およびレンズマイコン111は、信号線DATAから入力されたストップビットSPまでのデータ受信を完了した後、当該受信データの解析および当該受信データに紐づけられた内部処理を行う。その後、カメラマイコン205およびレンズマイコン111は、データ受信のための準備を整えた後、信号線CSへのLo出力を解除する。
通信サブデバイスとしてのレンズマイコン111やアダプタマイコン302からブロードキャスト通信方式での通信を開始するのは、カメラマイコン205、レンズマイコン111およびアダプタマイコン302すべてが当該方式に対応している場合のみである。また、通信サブデバイスからブロードキャスト通信を開始した場合、通信メインデバイスとしてのカメラマイコン205は、レンズマイコン111およびアダプタマイコン302のうちのどちらが信号線CSをLoにしたのか判別できない。したがって、カメラマイコン205は、レンズマイコン111およびアダプタマイコン302のうちのどちらがブロードキャスト通信を開始したかの情報を取得するための通信を行う必要がある。また、カメラマイコン205がブロードキャスト通信を開始するために信号線CSにLo出力したタイミングと、通信サブデバイスがブロードキャスト通信を開始するために信号線CSにLoしたタイミングが一致してしまう場合がある。この場合、カメラマイコン205は、通信サブデバイスが信号線CSにLo出力したことを検出できないため、通信サブデバイスがブロードキャスト通信を開始することを許可する通知をカメラマイコン205から通信サブデバイスに行うようにしてもよい。以上のように、本実施形態では、信号線CSと信号線DATAとの2つの信号線で通信を行うシステムにおいて、通信サブデバイスによりブロードキャスト通信を開始できる。これにより、カメラマイコン205がレンズマイコン111およびアダプタマイコン302と高頻度で通信し続ける必要がなくなるため、無駄な通信を削減することができる。
本実施形態におけるP2Pバースト通信に係る通信規約情報は、ブロックサイズ、ブロック間ウェイト時間、フロー制御までのブロック数、トータルサイズであるとしたが、これらには限定されない。例えば、ブロック間ウェイト時間を利用せずに信号線CSによるフロー制御を利用する場合、通信規約情報として、ブロック間ウェイト時間やフロー制御までのブロック数は不要となる。同様に、当該フロー制御を利用せずにブロック間ウェイト時間を利用する場合、通信規約情報として、フロー制御までのブロック数は不要となる。また、これらの通信規約情報は、それ自体を共有する必要はなく、当該通信規約情報に対応する情報が共有できればよい。例えば、フロー制御までのブロック数は、フロー制御までのバイト数としてもよく、当該バイト数とブロックサイズとからフロー制御までのブロック数を得ることができる。同様に、トータルサイズは、トータルブロック数としてもよく、当該トータルブロック数とブロックサイズとからトータルサイズを得ることができる。また、通信規約情報は、通信規約に係るIDや通信世代等の情報に基づいて得てもよい。
また、通信規約情報は、前述したものとは別の情報を含んでいてもよい。例えば、通信レートやパリティ有無等の情報を含んでいてもよい。また、P2Pバースト通信により送信すべきデータを特定するための情報として、交換レンズ装置100やカメラ本体200のIDや、取得すべきデータと紐づけられたコマンド等の情報を含んでいてもよい。また、P2Pバースト通信により送信されたデータの信頼性を確認するための情報(チェックサムやCRC、ハッシュ値等)を含んでいてもよい。
また、通信規約情報は、P2Pバースト通信を行う前に通常のP2P通信により送受信装置間で共有される構成としたが、これには限られない。通信規約情報は、例えば、予め取り決められていてもよいし、ブロードキャスト通信を用いて送受信装置間で共有されてもよいし、別の信号線や無線を介して送受信装置間で共有されてもよい。
〔実施形態2〕
添付図面を参照して実施形態2を説明する。実施形態1との相違点は、信号線CSではなく信号線DATAを用いてフロー制御を行う点である。図18は、P2Pバースト通信(通信サブデバイス送信)における通信波形を例示する図である。フロー制御のために信号線DATAに対してカメラマイコン205が出力するのは、特定の2バイト分のデータである。第1バイトのデータは、実施形態1における信号線CSの信号レベルの立下りに対応し、第2バイトのデータは、実施形態1における信号線CSの信号レベルの立上りに対応する。
ここで、図19を参照して、カメラマイコン205によるP2Pバースト通信(通信サブデバイス送信)でのデータ受信の詳細を説明する。図19は、P2Pバースト通信(通信サブデバイス送信)における通信メインデバイスの処理の流れを例示する図である。なお、実施形態1に係る図12におけるものとは同様の符号(処理)については、説明を省略する。
ステップS901では、カメラマイコン205は、入出力切り換えスイッチ2082を操作してカメラマイコン205のデータ出力部に信号線DATAを接続する。
ステップS902では、カメラマイコン205は、第1バイトのデータを出力(送信)する。
ステップS903では、カメラマイコン205は、図12のステップS506におけるものとは同様の受信データ処理を実行する。
ステップS904では、カメラマイコン205は、図12のステップS509におけるものとは同様の通信以外の処理を実行する。
ステップS905では、カメラマイコン205は、第2バイトのデータを出力(送信)する。
ステップS906では、カメラマイコン205は、入出力切り換えスイッチ2082を操作してカメラマイコン205のデータ入力部に信号線DATAを接続する。
つづいて、図20を参照して、アダプタマイコン302によるP2Pバースト通信(通信サブデバイス送信)における送信処理の詳細を説明する。図20は、P2Pバースト通信(通信サブデバイス送信)における通信サブデバイスの処理の流れを例示する図である。なお、実施形態1に係る図13におけるものとは同様の符号(処理)については、説明を省略する。
ステップS1001では、アダプタマイコン302は、入出力切り換えスイッチ3032を操作してアダプタマイコン302のデータ入力部に信号線DATAを接続する。
ステップS1002では、アダプタマイコン302は、信号線DATAを介したP2P通信におけるデータ受信を許可する。
ステップS1003では、アダプタマイコン302は、フロー制御までのブロック数分のデータ送信が完了したかを判断する。当該データ送信が完了した場合、ステップS1006へ処理が進められ、当該データ送信が完了していない場合、ステップS1004へ処理が進められる。
ステップS1004では、アダプタマイコン302は、第1バイトのデータが受信されたかを判断する。当該データが受信された場合、ステップS1007へ処理が進められ、当該データが受信されていない場合、ステップS1005へ処理が進められる。
ステップS1005では、アダプタマイコン302は、ブロック間ウェイト時間が経過したかを判断する。当該時間が経過した場合、ステップS600へ処理が進められ、当該時間が経過していない場合、ステップS1004へ処理が戻される。
ステップS1006では、ステップS1004とは同様に、アダプタマイコン302は、第1バイトのデータが受信されたかを判断する。当該データが受信された場合、ステップS1007へ処理が進められ、当該データが受信されていない場合、ステップS1006の処理が繰り返される。
ステップS1007では、アダプタマイコン302は、第2バイトのデータが受信されたかを判断する。当該データが受信された場合、ステップS1008へ処理が進められ、当該データが受信されていない場合、ステップS1007の処理が繰り返される。
ステップS1008では、アダプタマイコン302は、入出力切り換えスイッチ3032を操作してアダプタマイコン302のデータ出力部に信号線DATAを接続する。
以上説明したように、本実施形態では、P2Pバースト通信(通信サブデバイス送信)において、信号線DATAを用いてフロー制御を行うことができる。
実施形態1において説明したように、信号線CSによる通知は、P2Pバースト通信の相手ではないレンズマイコン111等の通信サブデバイスにもなされるため、当該通信サブデバイスの動作に影響を与えうる。それに対して、本実施形態では、信号線CSをLoにすることなく信号線DATAを用いてフロー制御を実行するため、当該通信サブデバイスに対して影響を与えずにP2Pバースト通信を行うことができる。但し、この場合、カメラマイコン205とアダプタマイコン302との間で、信号線DATAへの出力が衝突することのないようにする必要がある。具体的には、図19のステップS901において、カメラマイコン205がそのデータ出力部に信号線DATAを接続するよりも前に、図20のステップS1001において、アダプタマイコン302がそのデータ入力部に信号線DATAを接続する必要がある。また、同様に、図20のステップ1008において、アダプタマイコン302がそのデータ出力部に信号線DATAを接続するよりも前に、図19のステップS906において、カメラマイコン205がそのデータ入力部に信号線DATAを接続する必要がある。そのため、図19のステップS901および図20のステップ1008における、それぞれのデータ出力部への信号線DATAの接続は、適当な遅延時間をもって実行するのが好ましい。
なお、本実施形態では、フロー制御のために信号線DATAにおいて特定の2バイト分のデータを送信することとしたが、これには限られない。例えば、実施形態1の場合の信号線CSにおける待機要求信号と同様に、信号線DATAの信号レベルを特定の時間だけLoにした後にHiにすることによっても代替可能である。また、ブロック間ウェイト時間に従った待ち時間において通信以外の処理を実行する必要が生じないのであれば、2バイト分のデータによるフロー制御を1バイト分のデータによるものとしうる。すなわち、2バイト分のデータのうちフロー制御の開始を示す1バイト目を省略することができる。具体的には、P2Pバースト通信において送信を行うアダプタマイコン205による図20における処理の流れを以下のように変更すればよい。ステップS1003での判断結果がN(No)となった場合は、ステップS1005へ処理が進められる。ステップS1005での判断結果がN(No)となった場合は、ステップS1005の処理が繰り返される。ステップS1003での判断結果がY(Yes)となった場合は、ステップS1006へ処理が進められる。ステップS1006での判断結果がY(Yes)となった場合は、ステップS1008へ処理が進められる。なお、ステップS1004の条件分岐処理およびステップS1007の条件分岐処理は省略される。また、P2Pバースト通信において受信を行うカメラマイコン205による図19のステップS505の条件分岐処理およびステップS902の処理は省略される。
なお、通信メインデバイスによるP2Pバースト通信においても、信号線DATAを用いたフロー制御の方法は、同様である。
〔実施形態3〕
ここでは、撮像システムには限らず、送信装置(送信側装置)、受信装置(受信側装置)、第1通信チャネル(第1通信路)と、第2通信チャネル(第2通信路)とを含むシステムに係る実施形態3を説明する。なお、第1通信チャネルは、受信装置から送信装置へフロー制御のための信号を送信するためのものである。また、第2通信チャネルは、送信装置から受信装置へデータを送信するためのものである。
図21は、第1通信チャネルと第2通信チャネルとを用いるバースト通信における信号波形を例示する図である。同図21において、送信装置は、1ブロック分のデータ送信の後、ブロック間ウェイト時間だけデータ送信を停止する。送信装置は、フロー制御までのブロック数分のデータ送信が完了すると、受信装置によるフロー制御を待つ。受信装置は、1ブロック分のデータ受信の後、ブロック間ウェイト時間の間に次のブロックに関するデータ受信の準備を行う。受信装置は、フロー制御までのブロック数分のデータ受信が完了すると、必要な処理を実行した後に、フロー制御を行う。以上のような処理を繰り返すことにより、送信装置から受信装置への効率的または高速なデータ転送が可能となる。このように、本実施形態に係る、データの通信を行う通信装置は、特定のデータサイズを有するデータブロック単位で特定の待ち時間を挟んでデータの通信を行う通信機能を有している。また、当該通信装置は、データブロック単位での複数回数の通信の後に通信の待機を要求する要求信号を用いて通信の待機処理を行う待機機能を有している。
なお、以上のような処理は、受信装置から送信装置へのフロー制御のための送信と、送信装置から受信装置へのデータ送信とを同一の通信チャネルで行うシステムにも適用可能である。ここで、図22は、単一の通信チャネルを用いるバースト通信における信号波形を例示する図である。同図において、送信装置は、単一の通信チャネルをデータ出力部に接続した状態で、1ブロック分のデータを送信した後、ブロック間ウェイト時間だけデータ送信を停止する。送信装置は、フロー制御までのブロック数分のデータ送信が完了すると、単一の通信チャネルをデータ入力部に接続し、受信装置からのフロー制御を待つ。受信装置は、単一の通信チャネルをデータ入力部に接続した状態で、1ブロック分のデータを受信した後、ブロック間ウェイト時間内に次のブロックに関するデータ受信の準備を行う。受信装置は、フロー制御までのブロック数分のデータ受信が完了すると、単一の通信チャネルをデータ出力部に接続し、必要な処理を実行した後、フロー制御を行う。以上のような処理を繰り返すことにより、送信装置から受信装置への効率的または高速なデータ転送が可能となる。
〔実施形態4〕
前述の実施形態の1以上の機能は、それを実現するプログラムによっても実現可能である。当該プログラムは、ネットワークまたは記憶媒体等を介して装置またはシステム等に供給され、その装置またはシステム等のコンピュータにおける1つ以上のプロセッサにより読出されて実行されうる。また、当該機能は、それを実現する回路(例えば、ASIC)によっても実現可能である。
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。