図1は、本発明の実施例1である電子機器である撮像装置(以下、カメラという)100とこれに着脱可能に装着されるアクセサリ200からなる撮像システムの電気的構成を示している。アクセサリ200は、例えば、マイク機器や照明(ストロボ又はフラッシュ)機器であり、カメラ100に装着可能な各種機器を含む。カメラ100とアクセサリ200は、カメラ100に設けられたカメラ接続部141の複数の接点(端子)TC01~TC21とアクセサリ200に設けられたアクセサリ接続部211の複数の接点TA01~TA21とがそれぞれ一対一で接触することで電気的に接続される。なお、アクセサリ200は複数の接点TA01~TA21の一部を有していなくてもよい。
カメラ100は、電池111から電力を供給される。電池111はカメラ100に対して着脱が可能である。カメラ100における第1の処理手段、制御手段および受信手段としてのカメラ制御回路A101および第2の処理手段としてのカメラ制御回路B102は、カメラ100全体を制御する回路であり、CPU等のプロセッサ(マイクロコンピュータ)により構成される。カメラ制御回路A101およびカメラ制御回路B102は、コンピュータプログラムに従って各種制御や処理を実行する。
カメラ制御回路A101は、不図示のカメラ操作のためのスイッチ等の操作を監視したり、ユーザの操作に応じてシステム電源の制御を行ったりする。カメラ制御回路A101は、カメラ100が低消費電力状態である省電力状態にあっても動作可能な低電力タイプのプロセッサにより構成されている。一方、カメラ制御回路B102は、撮像センサ122や表示回路127等の制御を担っている。カメラ制御回路B102は、低消費電力状態においては動作を停止し、通常動作状態において動作するプロセッサにより構成されている。
なお、本実施例では、カメラ制御回路A101とカメラ制御回路B102を別々のプロセッサにより構成する場合について説明しているが、これらを単一のプロセッサ内に設けてもよい。
システム電源回路112は、カメラ100の各回路に供給される電源を生成する回路であり、DC/DCコンバータ回路、LDO(Low Drop Out)およびチャージポンプ回路等により構成される。カメラ制御回路A101には、電池111からの電力供給を受けたシステム電源回路112で生成された電圧1.8Vがカメラマイコン電源VMCU_Cとして常時供給される。また、カメラ制御回路B102にも、システム電源回路112で生成された数種類の電圧がカメラマイコン電源VMCU2_Cとして、任意のタイミングで供給される。カメラ制御回路A101は、システム電源回路112を制御することで、カメラ100の各回路への電源供給のオン・オフ制御を行う。
光学レンズ121は、カメラ100に着脱可能である。光学レンズ121を介して入射した被写体からの光は、CMOSセンサやCCDセンサ等からなる撮像センサ122上に結像する。なお、光学レンズ121とカメラ100とが一体の構成であってもよい。撮像センサ122上に結像された被写体像は、デジタル撮像信号に符号化される。画像処理回路123は、デジタル撮像信号に対して、ノイズリダクション処理やホワイトバランス処理等の画像処理を行って画像データを生成し、該画像データを記録用メモリ126に記録するためにJPEG形式等の画像ファイルに変換する。また画像処理回路123は、画像データから表示回路127に表示するためのVRAM画像データを生成する。
メモリ制御回路124は、画像処理回路123等で生成される画像データや他のデータの送受を制御する。揮発性メモリ125は、DDR3SDRAM等の高速な読み出しと書き込みが可能なメモリであり、画像処理回路123で行われる画像処理のワークスペース等に使用される。記録用メモリ126は、不図示の接続部を介してカメラ100に着脱可能なSDカードやCFexpressカード等の読み書き可能な記録メディアである。表示回路127は、カメラ100の背面に配置されたディスプレイであり、LCDパネルや有機ELディスプレイパネル等により構成される。バックライト回路128は、表示回路127のバックライトの光量を変更することで表示回路127の明るさを調整する。
アクセサリ用電源回路A(第1の電源手段)131とアクセサリ用電源回路(第2の電源手段)B132はそれぞれ、システム電源回路112から供給された電圧を所定の電圧に変換する電圧変換回路であり、本実施例ではアクセサリ電源VACCとして3.3Vを生成する。なお、その他の電圧に変換する構成でもよい。
アクセサリ用電源回路A131は、LDO等で構成される自己消費電力が小さい電源回路である。アクセサリ用電源回路B132は、DC/DCコンバータ回路等で構成され、アクセサリ用電源回路A131よりも大きな電流を流すことができる(つまりはより大きな電力を供給できる)回路である。なお、アクセサリ用電源回路B132の自己消費電力は、アクセサリ用電源回路A131よりも大きい。このため、負荷電流が小さいときにはアクセサリ用電源回路A131の方がアクセサリ用電源回路B132よりも効率が良く、負荷電流が大きいときにはアクセサリ用電源回路B132の方がアクセサリ用電源回路A131よりも効率が良くなる。カメラ制御回路A101は、アクセサリ200の動作状態に応じてアクセサリ用電源回路A131とアクセサリ用電源回路B132の電圧出力のオン・オフを制御する。
保護回路133は、電流ヒューズ素子、ポリスイッチ素子または抵抗とアンプとスイッチ素子を組み合わせた電子ヒューズ回路等により構成されている。保護回路133は、アクセサリ用電源回路A131とアクセサリ用電源回路B132からアクセサリ200に供給される電源電流値が所定値を超えて過大(異常)になったときに過電流検知信号DET_OVCを出力する。本実施例では、保護回路133は、電子ヒューズ回路であり、1A以上の電流が流れた場合にカメラ制御回路A101に対して過電流検知信号DET_OVCにて通知を行う。過電流検知信号DET_OVCは、Hiレベルによって過電流であることを示す。なお、所定値が1Aと異なる構成であってもよい。
カメラ接続部141は、一列に配列された21個の接点TC01~TC21を介してアクセサリ200と電気的な接続を行うためのコネクタである。接点TC01~TC21は、これらの配列方向の一端から他端にこの順で配置されている。
TC01はグラウンド(GND)に接続されており、基準電位の接点としてだけではなく、差動信号D1Nと差動信号D1Pの配線インピーダンスをコントロールする接点としての用途も兼ねている。TC01は第3のグラウンド接点に相当する。
TC02に接続された差動信号D1NとTC03に接続された差動信号D1Pは、ペアとなってデータ通信を行う差動データ通信信号であり、カメラ制御回路B102に接続されている。TC02、TC03、後述するTC07~TC10、TC12~TC17、TC19およびTC20は通信接点である。
第1のグラウンド接点としてのTC04は、GNDに接続されており、カメラ100とアクセサリ200の基準電位の接点となる。TC04は、次に説明するTC05よりも接点の配列方向における外側に配置されている。
電源接点としてのTC05には、保護回路133を介してアクセサリ用電源回路A131,B132で生成されたアクセサリ電源VACCが接続されている。
装着検出接点としてのTC06には、アクセサリ装着検出信号/ACC_DETが接続されている。アクセサリ装着検出信号/ACC_DETは、抵抗素子Rp134(例えば10kΩ)を介してカメラマイコン電源VMCU_Cにプルアップされている。カメラ制御回路A101は、アクセサリ装着検出信号/ACC_DETの信号レベルを読み出すことでアクセサリ200の装着の有無を検出することが可能である。アクセサリ装着検出信号/ACC_DETの信号レベル(電位)がHiレベル(所定電位)であればアクセサリ200が未装着と検出され、アクティブ電位としてのLoレベル(GND電位)であればアクセサリ200が装着されたことが検出される。
カメラ100の電源ON時にアクセサリ装着検出信号/ACC_DETの信号レベル(電位)がHiレベルからLoレベルになることがトリガーとなり、カメラ100とアクセサリ200との間で接点を介した各種伝達が行われる。
カメラ制御回路101は、アクセサリ200が装着状態になったことを検出することに応じて、電源接点としてのTC05を介してアクセサリ200に対して電源供給を行う。
通信接点であるTC07に接続されたSCLK、TC08に接続されたMOSI、TC09に接続されたMISOおよびTC10に接続されたCSは、カメラ制御回路B102が通信マスターとなって第2の通信方式であるSPI(Serial Peripheral Interface)通信方式による通信(以下、SPI通信という)を行うための信号である。SCLKはクロック信号、MOSIは送信信号、MISOは受信信号、CS(チップ・セレクト)は通信選択信号であり、通信相手を選択する信号である。本実施例では、SPI通信の通信クロック周波数は1MHz、データ長は8ビット(1バイト)、ビットオーダーはMSBファースト、全二重通信方式である。
本実施例では、カメラ100とアクセサリ200は、SPI通信方式として2種類の通信プロトコルに対応可能である。通信プロトコルAは、カメラ100が、アクセサリ200が通信可能状態であるかをSCLKを出力する前に確認しない通信方式であり、以下の説明ではSPIプロトコルAと称する。図2(a)は、SPIプロトコルAの通信波形の概略を示している。図では、CSをLoアクティブとする。
カメラ制御回路B102は、タイミングA1でCSをLoレベル(アクティブ)に変化させてアクセサリ制御回路201に対してSPI通信の要求を行う。
タイミングA1から所定の時間T_CS後のタイミングA2において、カメラ制御回路B102はSCLKとMOSIの出力を開始する。また、アクセサリ制御回路201は、SCLKの立下り変化を検出すると、MISOの出力を開始する。
カメラ制御回路B102は、1バイト分のSCLKの出力が完了したタイミングA3においてSCLKの出力を停止する。
さらにカメラ制御回路B102は、タイミングA3から所定時間T_INTERVALが経過するまでの間、SCLKの出力を停止し、T_INTERVALを経過したタイミングA4でSCLKの出力を再開して次の1バイトの通信を行う。
図3(a)のフローチャートは、SPIプロトコルAにおいてカメラ制御回路B102が行う処理を示している。Sはステップを意味する。
S101では、カメラ制御回路B102は、内部変数Nに通信するバイト数を示す数値を格納する。例えば、3バイト通信する場合は3を格納する。
S102では、カメラ制御回路B102は、CSをLoレベルに変化させてSPI通信の要求を行う。
S103では、カメラ制御回路B102は、CSをLoレベルに変化させてから、所定時間T_CS経過するまでウェイト処理を行う。所定時間T_CS経過後にS104に進む。
S104では、カメラ制御回路B102は、1バイトデータの通信を行うため、SCLKの出力制御を行うとともに、MOSIデータの出力制御とMISOデータの入力制御を行う。
S105では、カメラ制御回路B102は、通信バイト数を示す内部変数Nが0であるか否かを確認する。内部変数Nが0の場合はS106に進み、内部変数Nが0以外の場合はS107に進む。
S107では、カメラ制御回路B102は、通信バイト数を示す内部変数Nの数値を1だけ減じた値を新たな内部変数Nとして格納する。
S108では、カメラ制御回路B102は、S104で1バイトデータの通信が完了してから所定時間T_INTERVAL経過するまでウェイト処理を行う。そして所定時間T_INTERVAL経過後にS104の処理に戻り、再び同じ処理を実行する。
S106では、カメラ制御回路B102は、CSをHiレベルに変化させて、一連のSPI通信を終了する。
図3(b)のフローチャートは、SPIプロトコルAにおいてアクセサリ制御回路201が行う処理を示している。
S201では、アクセサリ制御回路201は、CSがLoに変化しているか否かを確認する。CSがLoに変化している場合はS202に進み、CSがLoに変化していない場合はS211に戻る。
S202では、アクセサリ制御回路201は、SCLK信号の入力に応じてMOSIデータの入力制御とMISOデータの出力制御を行って1バイトデータの通信を行う。
S203では、アクセサリ制御回路201は、CSがHiに変化しているか否かを確認する。CSがHiに変化している場合はSPI通信が終了したと判断し、CSがHiに変化していない場合は次の1バイト通信を行うためにS202に戻る。
また、SPI通信方式における通信プロトコルBは、カメラ100が、アクセサリ200が通信可能状態であるかをSCLKを出力する前に確認する通信方式であり、以下の説明ではSPIプロトコルBと称する。図2(b)は、SPIプロトコルBの通信波形の概略を示している。
カメラ制御回路B102は、タイミングB1でCSをLoレベルに変化させて、アクセサリ制御回路201に対してSPI通信の要求を行う。また、カメラ制御回路B102は、通信の要求と併せてMISOの電位を確認する。MISOがHiレベルならばアクセサリ制御回路201が通信可能な状態であると判断し、Loレベルならばアクセサリ制御回路201が通信不可能な状態であると判断する。
一方、アクセサリ制御回路201は、タイミングB2でCSの立下りを検出すると、SPI通信可能な状態であればMISOをHiレベルに制御し、通信不可能な状態であればMISOをLoレベルに制御する。
さらにカメラ制御回路B102は、タイミングB3でMISOがHiレベルにあることを確認すると、SCLKとMOSIの出力を開始する。またアクセサリ制御回路201は、SCLKの立下り変化を検出すると、MISOの出力を開始する。
カメラ制御回路B102は、タイミングB4で1バイト分のSCLK出力が完了すると、SCLKの出力を停止する。
アクセサリ制御回路201は、1バイトのデータ送受を行った後に、タイミングB5とタイミングB6に示すように、SPI通信可能な状態であればMISOをHiレベルに制御し、SPI通信不可能な状態であればMISOをLoレベルに制御する。
カメラ制御回路B102は、タイミングB7でMISOの電位を確認する。MISOがHiレベルならばアクセサリ制御回路201が通信可能な状態であると判断し、Loレベルならばアクセサリ制御回路201が通信不可能な状態であると判断する。
図3(c)のフローチャートは、SPIプロトコルBにおいてカメラ制御回路B102が行う処理を示している。
S111では、カメラ制御回路B102は、内部変数Nに通信するバイト数を示す数値を格納する。例えば、3バイト通信する場合は3を格納する。
S112では、カメラ制御回路B102は、CSをLoレベルに変化させてSPI通信の要求を行う。
S113では、カメラ制御回路B102は、MISOがHiレベルに変化しているかの確認を行う。MISOがHiレベルの場合はS114に進み、MISOがHiレベルになっていない場合はS113に戻る。
S114では、カメラ制御回路B102は、1バイトデータの通信を行うため、SCLKの出力制御を行うとともに、MOSIデータの出力制御とMISOデータの入力制御を行う。
S115では、カメラ制御回路B102は、全データの通信が完了した(通信バイト数を示す内部変数Nが0である)か否かを確認する。内部変数Nが0の場合はS116に進み、内部変数Nが0以外の場合はS117に進む。
S117では、カメラ制御回路B102は、通信バイト数を示す内部変数Nの数値を1だけ減じた値を新たな内部変数Nとして格納する。
S118では、カメラ制御回路B102は、MISOがHiレベルに変化しているか否かを確認する。MISOがHiレベルの場合はS114に進み、MISOがHiレベルになっていない場合はS118に戻る。
S116では、カメラ制御回路B102は、CSをHiレベルに変化させて、一連のSPI通信を終了する。
図3(d)のフローチャートは、SPIプロトコルBにおいてアクセサリ制御回路201が行う処理を示している。
S211では、アクセサリ制御回路201は、CSがLoに変化しているか否かを確認する。CSがLoに変化している場合はS212に進み、CSがLoに変化していない場合はS211に戻る。
S212では、アクセサリ制御回路201は、SPI通信可能な状態であるか否かを確認する。SPI通信を可能な場合はS213に進み、SPI通信を可能ではない場合はS214に進む。
S213では、アクセサリ制御回路201は、MISOをHiレベルに制御してS215に進む。
S214では、アクセサリ制御回路201は、MISOをLoレベルに制御してS212に戻る。
S215では、アクセサリ制御回路201は、SCLK信号入力に応じてMOSIデータの入力制御とMISOデータの出力制御を行って1バイトデータの通信を行う。
S216では、アクセサリ制御回路201は、CSがHiに変化しているか否かを確認する。CSがHiに変化している場合はSPI通信が終了したと判断し、CSがHiに変化していない場合は次の1バイト通信を行うためにS212に戻る。
図4は、本実施例においてSPI通信にてカメラ100からアクセサリ200への動作実行命令(コマンド)を通知する際の通信内容を示している。
カメラ制御回路B102は、最初の1バイト目の通信において、MOSIデータとして、コマンド番号を示す情報CMDをアクセサリ制御回路201に送信する。アクセサリ制御回路201は、MISOデータとして、通信可能状態であることを示す情報である0xA5の値をカメラ制御回路B102に送信する。アクセサリ制御回路201は、1バイト目の通信処理を実行できない場合には、MISOデータとして、0xA5以外の値をカメラ制御回路B102に送信する。
カメラ制御回路B102は、2バイト目の通信において、コマンド番号CMDに対応した引数MOSI_DATA1をアクセサリ制御回路201に送信する。そして3バイト目から(N-2)バイト目以降も同様に、コマンド番号CMDに対応した引数MOSI_DATA2~MOSI_DATA[N-3]をアクセサリ制御回路201に送信する。
アクセサリ制御回路201は、2バイト目の通信において、MISOデータとして、1バイト目に受信したコマンド番号CMDをカメラ制御回路B102に送信する。これにより、カメラ制御回路B102が、アクセサリ制御回路201がMOSIデータを正しく受信できていることを判別できるようにしている。
さらにアクセサリ制御回路201は、3バイト目の通信において、MISOデータとしてコマンド番号CMDに対応した戻り値MISO_DATA1をカメラ制御回路B102に送信する。そして4バイト目から(N-2)バイト目以降も同様に、コマンド番号CMDに対応した引数MISO_DATA2~MISO_DATA[N-4]をカメラ制御回路B102に送信する。
なお、引数及び戻り値の数は、コマンド番号毎にあらかじめ決められているものとする。また、引数と戻り値のどちらか一方または両方がなくてもよい。
カメラ制御回路B102は、(N-1)バイト目の通信において、MOSIデータとして、チェックサムデータCheckSum_Cをアクセサリ制御回路201に送信する。チェックサムデータCheckSum_Cは、下記式で算出される値である。
CheckSum_C=EXOR(AND( SUM(CMD, MOSI_DATA1, …, MOSI_DATA[N-3]), 0xFF ), 0xFF )
また、アクセサリ制御回路201は、MISOデータとして、0x00を送信する。
次に、カメラ制御回路B102は、Nバイト目の通信において、MOSIデータとして、0x00をアクセサリ制御回路201に送信する。
また、アクセサリ制御回路201は、MISOデータとして、チェックサムデータCheckSum_Aを送信する。チェックサムデータCheckSum_Aは、(N-1)バイト目の通信でカメラ制御回路B102が受信したCheckSum_Cの値とカメラ制御回路B102が算出したCheckSum_Cの値とが一致している場合は、下記式で算出される。
CheckSum_A=EXOR(AND(SUM(0xA5, CMD,MIS0_DATA1,…, MOSI_DATA[N-4]), 0xFF ), 0xFF )
一方、(N-1)バイト目の通信でカメラ制御回路B102が受信したCheckSum_Cの値とカメラ制御回路B102が算出したCheckSum_Cの値とが一致していない場合は、下記式で算出される。
CheckSum_A=AND(SUM(0xA5, CMD, MIS0_DATA1, …, MOSI_DATA[N-4] ), 0xFF )
図1に示した信号接点(通信要求接点)であるTC11には、アクセサリ200からカメラ100(カメラ制御回路A101)に対して通信を要求するための通信要求信号(第2の入力信号)/WAKEが接続されている。通信要求信号/WAKEは、抵抗を介してカメラマイコン電源VMCU_Cにプルアップされている。カメラ制御回路A101は、通信要求信号/WAKEの変化(立下りエッジ)を検出することでアクセサリ200からの通信要求を検出することができる。
通信接点であるTC12に接続されたSDAおよびTC13に接続されたSCLは、カメラ制御回路A101が通信マスターとなって第1の通信方式であるI2C(Inter-Integrated Circuit)通信方式による通信(以下、I2C通信という)を行うための信号である。SDAはデータ信号、SCLはクロック信号である。SDAとSCLは、カメラマイコン電源VMCU_Cにプルアップされたオープンドレイン通信であり、本実施例では通信周波数は100kbpsとする。
I2C通信では、SDAを介してカメラ100からのデータ送信、アクセサリ200からのデータ送信の双方が行われる。SPI通信とI2C通信を比較すると、I2C通信は、SPI通信に比べて通信速度が低速である。また、SPI通信のほうがI2C通信よりも通信速度が高速であるためデータ量の多い情報の通信に適している。そのため、本実施例のカメラ100とアクセサリ200との通信においては、データ量の多い情報はSPI通信を用いて通信し、データ量の少ない情報はI2C通信を用いて通信する。例えば、まずI2C通信を用いてデータを通信し、このデータに基づいてSPI通信が実行可能である場合やSPI通信を実行する必要がある場合には、更にSPI通信を実行するように制御することができる。
図19(a)、(b)は、I2C通信波形の一例を示した図である。図19(a)はカメラがアクセサリにNバイト分のデータ(DATA[1]~DATA[N])を送信する場合の波形例を示し、図19(b)はカメラがアクセサリからNバイト分のデータ(DATA[1]~DATA[N])を受信する場合の波形例を示している。図19(a)と図19(b)において、上段の波形はSCLで、下段の波形はSDAである。
SDA波形の下には各タイミングにおける信号が示す意味と、SDA信号の出力レベルを制御している制御回路がカメラ制御回路A101であるか、アクセサリ制御回路201であるかを示している。また、通信データは1バイト単位のデータと応答を示す1ビットの情報で構成されている。図の上部には、通信開始から何バイト目のデータであるかを示している。
通信内容の詳細については図20~22を用いて後述するため、図19(a)と図19(b)では概略を説明する。
図19(a)において、1バイト目と2バイト目の通信では、カメラ制御回路A101からアクセサリ制御回路201に対して、送信するデータの格納アドレス情報を通知する。3バイト目から(N+2)バイト目の通信では、カメラ制御回路A101はNバイト分のデータ(DATA[ADDRESS]~DATA[ADDRESS+N])をアクセサリ制御回路201に送信する。
図19(b)において、1バイト目と2バイト目の通信では、カメラ制御回路A101からアクセサリ制御回路201に対して、受信するデータの格納アドレス情報を通知する。3バイト目から(N+3)バイト目の通信で、カメラ制御回路A101はNバイト分のデータ(DATA[ADDRESS]~DATA[ADDRESS+N])をアクセサリ制御回路201から受信する。
図20のフローチャートは、カメラ制御回路A101からアクセサリ制御回路201へNバイトのデータを送信する場合にカメラ制御回路A101が行う処理を示している。
S3001では、カメラ制御回路A101は、内部変数Nに送信するバイト数を示す数値を格納する。例えば、3バイト送信する場合は3を格納する。本実施例では3を格納するものとする。
S3002では、カメラ制御回路A101は、SCLがHiレベルの間に、SDAをLoレベルに変化させる(STARTコンディション)。これによりアクセサリ制御回路201に対して通信の開始を通知する。
S3003では、カメラ制御回路A101は、アクセサリ制御回路201のスレーブアドレスを示すスレーブアドレス情報を送信データの上位7ビットにセットする。本実施例では、アクセサリ制御回路201のスレーブアドレスは2進数で1010000であるとする。
S3004では、カメラ制御回路A101は、WRITE通信であることを示す情報を送信データの下位1ビットにセットする。本ビットに0をセットするとWRITE通信を意味する。
S3005では、カメラ制御回路A101は、S3003とS3004で送信データとしてセットされたデータ(2進数で10100000、16進数で0xA0)をアクセサリ制御回路201に対して送信する。
S3006では、カメラ制御回路A101は、1バイトのデータ送信後にSCLを1クロック分出力するとともに、SDAの信号レベルを確認する。SDAの信号レベルがLoの場合はアクセサリ制御回路201からのデータ受信通知(ACK)と判断してS3007に進む。一方、SDAの信号レベルがHiの場合はアクセサリ制御回路201がデータを正常に受信できていないと判断してS3014に進む。
S3007では、カメラ制御回路A101は、アクセサリ制御回路201に送信するデータの格納アドレスの情報(開始アドレス情報)を送信データとしてセットする。本実施例では開始アドレス情報のサイズは1バイトで、値は0x00であるとする。
S3008では、カメラ制御回路A101は、アクセサリ制御回路201に対してセットされた1バイトの開始アドレス情報(値0x00)を送信する。
S3009では、カメラ制御回路A101は、1バイトの開始アドレス情報データ送信後にSCLを1クロック分出力するとともに、SDAの信号レベルを確認する。SDAの信号レベルがLoの場合はアクセサリ制御回路201からのデータ受信通知(ACK)と判断してS3010に進む。一方、SDAの信号レベルがHiの場合はアクセサリ制御回路201がデータを正常に受信できていないと判断してS3014に進む。
S3010では、カメラ制御回路A101は、内部変数Mに1を格納する。内部変数Mは送信データ数をカウントするための変数である。
S3011では、カメラ制御回路A101は、SCLを1バイト分出力するとともに、SCLがLoの間にSDAを所望の信号レベルに変化させることで、アクセサリ制御回路201に対して1バイトのデータを送信する。ここでは、開始アドレス情報は0x00、内部変数Mは1であるので、アドレス0x00に対応する1バイトのデータを送信する。
S3012では、カメラ制御回路A101は、1バイトのデータ送信後にSCLを1クロック分出力するとともに、SDAの信号レベルを確認する。SDAの信号レベルがLoの場合はアクセサリ制御回路201からのデータ受信通知(ACK)と判断してS3013に進む。一方、SDAの信号レベルがHiの場合はアクセサリ制御回路201がデータを正常に受信できていないと判断してS3014に進む。
S3013では、カメラ制御回路A101は、内部変数Mが内部変数Nと同じ値であるかを確認する。内部変数Mが内部変数Nと同じ値である場合は全データの送信が完了したと判断してS3014に進む。内部変数Mが内部変数Nと同じ値でない場合は送信データがまだ残っていると判断してS3015に進む。
S3015では、カメラ制御回路A101は、内部変数Mに1を加算しS3011に戻る。
このようにして、S3011に戻った後に、カメラ制御回路A101は、送信するデータのアドレスを順次インクリメントし、それぞれのアドレスに対応する1バイトデータを送信する。このようにS3013の処理で内部変数Mと内部変数Nが同じ値になるまで繰り返し1バイトのデータを送信することで、カメラ制御回路A101はアクセサリ制御回路201に対してNバイト分のデータを送信する。本実施例のように内部変数Nを3とした場合は、3バイトのデータ送信が行える。
S3014では、カメラ制御回路A101は、SCLがHiレベルの間に、SDAをHiレベルに変化させる(STOPコンディション)。これによりアクセサリ制御回路201に対して通信の終了を通知する。
図21のフローチャートは、カメラ制御回路A101がアクセサリ制御回路201からNバイトのデータを受信する場合にカメラ制御回路A101が行う処理を示している。
S3101では、カメラ制御回路A101は、内部変数Nに受信するバイト数を示す数値を格納する。例えば、3バイト受信する場合は3を格納する。本実施例では3を格納するものとする。
S3102~S3106では、カメラ制御回路A101は、それぞれS3002~S3006と同じ処理を行っているため説明を省略する。
S3107では、カメラ制御回路A101は、アクセサリ制御回路201から受信するデータの格納アドレスの情報(開始アドレス情報)を送信データとしてセットする。本実施例では開始アドレス情報のサイズは1バイトで、値は0x00であるとする。
S3108では、カメラ制御回路A101は、アクセサリ制御回路201に対してセットされた1バイトの開始アドレス情報(値0x00)を送信する。
S3109では、カメラ制御回路A101は、1バイトの開始アドレス情報データ送信後にSCLを1クロック分出力するとともに、SDAの信号レベルを確認する。SDAの信号レベルがLoの場合はアクセサリ制御回路201からのデータ受信通知(ACK)と判断してS3110に進む。一方、SDAの信号レベルがHiの場合はアクセサリ制御回路201がデータを正常に受信できていないと判断してS3122に進む。
S3110では、カメラ制御回路A101は、S3102と同様にSCLがHiレベルの間に、SDAをLoレベルに変化させ、アクセサリ制御回路201にSTARTコンディションを通知する。
S3111では、カメラ制御回路A101は、アクセサリ制御回路201のスレーブアドレスを示すスレーブアドレス情報を送信データの上位7ビットにセットする。本実施例では、アクセサリ制御回路201のスレーブアドレスは2進数で1010000であるとする。
S3112では、カメラ制御回路A101は、READ通信であることを示す情報を送信データの下位1ビットにセットする。本ビットに1をセットするとREAD通信を意味する。
S3113では、カメラ制御回路A101は、S3003とS3004で送信データとしてセットされたデータ(2進数で10100001、16進数で0xA1)をアクセサリ制御回路201に対して送信する。
S3114では、カメラ制御回路A101は、1バイトのデータ送信後にSCLを1クロック分出力するとともに、SDAの信号レベルを確認する。SDAの信号レベルがLoの場合はアクセサリ制御回路201からのデータ受信通知(ACK)と判断してS3115に進む。一方、SDAの信号レベルがHiの場合はアクセサリ制御回路201がデータを正常に受信できていないと判断してS3122に進む。
S3115では、カメラ制御回路A101は、内部変数Mに1を格納する。内部変数Mは受信データ数をカウントするための変数である。
S3116では、カメラ制御回路A101は、SCLを1バイト分出力するとともに、SCLがLoからHiに変化したタイミングのSDAの信号レベルを読み出す。これにより、アクセサリ制御回路201から1バイト分のデータを受信することが可能となっている。受信した1バイトデータはアドレス0x00に対応するデータとして、揮発性メモリ125に記憶したり、所定の処理に用いたりすることができる。
S3117では、カメラ制御回路A101は、1バイトのデータを正常に受信できているか判別する。正常に受信できている場合はS3118に進む。正常に受信できていない場合はS3119に進む。
S3118では、カメラ制御回路A101は、内部変数Mが内部変数Nと同じ値であるかを確認する。内部変数Mが内部変数Nと同じ値である場合は全データの受信が完了したと判断してS3119に進む。内部変数Mが内部変数Nと同じ値でない場合は受信データがまだ残っていると判断してS3120に進む。
S3120では、カメラ制御回路A101は、SCLを1バイト分出力するとともに、SDAをLoレベルに制御することで、アクセサリ制御回路201に対してデータ受信通知(ACK)を行い、引き続きデータ通信を行うことを通知する。
S3121では、カメラ制御回路A101は、カメラ制御回路A101は、内部変数Mに1を加算してS3116に戻る。
このようにして、S3116に戻った後に、カメラ制御回路A101は、受信するデータのアドレスを順次インクリメントし、それぞれのアドレスに対応する1バイトデータを受信する。このようにS3118の処理で内部変数Mと内部変数Nが同じ値になるまで繰り返し1バイトのデータを受信することで、カメラ制御回路A101はアクセサリ制御回路201からNバイト分のデータを受信する。本実施例のように内部変数Nを3とした場合は、3バイトのデータ受信が行える。
S3119では、カメラ制御回路A101は、SCLを1バイト分出力するとともに、SDAをHiレベルに制御することで、アクセサリ制御回路201に対してデータ通信を完了したことを通知する(NACK)。
S3122では、カメラ制御回路A101は、SCLがHiレベルの間に、SDAをHiレベルに変化させる(STOPコンディション)。これによりアクセサリ制御回路201に対して通信の終了を通知する。
図22のフローチャートは、カメラ制御回路A101からアクセサリ制御回路201へNバイトのデータを送信する場合およびカメラ制御回路A101がアクセサリ制御回路201からNバイトのデータを受信する場合にアクセサリ制御回路201が行う処理を示している。
S3201では、アクセサリ制御回路201は、SCLがHiレベルの間に、SDAがLoレベルに変化する(STARTコンディション)のを待つ。アクセサリ制御回路201は、STARTコンディションを検出したらS3202に進む。
S3202では、アクセサリ制御回路201は、内部変数Mに0を格納する。内部変数Mは送信及び受信データ数をカウントするための変数である。
S3203では、アクセサリ制御回路201は、カメラ制御回路A101から送信された1バイトのデータを受信する。
S3204では、アクセサリ制御回路201は、S3203で受信した1バイトデータの上位7ビットのデータが、アクセサリ制御回路201のスレーブアドレス(本実施例では0x50)と一致しているかを判別する。アクセサリ制御回路201のスレーブアドレスと一致している場合はS3205に進む。アクセサリ制御回路201のスレーブアドレスと一致していない場合はS3221に進む。
S3205では、アクセサリ制御回路201は、1バイト受信後の次のSCLクロック出力に対してSDAをLoレベルに制御することで、カメラ制御回路A101に対してデータ受信通知(ACK)を行う。
S3206では、アクセサリ制御回路201は、S3203で受信した1バイトデータの下位1ビットのデータによって、次に行う1バイト通信のデータの種類を判別する。下位1ビットのデータが0の場合は、次に行う1バイト通信のデータはカメラ制御回路A101からアクセサリ制御回路201に対する開始アドレス情報であると判別してS3207に進む。下位1ビットのデータが1の場合は、次に行う1バイト通信のデータはアクセサリ制御回路201からカメラ制御回路A101への送信データであると判別しS3209に進む。
S3207では、アクセサリ制御回路201は、カメラ制御回路A101から送信された1バイトのデータを受信する。受信した1バイトのデータは、以降の通信で送信・受信するデータが格納されているアドレスを示す情報である。本実施例では、図20と図21で説明したように、開始アドレス情報は0x00であるとする。
一方、S3209では、アクセサリ制御回路201は、開始アドレス情報はあらかじめアクセサリ制御回路201が記憶しているアドレス情報あるいは先にあらかじめカメラ制御回路A101から通知されたアドレス情報が用いられる。
S3208では、アクセサリ制御回路201は、1バイトのデータを正常に受信できたと判断した場合には、S3210に進む。1バイトのデータを正常に受信できていないと判断した場合には、S3221に進む。
S3210では、アクセサリ制御回路201は、1バイトのデータ受信後の次のSCLクロック出力に対してSDAをLoレベルに制御することで、カメラ制御回路A101に対してデータ受信通知(ACK)を行う。
S3211では、アクセサリ制御回路201は、SCLがHiレベルの間に、SDAがLoレベルに変化(STARTコンディション)したかを確認する。STARTコンディションを検出した場合は、アクセサリ制御回路201は、次に通信する1バイトのデータは、カメラ制御回路A101からアクセサリ制御回路201に対して送信するデータであり、スレーブアドレスと通信種類を示すデータであると判断してS3212に進む。STARTコンディションを検出しなかった場合は、アクセサリ制御回路201は次に通信する1バイトのデータは、アクセサリ制御回路201がカメラ制御回路A101から受信するデータ情報であると判断してS3216に進む。
S3212では、アクセサリ制御回路201は、カメラ制御回路A101から送信された1バイトのデータを受信する。
S3213では、アクセサリ制御回路201は、S3212で受信した1バイトデータの上位7ビットのデータが、アクセサリ制御回路201のスレーブアドレス(本実施例では0x50)と一致しているかを判別する。アクセサリ制御回路201のスレーブアドレスと一致している場合はS3214に進む。アクセサリ制御回路201のスレーブアドレスと一致していない場合はS3221に進む。
S3214では、アクセサリ制御回路201は、S3203で受信した1バイトデータの下位1ビットのデータによって、次に行う1バイト通信のデータの種類を判別する。下位1ビットのデータが0の場合は、S3221に進む。下位1ビットのデータが1の場合は、次に行う1バイト通信のデータはアクセサリ制御回路201からカメラ制御回路A101への送信データであると判別してS3215に進む。
S3215では、アクセサリ制御回路201は、1バイト受信後の次のSCLクロック出力に対してSDAをLoレベルに制御することで、カメラ制御回路A101に対してデータ受信通知(ACK)を行う。
S3222では、アクセサリ制御回路201は、S3207でカメラ制御回路A101から受信した開始アドレス情報またはS3209で決定した開始アドレス情報に対応する1バイトのデータをカメラ制御回路A101に送信する。
S3223では、アクセサリ制御回路201は、内部変数Mに1を加算してS3224に進む。
S3224では、アクセサリ制御回路201は、1バイトのデータ送信後にSDAの信号レベルを確認する。SDAの信号レベルがHiの場合はカメラ制御回路A101がすべてのデータを受信完了した通知(NACK)であると判断してS3225に進む。一方、SDAの信号レベルがHiの場合はカメラ制御回路A101が引き続きアクセサリ制御回路201からのデータ送信を要求していると判断してS3222に戻る。このようにして、S3222に戻った後に、アクセサリ制御回路201は、送信するデータのアドレスを順次インクリメントし、それぞれのアドレスに対応する1バイトデータを送信する。このようにS3224の処理でカメラ制御回路A101からNACKが通知されるまで繰り返し1バイトのデータを送信することで、アクセサリ制御回路201はカメラ制御回路A101に対してNバイト分のデータを送信する。
S3225では、アクセサリ制御回路201は、SCLがHiレベルの間にSDAがHiレベルに変化するSTOPコンディションを待つ。アクセサリ制御回路201は、STOPコンディションを検出すると通信を終了する。
一方、S3216では、アクセサリ制御回路201は、1バイト分のデータを受信し、その1バイトデータはS3207でカメラ制御回路A101から受信した開始アドレス情報に対応するデータとして不図示の不揮発性メモリ等に記憶したり、所定の処理に用いたりする。
S3217では、アクセサリ制御回路201は、内部変数Mに1を加算してS3218に進む。
S3218では、アクセサリ制御回路201は、1バイトのデータを正常に受信できたと判断した場合には、S3219に進む。1バイトのデータを正常に受信できていないと判断した場合には、S3221に進む。
S3219では、アクセサリ制御回路201は、1バイト受信後の次のSCLクロック出力に対してSDAをLoレベルに制御することで、カメラ制御回路A101に対してデータ受信通知(ACK)を行う。
S3230では、アクセサリ制御回路201は、SCLがHiレベルの間にSDAがHiレベルに変化するSTOPコンディションを検出したかを確認する。アクセサリ制御回路201は、STOPコンディションを検出すると通信を終了する。一方、アクセサリ制御回路201は、STOPコンディションを検出しなかった場合には、カメラ制御回路A101から引き続きアクセサリ制御回路201にデータ送信を行ってくると判断してS3216に戻る。
このようにして、S3216に戻った後に、アクセサリ制御回路201は、受信するデータのアドレスを順次インクリメントし、それぞれのアドレスに対応する1バイトデータを受信する。このようにS3220でSTOPコンディションが通知されるまで繰り返し1バイトのデータを受信することで、アクセサリ制御回路201はカメラ制御回路A101からNバイト分のデータを受信する。
このように、カメラ接続部141は、I2C通信方式のデータ信号用の接点TC12と該データ信号用の接点に対して一方の側に配置された(一方の側にて隣り合う)I2C通信方式のクロック信号用の接点TC13を含む。さらにデータ信号用の接点TC12に対して他方の側に(他方の側にて隣り合う位置から順に)配置された、第2の入力信号用の接点TC11、SPI通信方式の入力選択信号用の接点TC10、SPI通信方式の受信用の接点TC09、SPI通信方式の送信用の接点TC08、SPI通信方式のクロック信号用の接点TC07、第1の入力信号用の接点TC06および出力信号用の接点TC05を含む。
アクセサリ200は、不図示の不揮発性メモリ内にアクセサリ情報を格納している。アクセサリ情報は、カメラ100にアクセサリ200の種類や通信および動作(機能)に関する仕様を識別させるための情報である。図5は、アクセサリ情報の例を示している。アクセサリ情報は、アドレス0x00~0x0Fのメモリ空間にマッピングされており、I2C通信によりアクセサリ200からアクセサリ情報を読み出すことが可能である。アクセサリ情報の詳細については後述する。なお、本実施例のI2C通信においては、読み出したデータに対するチェックサム値を通信の最終データとして付加する。
図1に示した通信接点であるTC14に接続されたFNC1信号、TC15に接続されたFNC2信号、TC16に接続されたFNC3信号およびTC17に接続されたFNC4信号は、装着されたアクセサリ200の種類に応じて機能を変更できる機能信号である。例えば、アクセサリ200がマイク機器である場合はTC15を介して通信される信号は音声データに関する信号として、またアクセサリ200がストロボ機器である場合はTC14を介して通信される信号は発光タイミングを通知する信号となる。
なお、装着されたアクセサリの種別によって、同じ接点を介して異なる機能を実現する信号が通信されるようにしてもよい。例えばアクセサリ200が照明以外のアクセサリである場合に、TC14を介して発光タイミングとは異なるタイミングを制御するための同期信号が通信されるようにしてもよい。TC14~TC17は機能信号接点に相当する。機能信号接点の少なくともいずれかを用いた通信を機能信号通信とも称する。機能信号通信は、I2C通信・SPI通信と並行して、I2C通信・SPI通信に依存しないタイミングで通信を実行することができる。
ここでいうアクセサリ種別とは、上述のマイク機器、照明機器等である。性能が異なる照明同士のように、同じ目的の機能を実現するアクセサリは同じ種別のアクセサリである。マイク機器と照明機器のように、異なる目的の機能を実現するアクセサリは異なる種別のアクセサリである。機能信号通信は、I2C通信またはSPI通信によって取得された情報に基づいて実行される。第2のグラウンド接点としてのTC18もGNDに接続されており、TC04と同様に、カメラ100とアクセサリ200の基準電位となる接点である。TC19に接続された差動信号D2NおよびTC20に接続された差動信号D2Pは、それらがペアとなってデータ通信を行うデータ通信信号であり、カメラ制御回路B102と接続されている。TC19とTC20とを介して、例えばUSB通信を行うことが可能である。
TC21はGNDに接続されており、基準電位の接点としてだけではなく、差動信号D2Nと差動信号D2Pの配線インピーダンスをコントロールする接点としての用途も兼ねる。TC21は第4のグラウンド接点に相当する。接点TC01、TC04、TC06、TC18、TC21は、例えば、フレキシブル基板のGND部に接続されていて、フレキシブル基板のGND部がカメラ100のGNDレベルとなる金属性の部材とビス等で固定される。GNDレベルとなる金属性の部材は例えば、アクセサリシュー部においてアクセサリ200と係合する係合部材、カメラ100内部の不図示のベースプレート等がある。
本実施例では、クロック信号であるSCLK(第1のクロック信号)を伝達する接点(第1のクロック接点)TC07の隣に、アクセサリ装着検出信号/ACC_DETが接続されている装着検出接点TC06を配置している。一般に、クロック信号の接点に隣接した接点には、クロック信号の電位変動に伴うノイズ(クロックノイズ)が伝わり、これが誤動作の要因となり得る。特に、本実施例のように接点数が多く、接点間の距離が短い構成においては、その影響がより大きくなる。そこで、SCLK接点TC07の隣に、装着検出接点TC06を配置することで、クロックノイズの影響を抑えることができる。
アクセサリ装着検出信号/ACC_DETは、アクセサリ装着前はプルアップされているが、アクセサリ装着後はGND電位に設定される。一方、クロック信号を伝達するSCLK接点TC07は、アクセサリ装着前はクロック信号を伝達しないので、電位の変動がなく、アクセサリ装着後にのみクロック信号を伝達するために電位が変動する。
SCLK接点TC07がクロック信号を伝達する際に、装着検出接点TC06はGND電位になっている。このため、装着検出接点TC06がクロックノイズを受けても、カメラ100やアクセサリ200の制御回路の電位は変動しにくいため、誤動作を防ぐことができる。また、装着検出接点TC06よりも離れた位置へクロックノイズが伝わるのを抑制することができる。その結果、GND端子を配置せずに済むので、接点数を増やさずにクロックノイズの影響を抑制することができる。
また、接点(第2のクロック接点)TC13にもクロック信号としてのSCL(第2のクロック信号)が伝達される。しかし、SCLK接点TC07に伝達されるSCLKの方がSCLよりも周波数が高く、SCLK接点TC07からの方がSCL接点TC13からに比べてクロックノイズをより多く発生する。このため、装着検出接点TC06を、SCL接点TC13の隣ではなく、SCLK接点TC07の隣に配置する方が、クロックノイズによる誤動作を防ぐ効果が大きい。
さらに、周波数の違いだけでなく、SCL接点TC13で伝達されるSCLは、I2C通信規格のクロック信号であり、信号線の電圧の変動はオープンドレイン接続で駆動される。一方、SCLK接点TC07で伝達されるSCLKは、SPI通信規格のクロック信号であり、信号線の電圧の変動はCMOS出力で駆動される。このため、SCL接点TC13の方がSCLK接点TC07に比べて電圧の変動のエッジが緩やかになりやすく、クロックノイズが発生しにくい。したがって、装着検出接点TC06を、SCL接点TC13の隣ではなくSCLK接点TC07の隣に配置する方がクロックノイズによる誤動作を防ぐ効果が大きい。
また、第1および第2の差動信号接点TC19、TC20にもペアで差動信号D1N、D1Pを伝達して、クロック信号を伝達する場合がある。その際、SCLK接点TC07やSCL接点TC13よりも周波数が高いクロック信号(第3のクロック信号)を伝達することがある。しかし、差動信号D1N、D1Pはペア信号であるために、シングルエンド信号を伝達するSCLK接点TC07やSCL接点TC13よりもクロックノイズの放射は少ない。このため、装着検出接点TC06を、第1および第2の差動信号接点TC19、TC20の隣ではなく、SCLK接点TC07の隣に配置する方が、クロックノイズによる誤動作を防ぐ効果が大きい。
なお、SCLK接点TC07の装着検出接点TC06とは反対側の隣に配置された接点(第1のデータ接点)TC08は、MOSI(第1のデータ信号)を伝達する。MOSIはデータ信号であるので、クロックノイズの影響を受けやすいように見える。しかし、MOSIは、SCLK接点TC07で伝達されるクロック信号と同一のSPI通信規格のデータ信号であるため、電位の変動タイミングがクロック信号と同期しており、クロックノイズの影響を受けにくい。このため、接点TC08をGND電位に固定しなくてよく、MOSI接点として用いることができる。
アクセサリ200は、電池205を有し、該電池205からの電力供給を受けるとともに、カメラ接続部141とアクセサリ接続部211を介してカメラ100からの電力供給も受ける。アクセサリ200におけるアクセサリ処理手段としてのアクセサリ制御回路201は、アクセサリ200全体を制御する回路であり、CPU等のプロセッサ(マイクロコンピュータ)により構成されている。アクセサリ制御回路201は、コンピュータプログラムに従って各種制御や処理を実行する。
アクセサリ電源回路202は、アクセサリ200の各回路に供給するための電源を生成する回路であり、DC/DCコンバータ回路やLDOやチャージポンプ回路等で構成されている。アクセサリ制御回路201には、アクセサリ電源回路202で生成された電圧1.8Vがアクセサリマイコン電源VMCU_Aとして常時供給される。なお、アクセサリ電源回路202で生成される電圧が1.8Vと異なる値である構成であってもよい。アクセサリ電源回路202を制御することで、アクセサリ200の各回路への電源供給のオン・オフ制御が行われる。
充電回路(被給電手段)204は、カメラ100から供給された電力を用いて電池205を充電するための回路である。アクセサリ制御回路201は、充電動作を行うのに十分な電力をカメラ100から供給されていると判断できる場合には、充電回路204を制御して電池205への充電を行う。なお、本実施例ではアクセサリ200に電池205が装着される場合について説明するが、電池205が装着されずにカメラ100からアクセサリ電源回路(被給電手段)202への電力供給のみでアクセサリ200が動作してもよい。この場合、充電回路204は不要となる。
差動通信回路207は、カメラ100と差動通信を行うための回路であり、カメラ100との間でデータの送受信を行うことができる。外部通信IF回路208は、不図示の外部機器とデータ通信を行うためのIF回路であり、Ethernet通信IF、無線LAN通信IFおよび公衆ネットワーク通信IF等である。アクセサリ制御回路201は、差動通信回路207および外部通信IF回路208を制御することで、カメラ100から受信したデータを外部機器に送信したり外部機器から受信したデータをカメラ100に送信したりすることができる。
機能回路206は、アクセサリ200の種類に応じて異なる機能を有する回路である。機能回路206は、例えば、アクセサリ200がストロボ機器の場合には、発光回路、充電回路等である。また、アクセサリ200がマイク機器の場合には、音声コーデック回路やマイク回路等である。
外部接続端子209は、外部機器と接続するためのコネクタ端子であり、本実施例ではUSB TYPE-Cコネクタである。接続検出回路210は、外部接続端子209に外部機器が接続されたことを検出するための回路である。アクセサリ制御回路201は、接続検出回路210の出力信号を受信することで、外部接続端子209への外部機器接続を検出することができる。
電源スイッチ203は、アクセサリ200の電源(つまりは動作)をオン・オフするためにユーザにより操作されるスイッチである。アクセサリ制御回路201は、電源スイッチ203が接続された端子の信号レベルを読み出すことでオンポジション/オフポジションを検出することができる。
操作スイッチ212は、アクセサリ200に各種指示を与えたり各種設定を行ったりするためにユーザにより操作されるスイッチであり、ボタン、十字キー、スライドスイッチ、ダイヤルスイッチ、タッチセンサ等を含む。操作スイッチ212が操作されると、アクセサリ制御回路201は操作を検出して、該操作に応じた所定の処理を実行する。
アクセサリ接続部211は、一列に配列された21個の接点TA01~TA21を介してカメラ100と電気的な接続を行うためのコネクタである。接点TA01~TA21は、これらの配列方向の一端から他端にこの順で配置されている。
TA01は、GNDに接続されており、基準電位の接点としてだけではなく、差動信号D1Nと差動信号D1Pの配線インピーダンスをコントロールする接点としての用途も兼ねる。TA01は第3のグラウンド接点に相当する。
TA02に接続された差動信号D1NとTA03に接続された差動信号D1Pは、それらがペアとなってデータ通信を行うデータ通信信号であり、差動通信回路207と接続されている。TA02、TA03、後述するTA07~TA10、TA12~TA17、TA19およびTA20は通信接点である。
第1のグラウンド接点としてのTA04は、GNDに接続されており、カメラ100とアクセサリ200の基準電位の接点となる。TA04は、次に説明するTA05よりも接点の配列方向における外側に配置されている。
電源接点としてのTA05には、アクセサリ電源回路202と充電回路204が接続されており、カメラ100から供給されるアクセサリ電源VACCが接続される。
装着検出接点としてのTA06は、GNDに直接接続されている。アクセサリ200がカメラ100に装着されたときに、アクセサリ制御回路201は前述したアクセサリ装着検出信号/ACC_DETをアクティブ電位としてのLoレベル(GND電位)にする。これにより、カメラ100にアクセサリ200の装着を検出させる。
通信接点であるTA07に接続されたSCLK、TA08に接続されたMOSI、TA09に接続されたMISOおよびTA10に接続されたCSは、アクセサリ制御回路201が通信スレーブとなってSPI通信を行うための信号である。
信号接点(通信要求接点)であるTA11には、アクセサリ制御回路201からカメラ100に対して通信を要求するための通信要求信号/WAKEが接続されている。アクセサリ制御回路201は、カメラ100との通信が必要と判断した場合に、通信要求信号/WAKEをHiレベルからLoレベルに変化させることで、カメラ100に対して通信要求を行う。
アクセサリ200が装着状態であることを検出することに応じてカメラ制御回路101からアクセサリ200に対してTC5を介した電源供給がなされると、アクセサリ制御回路201は通信要求信号/WAKEの信号レベル(電位)をHiレベルからLoレベルに変化させることで、電源供給を受けた旨をカメラ制御回路101に通知する。
アクセサリ制御回路201は、カメラからの要求がなくとも通信要求信号/WAKEの信号レベル(電位)をHiレベルからLoレベルに変化させることで、アクセサリ200がカメラ100と通信すべき要因が発生したことを通知することができる。この構成により、カメラ制御回路101はアクセサリ200に通信すべき要因が発生したか否かを、ポーリングすることよって周期的に確認する動作を省略することができる。また、アクセサリ200は通信すべき要因が発生した場合にその旨をリアルタイムにカメラ100に通信することが可能である。
通信接点であるTA12に接続されたSDAおよびTA13に接続されたSCLは、アクセサリ制御回路201が通信スレーブとなってI2C通信を行うための信号である。
このように、アクセサリ接続部211は、I2C通信方式のデータ信号用の接点TA12と該データ信号用の接点に対して一方の側に配置された(一方の側にて隣り合う)I2C通信方式のクロック信号用の接点TA13を含む。さらにデータ信号用の接点TAB12に対して他方の側に(他方の側にて隣り合う位置から順に)配置された、第2の入力信号用の接点TA11、SPI通信方式の入力選択信号用の接点TA10、SPI通信方式の送信用の接点TA09、SPI通信方式の受信用の接点TA08、SPI通信方式のクロック信号用の接点TA07、第1の入力信号用の接点TA06および出力信号用の接点TA06を含む。
通信接点(機能信号接点)であるTA14に接続されたFNC1信号、TA15に接続されたFNC2信号、TA16に接続されたFNC3信号およびTA17に接続されたFNC4信号は、アクセサリ200の種類に応じて機能を変更できる機能信号である。例えば、アクセサリ200がマイク機器である場合は音声データに関する信号として、またアクセサリ200がストロボ機器である場合は発光タイミングを通知する信号となる。
第2のグラウンド接点としてのTA18もGNDに接続されており、TA04と同様に、カメラ100とアクセサリ200の基準電位の接点となる。TA19に接続された差動信号D2NとTA20に接続された差動信号D2Pは、それらがペアとなってデータ通信を行うデータ通信信号であり、外部接続端子209と接続されている。
TA21はGNDに接続されており、基準電位の接点としてだけではなく、差動信号D2Nと差動信号D2Pの配線インピーダンスをコントロールする端子としての用途も兼ねる。TA21は第4のグラウンド接点に相当する。
接点TA01、TA04、TA06、TA18、TA21は、例えば、フレキシブル基板のGND部に接続されていて、フレキシブル基板のGND部がアクセサリ200のGNDレベルとなる金属性の部材と不図示のビス等で固定される。GNDレベルとなる金属性の部材は例えば、カメラ100のアクセサリシュー部と係合するシュー取付脚やアクセサリ200内部の不図示のベースプレート等がある。
図6は、アクセサリ200がカメラ100に装着されたときに行われる処理のシーケンスを示している。ここでは、カメラ100(カメラ制御回路A101、B102)とアクセサリ200(アクセサリ制御回路201)のそれぞれの処理の概要を説明し、詳細は後述する。
アクセサリ200がカメラ100に装着されると、アクセサリ装着検出信号/ACC_DETがLoレベルとなる。これにより、カメラ制御回路A101は、カメラ100にアクセサリ200が装着されたものと判定する。アクセサリ200が装着されたと判定したカメラ制御回路A101は、アクセサリ用電源回路A131の出力をオンするために、電源制御信号CNT_VACC1をHiレベルにする。アクセサリ用電源回路A131は、電源制御信号CNT_VACC1がHiになることに応じてアクセサリ電源VACCを出力する。
VACCを受電したアクセサリ電源回路202は、アクセサリ制御回路201のための電源VMCU_Aを生成する。これにより、アクセサリ制御回路201が起動する。起動したアクセサリ制御回路201は、アクセサリ200内の各ブロックの初期化を行う。その後、アクセサリ制御回路201は、カメラ100との通信が可能な状態になると、通信要求信号/WAKEをLoレベルとする。
カメラ制御回路A101は、通信要求信号/WAKEがLoレベルとなることで、アクセサリ200が通信可能な状態になったことを検出する。カメラ制御回路A101は、I2C通信によってアクセサリ200に対してアクセサリ情報の通信を要求する。アクセサリ情報の通信要求を受信したアクセサリ制御回路201は、カメラ制御回路A101にアクセサリ情報を送信する。アクセサリ情報を送信したアクセサリ制御回路201は、通信要求信号/WAKEをHiレベルとする。
カメラ制御回路A101は、受信したアクセサリ情報に基づいて、装着されたアクセサリの制御が可能か否か等を判定する。また、アクセサリ用電源回路B132をオンにする。そしてカメラ制御回路A101は、カメラ100の種々の設定を行い、これが完了すると、カメラ制御回路B102に対してアクセサリ情報を通知する。
カメラ制御回路B102は、通知されたアクセサリ情報に基づいて、SPI通信によってアクセサリ200に対する制御コマンドの通知(アクセサリ制御通信)を行ったり機能信号に対応する制御(機能信号制御)を行ったりする。すなわち、SPI通信によってアクセサリ200を制御する。
アクセサリ制御回路201は、カメラ100からのSPI通信による制御コマンドに対して応答するとともに、機能信号に応じた動作を行う。
ここで、図5に例示したアクセサリ情報について説明する。アドレス(address)0x00のD7-D0データは、アクセサリの種類を示す情報(以下、アクセサリ種別情報という)である。図7は、アクセサリ種別情報の例を示している。例えば、0x81はストロボ機器、0x82はインタフェース変換アダプタ機器、0x83はマイク機器、0x84は複数のアクセサリ機器をカメラ100に装着するためのマルチアクセサリ接続アダプタ機器を示している。
アダプタ機器は、カメラ100とストロボ機器やマイク機器等のアクセサリとの間に装着される中間アクセサリである。インタフェース変換アダプタ機器は、カメラ100のインタフェースとアクセサリのインタフェースが異なる場合に、カメラ100とアクサセリとの間に互換性を持たせるためにインタフェースを変換するアダプタ機器である。マルチアクセサリ接続アダプタ機器は、複数のアクセサリを装着可能なアダプタ機器である。
図5におけるアドレス0x01のD7-D0データは、アクセサリ200の機種(型式)を示す情報(以下、アクセサリ型式情報という)である。先に説明したアクセサリ種別情報と本情報とによって、アクセサリの種類と機種を識別することが可能である。
アドレス0x02のD7-D0データは、アクセサリ200のファームウェアのバージョンを示す情報である。
アドレス0x03のD7-D6データは、カメラ100の不図示の電源スイッチがオフされた電源オフ状態(第1の省電力状態)においてアクセサリ200へのアクセサリ電源VACCの供給(電力供給)を要求するか否かを示す仕様情報(以下、電源オフ給電要否情報という)である。本情報が0の場合には給電不要を示し、1の場合にはアクセサリ用電源回路A131による給電要求を示す。また、2の場合にはアクセサリ用電源回路B132による給電要求を示す。
アドレス0x03のD5-D4データは、カメラ100がオートパワーオフ機能によって省電力状態(第2の省電力状態:以下、オートパワーオフ状態という)になったときにアクセサリ200へのアクセサリ電源VACCの供給を要求するか否かを示す仕様情報(以下、オートパワーオフ給電要否情報という)である。カメラ100は、消費電力を抑えるために、何の操作もされない無操作状態が所定時間継続すると、自動的に電源をオフにするオートパワーオフ機能を有する。本情報が0の場合には給電不要を示し、1の場合にはアクセサリ用電源回路A131による給電要求を示し、2の場合にはアクセサリ用電源回路B132による給電要求を示す。
アドレス0x03のD3-D2データは、アクセサリ200が電池205を備えているか否かを示す仕様情報である。本情報が0の場合には電池を備えていないことを示し、1の場合には電池を備えていることを示す。
アドレス0x03のD1-D0データは、アクセサリ200が電池205への充電機能を備えているか否かを示す仕様情報(以下、充電対応情報という)である。本情報が0の場合には充電機能を備えていないことを示し、1の場合には充電機能を備えていることを示す。
アドレス0x04のD7-D0データは、アクセサリ200がカメラ100から給電されるアクセサリ電源VACCに対する要求電力を示す仕様情報である。例えば、本情報を10倍した値が電流値を示し、本情報が10の場合には100mAを、本情報が100の場合には1Aを示す。また、本情報の情報量を削減する方法として、本情報を電流値に関連付けた簡易な情報としてもよい。例えば、本情報が0の場合には100mAを示し、本情報が1の場合には300mAを示し、本情報が3の場合には450mAを示し、本情報が4の場合には600mAを示すとしてもよい。
アドレス0x05のD7データは、アクセサリ200がファームアップモードか否かを示す仕様情報である。本情報が0の場合にはファームアップモードではないことを示し、1の場合にはファームアップモードであることを示す。
アドレス0x05のD6データは、アクセサリ200がファームアップ機能を備えているか否かを示す仕様情報である。本情報が0の場合にはファームアップ機能を備えていないことを示し、1の場合にはファームアップ機能を備えていることを示す。
アドレス0x05のD5-D4データは、アクセサリ200が中間接続アクセサリに装着された場合の動作を許可するか否かを示す仕様情報である。本情報が0の場合には動作を許可しないことを示し、1の場合には動作を許可することを示す。
アドレス0x05のD3-D2データは、アクセサリ200がカメラ100が起動するときにカメラ100による中間接続アクセサリの装着の確認を必要とするか否かを示す仕様情報である。本情報が0の場合には確認が不要であることを示し、1の場合には確認が必要であることを示す。
アドレス0x05のD1-D0データは、アクセサリ200がI2C通信によるコマンド通知に対応しているか否かを示す仕様情報である。本情報が0の場合にはコマンド通知に非対応であることを示し、1の場合にはコマンド通知に対応していることを示す。
アドレス0x06のD5-D4データは、アクセサリ200が通信要求信号/WAKEをカメラ100に通知した後にカメラ100に通信要求の発生要因の通知に使用可能な通信方式である通信要求要因取得方式(使用通信方式:以下、要因取得方式という)を示す仕様情報である。本情報が0の場合にはI2C通信方式が要因取得方式であることを示し、1の場合にはSPI通信方式が要因取得方式であることを示し、2の場合にはI2C通信方式とSPI通信方式の両方が要因取得方式であることを示す。
アドレス0x06のD3-D0データは、アクセサリ200がFNC1信号(機能信号1)、FNC2信号(機能信号2)、FNC3信号(機能信号3)およびFNC4信号(機能信号4)に対応する機能を備えているか否かを示す仕様情報である。D0データはFNC1信号、D1データはFNC2信号、D2データはFNC3信号、D3データはFNC4信号にそれぞれ対応し、それぞれの値が0の場合には該機能を備えていないことを示し、1の場合には該機能を備えていることを示す。
アドレス0x0AのD7データは、アクセサリ200が通信要求信号/WAKEをカメラ100に通知した際にカメラ100に対して起動を要求するか否かを示す仕様情報である。本情報が0の場合には起動を要求することを示し、1の場合には起動を要求しないことを示す。
アドレス0x0AのD6-D0データは、アクセサリ200がカメラ100に対して通知した通信要求信号/WAKEの発生要因を示す情報である。
図8は、通信要求信号/WAKEの発生要因(以下、通信要求要因ともいう)の例を示している。ここでは、アクセサリ200がマイク機器である場合の例を示している。例えば、要因番号0x00は、操作スイッチ212のうちメニュー呼び出しスイッチが操作(押下)されたことを示す番号である。要因番号0x01は、アクセサリ200が音声信号の出力制御を完了したことを示す番号である。要因番号0x02は、アクセサリ200が音声信号のミュート処理を完了した(ミュートを解除した)ことを示す番号である。このように、本実施例では、通信要求信号/WAKEの発生要因に関する情報としての通信要求要因(番号)の情報をアクセサリ情報の1つとしてアクセサリ200からカメラ100に通知(送信)できるようにしている。
図5において、アドレス0x0CのD1データは、アクセサリ200が対応しているSPI通信プロトコルを示す仕様情報であり、本情報が0の場合はSPIプロトコルAに対応していることを示し、1の場合にはSPIプロトコルBに対応していることを示す。
アドレス0x0CのD0データは、アクセサリ200が対応しているSPI通信のCSの制御論理を示す仕様情報であり、本情報が0の場合はCSがLoアクティブ論理であることを示し、1の場合はCSがHiアクティブ論理であることを示す。
アドレス0x0DのD7-D0データは、アクセサリ200がSPIプロトコルAで通信を行い、かつアドレス0x05のD7データが0の場合、すなわちアクセサリ200がファームアップモードではない場合の通信バイト間隔として必要な時間を示す仕様情報である。
アドレス0x0EのD7-D0データは、アクセサリ200がSPIプロトコルAで通信を行い、かつアドレス0x05D7データが1の場合、すなわちアクセサリ200がファームアップモードである場合の通信バイト間隔として必要な時間を示す仕様情報である。
図9(a)、(b)は、アドレス0x0Dとアドレス0x0Eのデータ(0~7)に対応する通信バイト間隔の時間(通信間隔)を示している。図9(a)はアドレス0x0Dのデータの情報に対する通信間隔を示し、図8(b)はアドレス0x0Eのデータに対する通信間隔を示している。
図5において、アドレス0x0Fのデータは、アドレス0x00から0x0Eまでの総和を示すチェックサム値のデータである。
図10は、アクセサリ200がカメラ100に装着されてアクセサリ200の機能を有効にするまでにカメラ制御回路A101が実行する起動処理を示している。
S401では、カメラ制御回路A101は、アクセサリ装着検出信号/ACC_DETの信号レベルをモニタし、アクセサリ200が装着されているか否かを判断(検出)する。カメラ制御回路A101は、/ACC_DETの信号レベルがHiであればアクセサリ200は未装着であると判断してS401に戻り、再び装着を判断する。信号レベルがLoであればアクセサリ200が装着されたと判断してS402に進む。
S402では、カメラ制御回路A101は、アクセサリ用電源回路A131の出力をオンするために、電源制御信号CNT_VACC1をHiレベルに制御する。そしてS403に進む。アクセサリ用電源回路A131は、電源制御信号CNT_VACC1がHiレベルになると、アクセサリ電源VACCを出力する。
S403では、カメラ制御回路A101は、過電流検知信号DET_OVCの信号レベルをモニタし、過電流が流れていないかを判断する。カメラ制御回路A101は、DET_OVCの信号レベルがLoであれば過電流は流れていないと判断してS404に進み、信号レベルがHiであれば過電流が流れたと判断してS405に進み、エラー処理を行う。
S404では、カメラ制御回路A101は、アクセサリ200からの通知信号である通信要求信号/WAKEの信号レベルをモニタし、アクセサリ200の初期化が完了しているか否かを判断する。カメラ制御回路A101は、/WAKEの信号レベルがLoレベル(アクティブ)であれば初期化が完了していると判断してS406に進み、信号レベルがHiレベルであれば初期化が完了していない判断してS404に戻り、再び初期化の完了を判断する。
S406では、カメラ制御回路A101は、アクセサリ200に対して初期通信としてI2C通信を行い、15バイトのアクセサリ情報を読み出す。そしてS407に進む。
S407では、カメラ制御回路A101は、S406で読み出したアクセサリ情報に基づいて、装着されたアクセサリ200がカメラ100に対応する機器(対応アクセサリ)であるか否かを判断する。カメラ制御回路A101は、装着されたアクセサリ200が対応アクセサリであると判断するとS408に進み、対応アクセサリでないと判断するとS409に進んでエラー処理を行う。
S408では、カメラ制御回路A101は、アクセサリ用電源回路B132の出力をオンするために、電源制御信号CNT_VACC2をHiレベルに制御する。そしてS410に進む。アクセサリ用電源回路B132は、電源制御信号CNT_VACC2がHiレベルになると、アクセサリ電源VACCを出力する。本実施例においては、電源制御信号CNT_VACC1と電源制御信号CNT_VACC2の両方がHiレベルになると、アクセサリ用電源回路B132による出力がアクセサリ電源VACCに供給される。
S410では、カメラ制御回路A101は、カメラ制御回路B102に対して、S406で読み出したアクセサリ情報を通知する。これにより、アクセサリ200の装着に伴うカメラ100での起動処理を完了する。
図11のフローチャートは、アクセサリ200がカメラ100に装着されてアクセサリ200の機能を有効にするまでにカメラ制御回路B102が実行する有効化処理を示している。
S501では、カメラ制御回路B102は、カメラ制御回路A101からアクセサリ情報が通知されたか否かを判断する。カメラ制御回路B102は、アクセサリ情報が通知されていなければS501に戻って再び通知を判断し、アクセサリ情報が通知されていればS502に進む。
S502では、カメラ制御回路B102は、カメラ制御回路A101から通知されたアクセサリ情報に基づいて、機能信号であるFNC1~FNC4に対する設定を行う。例えば、アクセサリ200がマイク機器であると通知された場合には、FNC1が音声データクロック信号BCLKとして、FNC2が音声データチャンネル信号LRCLKとして、FNC3が音声データ信号SDATAとしてそれぞれ機能するように設定する。また別の例として、アクセサリ200がストロボ機器であると通知された場合には、FNC4がストロボ発光同期信号XOUTとして機能するように設定する。なお、アクセサリ200に対して制御が不要な機能信号についても、カメラ100とアクセサリ200の動作に支障が生じないように所定の設定を行う。
S503では、カメラ制御回路B102は、カメラ制御回路A101から通知されたアクセサリ情報に基づいて、SPI通信におけるCSの制御論理の設定を行う。
S504では、カメラ制御回路B102は、アクセサリ200に対する所定のイベントが発生しているか否かを判断する。カメラ制御回路B102は、イベントが発生していなければS504に戻って再びイベントの発生を判断し、イベントが発生していればS505に進む。
S505では、カメラ制御回路B102は、S504で発生したイベントがアクセサリ200とのSPI通信を要するイベントであるかを判断する。カメラ制御回路B102は、イベントがSPI通信を要するものであればS506に進み、そうでなければS507に進む。
S507では、カメラ制御回路B102は、S504で発生したイベントが機能信号を用いたアクセサリ200の制御が必要なイベントであるか否かを判断する。カメラ制御回路B102は、イベントが機能信号を用いた制御を要するものであればS508に進み、そうでなければS509に進む。
S506では、カメラ制御回路B102は、アクセサリ200に対してSPI通信を行う。ここで行われるSPI通信としては、例えば、アクセサリ200がマイク機器である場合はマイク動作をオンさせる指示の通信、マイク動作をオフさせる指示の通信、マイクの集音指向性を切り替える指示の通信およびマイクのイコライザ機能を切り替える指示の通信等がある。また、アクセサリ200がストロボ機器である場合は、該ストロボ機器の設定情報を読み出す通信やストロボ機器に対して設定情報を通知する通信等がある。カメラ制御回路B102は、S506でのSPI通信が完了すると、S504に戻って再びイベントの発生を判断する。
S508では、カメラ制御回路B102は、アクセサリ200に対して機能信号を用いた制御を行う。例えば、アクセサリ200がマイク機器である場合は、FNC1の音声データクロック信号BCLKとFNC2の音声データチャンネル信号LRCLKを出力するとともに、FNC3の音声データ信号SDATAを取り込む。これにより、カメラ100はマイク機器からの音声データを取得可能となる。また、アクセサリ200がストロボ機器である場合は、FNC4のストロボ発光同期信号XOUTを所定のタイミングで出力する。これにより、カメラ100はストロボ機器に発光を指示することができる。こうして記機能信号を用いた制御が完了すると、カメラ制御回路B102は、S504に戻って再びイベントの発生を判断する。
また、S509では、カメラ制御回路B102は、S504で発生したイベントに応じて所定のカメラ内制御を行う。カメラ内制御としては、例えば、アクセサリ200がマイク機器である場合は、記録用メモリ126への音声データの記録を開始または終了する制御や、音声データに対するイコライザ処理を行う制御等がある。また、アクセサリ200がストロボ機器である場合は、ストロボ機器が発光した光を撮像センサ122で蓄積取得する測光制御や、ストロボ機器の発光量の指示値を演算する制御等がある。こうしてカメラ内制御が完了すると、カメラ制御回路B102は、S504に戻って再びイベントの発生を判断する。
以上説明したカメラ制御回路A101による起動処理およびカメラ制御回路B102による有効化処理によって、カメラ100が装着されたアクセサリ200に対する制御を行うことが可能となる。
図12のフローチャートは、アクセサリ200がカメラ100に装着されてからアクセサリ200の各種機能動作が可能になるまでにアクセサリ制御回路201が実行する処理を示している。
S601では、アクセサリ制御回路201は、カメラ100からのアクセサリ電源VACCがオンになるのを待つ。アクセサリ200が電池205を備えていない場合は、アクセサリ制御回路201へ電源が供給されてアクセサリ制御回路201自身が動作を開始したことでアクセサリ電源VACCがオンしたことを検出することができる。アクセサリ200が電池205を備える場合は、アクセサリ制御回路201がアクセサリ電源VACCの電圧値をモニタするようにしてアクセサリ電源VACCがオンしたことを検出してもよい。
S602では、アクセサリ制御回路201は、所定の初期設定を行う。例えば、マイコンの動作周波数の設定、マイコンの入出力制御ポートの設定、マイコンのタイマー機能の初期化設定およびマイコンの割り込み機能の初期化設定を行う。
S602での初期設定が完了すると、S603において、アクセサリ制御回路201は、通信要求信号/WAKEをLoレベルに制御する。これにより、カメラ100に対して初期設定が完了したことを通知する。
S604では、アクセサリ制御回路201は、カメラ100からのI2C通信に対して応答して、初期通信として15バイトのアクセサリ情報をカメラ100に送信する。アクセサリ情報には、図5で示した種々の情報が含まれる。
S604の初期通信が完了すると、S605において、アクセサリ制御回路201は、通信要求信号/WAKEをHiレベルに制御する。
S606では、アクセサリ制御回路201は、所定のイベントが発生しているか否かを判断する。アクセサリ制御回路201は、イベントが発生していなければS606に戻って再びイベントの発生を判断し、イベントが発生していればS607に進む。
S607では、アクセサリ制御回路201は、S606で発生したイベントがカメラ100とのSPI通信を要するイベントであるか否かを判断する。アクセサリ制御回路201は、イベントがSPI通信を要するものであればS608に進み、そうでなければS609に進む。
S609では、アクセサリ制御回路201は、S606で発生したイベントがカメラ100とのI2C通信を要するイベントであるか否かを判断する。アクセサリ制御回路201は、イベントがI2C通信を要するものであればS610に進み、そうでなければS611に進む。
S611では、アクセサリ制御回路201は、S606で発生したイベントが機能信号を用いた制御を行うイベントであるか否かを判断する。アクセサリ制御回路201は、イベントが機能信号を用いた制御を要するものであればS612に進み、そうでなければS613に進む。
S613では、アクセサリ制御回路201は、S606で発生したイベントが通信要求信号/WAKEによるカメラ100への通知を行うイベントであるか否かを判断する。アクセサリ制御回路201は、イベントが通信要求信号/WAKEによるカメラ100への通知を要するものであればS614に進み、そうでなければS615に進む。
S608では、アクセサリ制御回路201は、カメラ100とのSPI通信を行う。SPI通信の実行時に通信要求信号/WAKEがLoレベルになっている場合は、SPI通信後に通信要求信号/WAKEをHiレベルに制御する。ここで行われるSPI通信としては、例えば、アクセサリ200がマイク機器である場合は、カメラ100からのマイク動作をオンさせる指示の通信、マイク動作をオフさせる指示の通信、マイクの集音指向性を切り替える指示の通信がある。さらに、マイクのイコライザ機能を切り替える指示の通信等もある。また、アクセサリ200がストロボ機器である場合は、ストロボ機器の設定情報を読み出す通信や、ストロボ機器に対して設定情報を通知する通信等がある。S608での所定のSPI通信が完了すると、アクセサリ制御回路201は、S606に戻って再びイベントの発生を判断する。
S610では、アクセサリ制御回路201は、カメラ100とのI2C通信を行う。I2C通信の実行時に通信要求信号/WAKEがLoレベルになっている場合は、I2C通信後に通信要求信号/WAKEをHiレベルに制御する。ここで行われるI2C通信としては、例えば、アクセサリ制御回路201からカメラ100に対して通知した通信要求信号/WAKEに対する通信要求要因(番号)を読み出すための通信がある。S610でのI2C通信が完了すると、アクセサリ制御回路201は、S606に戻って再びイベントの発生を判断する。
S612では、アクセサリ制御回路201は、カメラ100に対して機能信号を用いた制御を行う。ここで行われる制御としては、例えば、アクセサリ200がマイク機器である場合は、カメラ100から出力されるFNC1の音声データクロック信号BCLKとFNC2の音声データチャンネル信号LRCLKの受信の制御がある。さらに、これらの信号に同期したFNC3の音声データ信号SDATAの出力の制御もある。また、アクセサリ200がストロボ機器である場合は、FNC4のストロボ発光同期信号XOUTの受信する制御と、これに応じたストロボ発光の制御がある。S612での機能信号を用いた制御が完了すると、アクセサリ制御回路201は、S606に戻って再びイベントの発生を判断する。
S614では、アクセサリ制御回路201は、S606で発生したイベントに応じたカメラ100への通信要求要因番号をアクセサリ200の不図示の揮発性メモリに格納し、通信要求信号/WAKEをLoレベルに制御する。通信要求要因番号は、図8に示したように要因内容ごとに割り振られた固有の番号である。S614での通信要求信号/WAKEのLoレベル制御が完了すると、アクセサリ制御回路201は、S606に戻って再びイベントの発生を判断する。
S615では、アクセサリ制御回路201は、S606で発生したイベントに応じたアクセサリ内制御を行う。ここで行われるアクセサリ内制御としては、アクセサリ200が電池205を備える場合の電池残量を検出する制御や、操作スイッチ212の操作を検出する制御等がある。S615でのアクセサリ内制御が完了すると、アクセサリ制御回路201は、S606に戻って再びイベントの発生を判断する。
以上のアクセサリ制御回路201による処理により、アクセサリ200はカメラ100に装着された後に各種機能動作を行うことが可能となる。
次に、図13および図14を用いて、本実施例におけるカメラ100とアクセサリ200間での通信要求信号の使用例について説明する。図13は、図1に示したカメラ制御回路A101、カメラ制御回路B102、アクセサリ制御回路201およびアクセサリ電源回路202を示している。また図13は、図1に示した接点のうち、アクセサリ装着検出信号/ACC_DET用の接点TC06/TA06を含むアクセサリ検出ライン1000、アクセサリ電源VACC用の接点TC05/TA05を含む電源ライン1001および通信要求信号/WAKE用の接点TC11/TA11を含む通信要求ライン1002を示している。さらに図13は、I2C通信用の接点TC12/TA12およびTC13/TA13を含む第1の通信ライン1003と、SPI通信用の接点TC07/TA07~TC10/TA10を含む第2の通信ライン1004を示している。
図14は、アクセサリ200がカメラ100に装着されたときに行われる処理のシーケンスを示している。このシーケンスは、先に説明した図6のシーケンスとは通信要求信号の使用方法が異なっている。また、図6に示したアクセサリ電源の供給に関しては説明を簡略化する。
S701においてアクセサリ200がカメラ100に装着されると、アクセサリ検出ライン1000のアクセサリ装着検出信号/ACC_DETがLoレベルとなる。これにより、カメラ制御回路A101は、カメラ100にアクセサリ200が装着されたものと判定する。
アクセサリ200が装着されたと判定したカメラ制御回路A101は、S702において、電源ライン1001にアクセサリ電源VACCが出力されるように制御する。
S703において、アクセサリ200がアクセサリ電源VACCを受電すると、アクセサリ制御回路201が起動する。起動したアクセサリ制御回路201は、アクセサリ200内の各ブロックの初期化を行う。
その後S704において、アクセサリ制御回路201は、上記初期化が完了し、カメラ100との通信の準備も完了して通信可能状態になると、カメラ100に対して通信許可を通知するために、通信要求ライン1002の通信要求信号/WAKEをLoレベルにアサート(有効に)する。
なお、アクセサリ200からカメラ100に通信許可を通知するタイミングは、S702でのアクセサリ電源VACCの供給後に限られない。例えば、アクセサリ200が電池を内蔵しており、カメラ100に装着された時点でアクセサリ200の通信の準備ができている場合には、アクセサリ200の装着時に通信許可を通知してもよい。
次にS705において、アクセサリ200からの通信許可の通知を受け取ったカメラ制御回路A101は、第1の通信ライン1003を介したI2C通信によってアクセサリ200に対してアクセサリ情報の通信を要求する。
次にS706において、アクセサリ情報の通信要求を受信したアクセサリ制御回路201は、第1の通信ライン1003を介してカメラ制御回路A101にアクセサリ情報を送信する。ただし、I2C通信によるアクセサリ情報の送受信は、カメラ制御回路A101とアクセサリ制御回路201間で行われなくてもよい。例えば、アクセサリ制御回路201がアクセサリ情報の記憶機能を有しておらず、別体の記憶装置にアクセサリ情報が記憶されている場合には、カメラ制御回路A101と該記憶装置間でアクセサリ情報の送受信が行われてもよい。
次にS707において、カメラ制御回路A101は、受信したアクセサリ情報に基づいて、装着されたアクセサリ200の制御が可能か否かやアクセサリ200から通信要求要因を取得する際の要因取得方式を判断する。そしてカメラ制御回路A101は、カメラ100の種々の設定を行い、これが完了すると、カメラ制御回路B102に対してアクセサリ情報を通知する。
一方、アクセサリ情報を送信した(または記憶装置からのアクセサリ情報の送信を確認した)アクセサリ制御回路201は、S708において、通信要求ライン1002の通信要求信号/WAKEをHiレベルにネゲート(有効を解除)する。これにより、カメラ100はアクセサリ200からの通信要求を待つ状態に遷移する。
なお、通信要求信号/WAKEをネゲートするタイミングは、S705でのアクセサリ情報の送信後に限られない。例えば、アクセサリ情報を送受信するためにカメラ100とアクセサリ200間でSPI通信が必要である場合には、I2C通信後のSPI通信が行われてから信要求信号/WAKEをネゲートしてもよい。
次にS709において、アクセサリ制御回路201は、第2の通信ライン1004を介したカメラ100とのSPI通信が必要なイベントを行うために、通信要求ライン1002の通信要求信号/WAKEをLoレベルにアサートして、通信要求を通知する。
次にS710において、カメラ制御回路B102は、通知された通信要求に応答して、アクセサリ200から通信要求要因を取得するための要求をアクセサリ200に対して行う。前述したように通信要求要因はアクセサリ情報に含まれており、カメラ制御回路B102は、アクセサリ情報に基づいて、通信要求要因の取得要求をI2C通信とSPI通信のどちらで行うかを判断する。ここでは、SPI通信で行うと判断した場合について説明する。
S711において、アクセサリ制御回路201は、通信要求要因の取得要求に応答して、SPI通信により通信要求要因をカメラ100に送信する。なお、S710においてカメラ制御回路B102がI2C通信で通信要求要因の取得要求を行うと判定した場合は、アクセサリ制御回路201はI2C通信により通信要求要因をカメラ100に送信する。
以上説明した図14のシーケンスでは、アクセサリ200がカメラ100に装着されて通信可能状態になって初めて(1回目)の通信要求ライン1002での通信要求信号/WAKEのアサートを、アクセサリ200からカメラ100への通信許可の通知に使用する。この通信許可の通知を受け取ったカメラ100は、アクセサリ200からアクセサリ情報を取得する。その後、アクセサリ200においてカメラ100への通信が必要なイベントが発生した際の2回目以降の通信要求ライン1002での通信要求信号/WAKEのアサートを、アクセサリ200からカメラ100への通信要求の通知に使用する。この通信要求の通知を受け取ったカメラ100は、アクセサリ200から通信要求要因を取得する。
このように本実施例では、アクセサリ200は、カメラ100への装着後にカメラ100に対して通信許可を通知することで、カメラ100へのアクセサリ情報の送信が可能となる。しかも、アクセサリ200からカメラ100への通信許可の通知とその後の通信要求の通知とをカメラ100とアクセサリ200間に設けられた1つ(同一)の通信要求ライン1002に接続される通信要求信号/WAKEを用いて行うことができる。このため、通信許可の通知と通信要求の通知を別々の接点を介して行う場合に比べてカメラ100とアクセサリ200の接点数の増加を抑えつつ、アクセサリ200からカメラ100への通信許可や通信要求の通知を可能とすることができる。