以下、本発明の実施例について、図面を参照しながら詳細に説明する。各図において、同一の部材については同一の参照番号を付し、重複する説明は省略する。
図1は、本発明の実施形態に係るカメラシステム(表示システム)のブロック図である。カメラシステムは、カメラ(撮像装置)100とカメラ100に着脱可能なアクセサリ200とを有する。カメラ100に設けられたカメラ接続部141の複数の接点(端子)TC01~TC21はそれぞれ、アクセサリ200に設けられたアクセサリ接続部(通信部)211の複数の接点TA01~TA21と接触する。これにより、カメラ100とアクセサリ200は電気的に接続される。なお、アクセサリ200は、複数の接点TA01~TA21の一部を有していなくてもよい。
カメラ100は、カメラ100に着脱可能な電池111から電力を供給される。
第1カメラ制御回路101及び第2カメラ制御回路102は、CPU等を内蔵したマイクロコンピュータであり、カメラ100全体を制御する。第1カメラ制御回路101は、不図示のカメラ操作のためのスイッチ等を監視している。また、第1カメラ制御回路101は、カメラ100が待機状態(低消費電力モード)である場合でも動作しており、ユーザの操作に応じてシステム電源の制御等を行う。第2カメラ制御回路102は、撮像センサ122や表示部127等の制御を担い、カメラ100が待機状態である場合は動作を停止している。
システム電源回路112は、DCDCコンバータ回路、LDO(Low Dropout)、及びチャージポンプ回路等により構成され、カメラ100の各回路に供給するための電源を生成する。第1カメラ制御回路101には、システム電源回路112で生成されたカメラマイコン電源VMCU_Cの電圧1.8Vが常時供給される。また、第2カメラ制御回路102には、システム電源回路112で生成された数種類の電源の電圧がカメラマイコン電源VMCU2_Cとして任意のタイミングで供給される。第1カメラ制御回路101は、システム電源回路112を制御することで、カメラ100の各回路への電源供給のオン・オフ制御を行う。
光学レンズ121は、カメラ100に着脱可能に構成されている。光学レンズ121を介して入射した被写体からの光は、CMOSセンサやCCDセンサ等からなる撮像センサ122上に結像される。なお、光学レンズ121とカメラ100とが一体の構成であってもよい。撮像センサ122上に結像された被写体像は、デジタル撮像信号に符号化される。画像処理回路123は、デジタル撮像信号に対して、ノイズリダクション処理やホワイトバランス処理等の画像処理を行って画像データを生成し、該画像データを記録用メモリ126に記録するために、JPEG形式等の画像ファイルに変換する。また、画像処理回路123は、画像データから表示部127に表示するためのVRAM画像データを生成する。
メモリ制御回路124は、画像処理回路123等で生成される画像データや他のデータの送受を制御する。揮発性メモリ125は、DDR3 SDRAM等の高速な読み出しと書き込みが可能なメモリであり、画像処理回路123で行われる画像処理のワークスペース等に使用される。記録用メモリ126は、不図示の接続部を介してカメラ100に着脱可能なSDカードやCFexpressカード等の読み書き可能な記録メディアである。表示部127は、カメラ100の背面に設けられたディスプレイであり、LCDパネルや有機ELディスプレイパネル等により構成される。バックライト回路128は、表示部127のバックライトの光量を変更することで表示部127の明るさを調整する。
第1アクセサリ用電源回路131と第2アクセサリ用電源回路132は、システム電源回路112から供給された電源の電圧を所定の電圧に変換する電圧変換回路であり、本実施形態では電圧が3.3Vのアクセサリ電源VACCを生成する。なお、その他の電圧に変換する構成でもよい。第1アクセサリ用電源回路131は、LDO等で構成される自己消費電力が小さい回路である。第2アクセサリ用電源回路132は、DC/DCコンバータ回路等で構成され、第1アクセサリ用電源回路131よりも大きな電流を流すことができる回路である。なお、第2アクセサリ用電源回路132の自己消費電力は、第1アクセサリ用電源回路131よりも大きい。このため、負荷電流が小さい場合は第1アクセサリ用電源回路131の方が第2アクセサリ用電源回路132よりも効率が良く、負荷電流が大きい場合は第2アクセサリ用電源回路132の方が第1アクセサリ用電源回路131よりも効率が良くなる。第1カメラ制御回路101は、アクセサリ200の動作状態に応じて第1及び第2アクセサリ用電源回路131,132からの出力のオン・オフを制御する。
保護回路133は、電流ヒューズ素子、ポリスイッチ素子、又は抵抗とアンプとスイッチ素子とを組み合わせた電子ヒューズ回路等により構成される。保護回路133は、第1及び第2アクセサリ用電源回路131,132からアクセサリ200に供給される電源の電流値が所定値を超えて過大(異常)になった場合にHiレベルによって過電流であることを示す過電流検知信号DET_OVCを出力する。本実施形態では、保護回路133は、電子ヒューズ回路であり、1A以上の電流が流れた場合に第1カメラ制御回路101に対して過電流検知信号DET_OVCを出力する。なお、所定値が1Aと異なる構成であってもよい。
アクセサリ200は、電池205からの電力供給を受けると共に、カメラ接続部141とアクセサリ接続部211を介してカメラ100からの電力供給も受ける。
アクセサリ制御回路201は、CPU等を内蔵したマイクロコンピュータであり、アクセサリ200全体を制御する。
アクセサリ電源回路202は、DCDCコンバータ回路、LDO、及びチャージポンプ回路等により構成され、アクセサリ200の各回路に供給するための電源を生成する。アクセサリ制御回路201には、アクセサリ電源回路202で生成されたアクセサリマイコン電源VMCU_Aの電圧1.8Vが常時供給される。なお、アクセサリ電源回路202で生成される電圧が1.8Vと異なる値である構成であってもよい。アクセサリ制御回路201は、アクセサリ電源回路202を制御することで、アクセサリ200の各回路への電源供給のオン・オフ制御を行う。
充電回路204は、カメラ100から供給された電力を用いて電池205を充電する。アクセサリ制御回路201は、充電動作を行うのに十分な電力をカメラ100から供給されていると判定すると、充電回路204を制御して電池205への充電を行う。なお、本実施形態では、アクセサリ200に電池205が装着されている場合について説明するが、電池205が装着されずにカメラ100からの給電のみでアクセサリ200を動作させてもよい。この場合、充電回路204は不要となる。
差動通信回路207は、カメラ100と差動通信を行い、カメラ100との間でデータの送受信を行うことができる。外部通信IF回路208は、不図示の外部機器とEthernet通信、無線LAN通信、及び公衆ネットワーク通信等のデータ通信を行うためのIF回路である。アクセサリ制御回路201は、差動通信回路207及び外部通信IF回路208を制御することで、カメラ100から受信したデータを外部機器に送信したり外部機器から受信したデータをカメラ100に送信したりすることができる。
機能回路206は、アクセサリ200の種類に応じて異なる機能を有する回路である。例えば、アクセサリ200がストロボ機器である場合、機能回路206は発光回路や充電回路等である。また、アクセサリ200がマイク機器である場合、機能回路206は音声コーデック回路やマイク回路等である。
外部接続端子209は、外部機器と接続するためのコネクタ端子であり、本実施形態ではUSB TYPE-Cコネクタである。接続検出回路210は、外部接続端子209に外部機器が接続されたことを検出する。アクセサリ制御回路201は、接続検出回路210の出力信号を受信することで外部接続端子209への外部機器接続を検出することができる。
電源スイッチ203は、アクセサリ200の動作をオン・オフするためのスイッチである。アクセサリ制御回路201は、電源スイッチ203が接続された端子の信号レベルを読み出すことでオンポジションやオフポジションを検出することができる。
操作部212は、ボタン、十字キー、スライドスイッチ、ダイヤルスイッチ、及びタッチセンサ等で構成され、アクセサリ200を操作するために使用される。アクセサリ制御回路201は、操作部212に対する操作を検知可能であり、操作を検知すると操作に応じた所定の処理を実行する。操作部に対する操作とは例えば、短押し、長押し、ダブルクリック、複数の操作部の同時押し、ダイヤル操作、及びこれらの操作の組み合わせである。
カメラ接続部141は、一列に配列された21個の接点TC01~TC21を介してアクセサリ200と電気的な接続を行うためのコネクタである。接点TC01~TC21は、これらの配列方向に沿ってこの順で配置されている。
接点TC01は、グラウンド(GND)に接続されており、基準電位の接点としてだけではなく、差動信号D1N,D1Pの配線インピーダンスをコントロールする接点としての用途も兼ねる。
接点TC02,TC03に接続された信号線を流れる差動信号D1N,D1Pは、ペアとなってデータ通信を行うデータ通信信号である。接点TC02,TC03に接続された信号線は、第2カメラ制御回路102に接続されている。
接点TC04は、GNDに接続されており、カメラ100とアクセサリ200の基準電位の接点である。
接点TC05に接続された信号線は、保護回路133を介して第1及び第2アクセサリ用電源回路131,132に接続されている。
接点TC06に接続された信号線には、抵抗素子Rp134(例えば10kΩ)を介してカメラマイコン電源VMCU_Cにプルアップされているアクセサリ装着検出信号/ACC_DETが流れる。第1カメラ制御回路101は、アクセサリ装着検出信号/ACC_DETの信号レベル(電位)を読み出すことでアクセサリ200の装着有無を検出可能である。具体的には、第1カメラ制御回路101は、アクセサリ装着検出信号/ACC_DETの信号レベルがHiレベルであればアクセサリ200が未装着状態であると検出し、Loレベルであればアクセサリ200が装着状態であると検出する。
カメラ100の電源ON時にアクセサリ装着検出信号/ACC_DETの信号レベル(電位)がHiレベルからLoレベルになることがトリガーとなり、カメラ100とアクセサリ200との間で接点を介した各種伝達が行われる。
カメラ制御回路101は、アクセサリ200が装着状態になったことを検出することに応じて、電源接点としてのTC05を介してアクセサリ200に対して電源供給を行う。
接点TC07,TC08,TC09,TC10に接続された信号線にはそれぞれ、信号SCLK,MOSI,MISO,CSが流れる。これらの信号は、第2カメラ制御回路102が通信マスターとなってSPI通信を行うための信号である。本実施形態では、SPI通信の通信クロック周波数は1MHz、データ長は8ビット(1バイト)、ビットオーダーはMSBファースト、通信方式は全二重通信方式である。
本実施形態では、カメラ100及びアクセサリ200は、SPI通信方式として2種類の通信プロトコルに対応可能である。
第一の通信プロトコルは、アクセサリ200が通信可能状態であるかを、カメラ100が信号SCLKを出力する前に確認を行わない方式であり、本実施形態ではSPIプロトコルAと呼称する。
図2(a)は、SPIプロトコルAの通信波形の一例を示す図である。図2(a)では、信号CSはLoアクティブとする。タイミングA1において、第2カメラ制御回路102は信号CSの信号レベルをLoレベルに変化させて、アクセサリ制御回路201に対してSPI通信の要求を行う。タイミングA1から所定時間T_CS経過後のタイミングA2において、第2カメラ制御回路102は信号SCLK,MOSIの出力を開始する。アクセサリ制御回路201は、信号SCLKの立下りを検知すると、信号MISOの出力を開始する。1バイト分の信号SCLKの出力が完了したタイミングA3において、第2カメラ制御回路102は信号SCLKの出力を停止する。タイミングA3から所定時間T_INTERVAL経過後のタイミングA4において、第2カメラ制御回路102は信号SCLKの出力を再開する。
図3(a)は、SPIプロトコルAにおける第2カメラ制御回路102の動作フローを示す図である。
ステップS101では、第2カメラ制御回路102は、内部変数Nに通信するバイト数(通信バイト数)を格納する。例えば、3バイト通信する場合は3が格納される。
ステップS102では、第2カメラ制御回路102は、信号CSの信号レベルをLoレベルに変化させてSPI通信の要求を行う。
ステップS103では、第2カメラ制御回路102は、信号CSの信号レベルをLoレベルに変化させてから所定時間T_CSだけ経過したかどうかを判定する。所定時間T_CSが経過したと判定された場合、ステップS104に進み、そうでないと判定された場合、本ステップの処理を繰り返す。
ステップS104では、第2カメラ制御回路102は、1バイト通信を行う。具体的には、第2カメラ制御回路102は、信号SCLK,MOSIの出力を制御すると共に、信号MISOの入力を制御する。
ステップS105では、第2カメラ制御回路102は、通信バイト数を示す内部変数Nが0であるかどうかを判定する。内部変数Nが0であると判定された場合、ステップS106に進み、そうでないと判定された場合、ステップS107に進む。
ステップS106では、第2カメラ制御回路102は、信号CSの信号レベルをHiレベルに変化させて、SPI通信を終了する。
ステップS107では、第2カメラ制御回路102は、内部変数Nから1減じた値を新たな内部変数Nとして格納する。
ステップS108では、第2カメラ制御回路102は、1バイト通信が完了してから所定時間T_INTERVALだけ経過したかどうかを判定する。所定時間T_INTERVALが経過したと判定された場合、ステップS104に進み、そうでないと判定された場合、本ステップの処理を繰り返す。
図3(b)は、SPIプロトコルAにおけるアクセサリ制御回路201の動作フローを示す図である。
ステップS201では、アクセサリ制御回路201は、信号CSの信号レベルがLoレベルに変化しているかどうかを判定する。信号CSの信号レベルがLoレベルに変化していると判定された場合、ステップS202に進み、そうでないと判定された場合、本ステップの処理を繰り返す。
ステップS202では、アクセサリ制御回路201は、1バイト通信を行う。具体的には、アクセサリ制御回路201は、信号SCLKの入力に応じて、信号MOSIの入力を制御すると共に、信号MISOの出力を制御する。
ステップS203では、アクセサリ制御回路201は、信号CSの信号レベルがHiレベルに変化しているかどうかを判定する。信号CSの信号レベルがHiレベルに変化していると判定された場合、SPI通信を終了し、そうでないと判定された場合、ステップS202に戻る。
第二の通信プロトコルは、アクセサリ200が通信可能状態であるかを、カメラ100が信号SCLKを出力する前に確認を行う方式であり、本実施形態ではSPIプロトコルBと呼称する。
図2(b)は、SPIプロトコルBの通信波形の一例を示す図である。タイミングB1において、第2第2カメラ制御回路102は信号CSの信号レベルをLoレベルに変化させて、アクセサリ制御回路201に対してSPI通信の要求を行う。第2カメラ制御回路102は、SPI通信の要求と合わせて信号MISOの信号レベルを確認する。第2カメラ制御回路102は、信号MISOの信号レベルがHiレベルである場合、アクセサリ制御回路201が通信可能な状態であると判定し、Loレベルである場合、アクセサリ制御回路201が通信不可能な状態であると判定する。アクセサリ制御回路201は、信号CSの立下りを検知した後、通信可能な状態であれば信号MISOの信号レベルをHiレベルに設定し、通信不可能な状態であれば信号MISOをLoレベルに設定する。図2(b)ではタイミングB2において、アクセサリ制御回路201は信号MISOの信号レベルをHiレベルに設定する。第2カメラ制御回路102は、信号MISOの信号レベルがHiレベルであることを確認すると、タイミングB3において、信号SCLK,MOSIの出力を開始する。アクセサリ制御回路201は、信号SCLKの立下りを検知すると、信号MISOの出力を開始する。1バイト分の信号SCLKの出力が完了したタイミングB4において、第2カメラ制御回路102は信号SCLKの出力を停止する。アクセサリ制御回路201は、1バイトのデータ送受を行った後、SPI通信可能な状態であれば信号MISOの信号レベルをHiレベルに設定し、SPI通信不可能な状態であれば信号MISOの信号レベルをLoレベルに設定する。図2(b)では、アクセサリ制御回路201は、タイミングB5において、信号MISOの信号レベルをLoレベルに設定し、タイミングB6において、信号MISOの信号レベルをHiレベルに設定する。タイミングB7において、第2カメラ制御回路102は、信号MISOの信号レベルを確認する。第2カメラ制御回路102は、信号MISOの信号レベルがHiレベルである場合、アクセサリ制御回路201が通信可能な状態であると判定し、Loレベルである場合、アクセサリ制御回路201が通信不可能な状態であると判定する。
図4(a)は、SPIプロトコルBにおける第2カメラ制御回路102の動作フローを示す図である。
ステップS111では、第2カメラ制御回路102は、内部変数Nに通信するバイト数を格納する。
ステップS112では、第2カメラ制御回路102は、信号CSの信号レベルをLoレベルに変化させてSPI通信の要求を行う。
ステップS113では、第2カメラ制御回路102は、信号MISOの信号レベルがHiレベルに変化しているかどうかを判定する。信号MISOの信号レベルがHiレベルに変化していると判定された場合、ステップS114に進み、そうでないと判定された場合、本ステップの処理を繰り返す。
ステップS114では、第2カメラ制御回路102は、1バイト通信を行う。具体的には、第2カメラ制御回路102は、信号SCLK,MOSIの出力を制御すると共に、信号MISOの入力を制御する。
ステップS115では、第2カメラ制御回路102は、通信バイト数を示す内部変数Nが0であるかどうかを判定する。内部変数Nが0であると判定された場合、ステップS116に進み、そうでないと判定された場合、ステップS117に進む。
ステップS116では、第2カメラ制御回路102は、信号CSの信号レベルをHiレベルに変化させて、SPI通信を終了する。
ステップS117では、第2カメラ制御回路102は、内部変数Nから1減じた値を新たな内部変数Nとして格納する。
ステップS118では、第2カメラ制御回路102は、信号MISOの信号レベルがHiレベルに変化しているかどうかを判定する。信号MISOの信号レベルがHiレベルに変化していると判定された場合、ステップS114に戻り、そうでないと判定された場合、本ステップの処理を繰り返す。
図4(b)は、SPIプロトコルBにおけるアクセサリ制御回路201の動作フローを示す図である。
ステップS211では、アクセサリ制御回路201は、信号CSの信号レベルがLoレベルに変化しているかどうかを判定する。信号CSの信号レベルがLoレベルに変化していると判定された場合、ステップS212に進み、そうでないと判定された場合、本ステップの処理を繰り返す。
ステップS212では、アクセサリ制御回路201は、SPI通信可能な状態であるかどうかを判定する。SPI通信可能な状態であると判定された場合、ステップS213に進み、そうでないと判定された場合、ステップS214に進む。
ステップS213では、アクセサリ制御回路201は、信号MISOの信号レベルをHiレベルに設定する。
ステップS214では、アクセサリ制御回路201は、信号MISOの信号レベルをLoレベルに設定する。
ステップS215では、アクセサリ制御回路201は、1バイト通信を行う。具体的には、アクセサリ制御回路201は、信号SCLKの入力に応じて、信号MOSIの入力を制御すると共に、信号MISOの出力を制御する。
ステップS216では、アクセサリ制御回路201は、信号CSの信号レベルがHiレベルに変化しているかどうかを判定する。信号CSの信号レベルがHiレベルに変化していると判定された場合、SPI通信を終了し、そうでないと判定された場合、ステップS212に戻る。
図5は、カメラ100からアクセサリ200への動作実行命令(コマンド)を通知する際のSPI通信内容の一例を示す図である。
1バイト目の通信において、第2カメラ制御回路102は、MOSIデータとして、コマンド番号CMDを送信する。アクセサリ制御回路201は、MISOデータとして、通信可能状態であることを示す値0xA5を送信する。アクセサリ制御回路201は、1バイト目の通信処理を実行できない場合、MISOデータとして値0xA5以外の情報を送信する。
2バイト目の通信において、第2カメラ制御回路102は、コマンド番号CMDに対応する引数MOSI_DATA1を送信する。3バイト目~(N-2)バイト目以降の通信において、第2カメラ制御回路102は、コマンド番号CMDに対応する引数MOSI_DATA2~MOSI_DATA[N-3]を送信する。
一方、2バイト目の通信において、アクセサリ制御回路201は、MISOデータとして、1バイト目の通信において受信したコマンド番号CMDを送信する。これにより、カメラ制御回路102は、アクセサリ制御回路201がMOSIデータを正しく受信できているかどうかを判別することができる。
3バイト目の通信において、アクセサリ制御回路201は、MISOデータとしてコマンド番号CMDに対応する戻り値MISO_DATA1を送信する。4バイト目~(N-2)バイト目以降の通信において、アクセサリ制御回路201は、コマンド番号CMDに対応する引数MISO_DATA2~MISO_DATA[N-4]を送信する。なお、引数及び戻り値の数は、コマンド番号ごとにあらかじめ決められているものとする。また、引数及び戻り値のいずれか又は両方なくても構わないものとする。
N-1バイト目の通信において、第2カメラ制御回路102は、MOSIデータとして以下の式で算出されるチェックサムデータCheckSum_Cを送信する。
CheckSum_C=EXOR(AND(SUM(CMD,MOSI_DATA1,・・・, MOSI_DATA[N-3]),0xFF),0xFF)
一方、N-1バイト目の通信において、アクセサリ制御回路201は、MISOデータとして、値0x00を送信する。
Nバイト目の通信において、第2カメラ制御回路102は、MOSIデータとして、値0x00を送信する。
一方、Nバイト目の通信において、アクセサリ制御回路201は、MISOデータとして、チェックサムデータCheckSum_Aを送信する。
第2カメラ制御回路102が受信したチェックサムデータCheckSum_Cと第2カメラ制御回路102が算出したチェックサムデータCheckSum_Cとが一致している場合、チェックサムデータCheckSum_Aは以下の式で算出される。
CheckSum_A=EXOR(AND(SUM(0xA5,CMD,
MIS0_DATA1,・・・,MOSI_DATA[N-4]),0xFF),0xFF)
第2カメラ制御回路102が受信したチェックサムデータCheckSum_Cと第2カメラ制御回路102が算出したチェックサムデータCheckSum_Cとが一致していない場合、チェックサムデータCheckSum_Aは以下の式で算出される。
CheckSum_A=AND(SUM(0xA5,CMD,MIS0_DATA1,・・・,MOSI_DATA[N-4]),0xFF)
接点TC11に接続された信号線には、アクセサリ200から第1カメラ制御回路101に対して通信を要求するための通信要求信号/WAKEが流れる。通信要求信号/WAKEは、抵抗を介してカメラマイコン電源VMCU_Cにプルアップされている。第1カメラ制御回路101は、通信要求信号/WAKEの立下りを検出することでアクセサリ200からの通信要求を受信することができる。
接点TC12,TC13に接続された信号線にはそれぞれ、第1カメラ制御回路101が通信マスターとなってI2C通信を行うための信号SDA,SCLが流れる。I2C通信はカメラマイコン電源VMCU_Cにプルアップされたオープンドレイン通信であり、本実施形態では通信周波数は100kbpsとする。I2C通信では、SDAを介してカメラ100からのデータ送信、アクセサリ200からのデータ送信の双方が行われる。SPI通信とI2C通信を比較すると、I2C通信は、SPI通信に比べて通信速度が低速である。また、SPI通信のほうがI2C通信よりも通信速度が高速であるためデータ量の多い情報の通信に適している。そのため、本実施例のカメラ100とアクセサリ200との通信においては、データ量の多い情報はSPI通信を用いて通信し、データ量の少ない情報はI2C通信を用いて通信する。例えばまずはI2C通信を用いてデータを通信し、このデータに基づいてSPI通信が実行可能である場合やSPI通信を実行する必要がある場合には、更にSPI通信を実行するように制御することができる。
図20はI2C通信波形の一例を示した図である。図20(a)はカメラがアクセサリにNバイト分のデータ(DATA[1]~DATA[N])を送信する場合の波形例を示し、図20(b)はカメラがアクセサリからNバイト分のデータ(DATA[1]~DATA[N])を受信する場合の波形例を示している。
図20(a)と図20(b)ともに、上段の波形はSCLで、下段の波形はSDAである。
SDA波形の下には各タイミングにおける信号が示す意味と、SDA信号の出力レベルを制御している制御回路がカメラ制御回路A101であるか、アクセサリ制御回路201であるかを示している。
また、通信データは1バイト単位のデータと応答を示す1ビットの情報で構成されているため、説明をわかりやすくするために、図の上部に通信開始から何バイト目のデータであるかを示している。
通信内容の詳細については図21~23のフローチャートで説明を行うため、図20(a)と図20(b)では概略を説明する。
図20(a)において、1バイト目と2バイト目の通信では、カメラ制御回路A101からアクセサリ制御回路201に対して、送信するデータの格納アドレス情報を通知する。
3バイト目から(N+2)バイト目の通信で、カメラ制御回路A101はNバイト分のデータ(DATA[ADDRESS]~DATA[ADDRESS+N])をアクセサリ制御回路201に送信する。
図20(b)において、1バイト目と2バイト目の通信では、カメラ制御回路A101からアクセサリ制御回路201に対して、受信するデータの格納アドレス情報を通知する。
3バイト目から(N+3)バイト目の通信で、カメラ制御回路A101はNバイト分のデータ(DATA[ADDRESS]~DATA[ADDRESS+N])をアクセサリ制御回路201から受信する。
次に、図21~23のフローチャートについて説明する。
図21のフローチャートは、カメラ制御回路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に対して通信の終了を通知する。
図22のフローチャートは、カメラ制御回路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に対して通信の終了を通知する。
図23は、カメラ制御回路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バイトのデータは、以降の通信で送信・受信するデータが格納されているアドレスを示す情報である。本実施例では、図21、図22で説明したように、開始アドレス情報は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バイト分のデータを受信する。アクセサリ制御回路201は、その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バイト分のデータを受信する。
接点TC14,TC15,TC16,TC17に接続された信号線には、アクセサリ200の種類に応じて機能を可変にできる機能信号FNC1,FNC2,FNC3,FNC4が流れる。例えば、アクセサリ200がマイク機器である場合はTC15を介して通信される信号は音声データ信号が流れ、アクセサリ200が照明機器(ストロボユニット)である場合はTC14を介して通信される信号は発光タイミングを通知する信号が流れる。
なお、装着されたアクセサリの種別によって、同じ接点を介して異なる機能を実現する信号が通信されるようにしてもよい。例えばアクセサリ200が照明以外のアクセサリである場合に、TC14を介して発光タイミングとは異なるタイミングを制御するための同期信号が通信されるようにしても良い。TC14~TC17は機能信号接点に相当する。機能信号接点の少なくともいずれかを用いた通信を機能信号通信とも称する。
機能信号通信は、I2C通信・SPI通信と並行して、I2C通信・SPI通信に依存しないタイミングで通信を実行することができる。
ここでいうアクセサリ種別とは、上述のマイク機器、照明機器等である。性能が異なる照明同士のように、同じ目的の機能を実現するアクセサリは同じ種別のアクセサリである。マイク機器と照明機器のように、異なる目的の機能を実現するアクセサリは異なる種別のアクセサリである。
機能信号通信は、I2C通信またはSPI通信によって取得された情報に基づいて実行される。
接点TC18は、GNDに接続されており、カメラ100とアクセサリ200の基準電位の接点である。
接点TC19,TC20に接続された信号線を流れる差動信号D2N,D2Pは、ペアとなってデータ通信を行うデータ通信信号である。接点TC19,TC20に接続された信号線は、第2カメラ制御回路102に接続されている。TC19とTC20とを介して、例えばUSB通信を行うことが可能である。
接点TC21は、GNDに接続されており、基準電位の接点としてだけではなく、差動信号D2N,D2Pの配線インピーダンスをコントロールする接点としての用途も兼ねる。接点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接点として用いることができる。
アクセサリ接続部211は、一列に配列された21個の接点TA01~TA21を介してカメラ100と電気的な接続を行うためのコネクタである。接点TA01~TA21は、これらの配列方向に沿ってこの順で配置されている。
接点TA01は、GNDに接続されており、基準電位の接点としてだけではなく、差動信号D1N,D1Pの配線インピーダンスをコントロールする接点としての用途も兼ねる。
接点TA02,TA03に接続された信号線を流れる差動信号D1N,D1Pは、ペアとなってデータ通信を行うデータ通信信号である。接点TA02,TA03に接続された信号線は、差動通信回路207に接続されている。
接点TA04は、GNDに接続されており、カメラ100とアクセサリ200の基準電位の接点である。
接点TA05に接続された信号線は、アクセサリ電源回路202と充電回路204に接続されていると共に、カメラ100で生成されたアクセサリ電源VACCに接続されている。
接点TA06は、GNDに接続されている。アクセサリ200がカメラ100に装着された場合にアクセサリ装着検出信号/ACC_DETの信号レベルをLoレベルとしてのGNDレベル(グラウンド電位)に設定することで、カメラ100はアクセサリ200の装着を検出することができる。
接点TA07,TA08,TA09,TA10に接続された信号線にはそれぞれ、信号SCLK,MOSI,MISO,CSが流れる。これらの信号は、アクセサリ制御回路201が通信スレーブとなってSPI通信を行うための信号である。
接点TA11に接続された信号線には、アクセサリ制御回路201からカメラ100に対して通信を要求するための通信要求信号/WAKEが流れる。アクセサリ制御回路201は、通信要求信号/WAKEの信号レベルをLoレベルに設定することでカメラ100に対して通信要求を行う。
アクセサリ200が装着状態であることを検出することに応じて、カメラ制御回路101からアクセサリ200に対してTC5を介した電源供給がなされる。その後、アクセサリ制御回路201は、通信要求信号/WAKEの信号レベル(電位)をHiレベルからLoレベルに変化させることで、電源供給を受けた旨をカメラ制御回路101に通知する。
アクセサリ制御回路201は、カメラからの要求がなくとも通信要求信号/WAKEの信号レベル(電位)をHiレベルからLoレベルに変化させることで、アクセサリ200がカメラ100と通信すべき要因が発生したことを通知することができる。この構成により、カメラ制御回路101はアクセサリ200に通信すべき要因が発生したか否かを、ポーリングすることよって周期的に確認する動作を省略することができる。また、アクセサリ200は通信すべき要因が発生した場合にその旨をリアルタイムにカメラ100に通信することが可能である。
接点TA12,TA13に接続された信号線にはそれぞれ、アクセサリ制御回路201が通信スレーブとなってI2C通信を行うための信号SDA,SCLが流れる。
接点TA14,TA15,TA16,TA17に接続された信号線には、アクセサリ200の種類に応じて機能を可変にできる機能信号FNC1,FNC2,FNC3,FNC4が流れる。例えば、アクセサリ200がマイク機器である場合は音声データ信号が流れ、アクセサリ200が照明機器(ストロボユニット)である場合は発光タイミングを通知する信号が流れる。
接点TC18は、GNDに接続されており、カメラ100とアクセサリ200の基準電位の接点である。
接点TA19,TA20に接続された信号線を流れる差動信号D2N,D2Pは、ペアとなってデータ通信を行うデータ通信信号である。接点TA02,TA03に接続された信号線は、外部接続端子209に接続されている。
接点TA21は、GNDに接続されており、基準電位の接点としてだけではなく、差動信号D2N,D2Pの配線インピーダンスをコントロールする端子としての用途も兼ねる。接点TA01、TA04、TA06、TA18、TA21は、例えば、フレキシブル基板のGND部に接続されていて、フレキシブル基板のGND部がアクセサリ200のGNDレベルとなる金属性の部材と不図示のビスなどで固定される。GNDレベルとなる金属性の部材は例えば、カメラ100のアクセサリシュー部と係合するシュー取付脚やアクセサリ200内部の不図示のベースプレートなどがある。
図6は、アクセサリ200がカメラ100に装着された場合のカメラ100及びアクセサリ200の動作シーケンスの一例を示す図である。
アクセサリ200がカメラ100に装着されると、アクセサリ装着検出信号/ACC_DETの信号レベルはGNDレベルとなり、第1カメラ制御回路101はアクセサリ200が装着されたものと判定する。
第1カメラ制御回路101は、アクセサリ200が装着されたと判定すると、第1アクセサリ用電源回路131の出力をオンするために電源制御信号CNT_VACC1の信号レベルをHiレベルに設定する。第1アクセサリ用電源回路131は、電源制御信号CNT_VACC1の信号レベルがHiレベルに設定されると、アクセサリ電源VACCの電圧を出力する。
アクセサリ電源回路202は、アクセサリ電源VACCの電圧を受けると、アクセサリ制御回路201のためのアクセサリマイコン電源VMCU_Aを生成する。これにより、アクセサリ制御回路201が起動する。アクセサリ制御回路201は、起動後、アクセサリ200内の各ブロックの初期化を行う。その後、アクセサリ制御回路201は、アクセサリ200がカメラ100と通信可能な状態になると、通信要求信号/WAKEの信号レベルをLoレベルに設定する。
第1カメラ制御回路101は、通信要求信号/WAKEの信号レベルがLoレベルとなったことを検知することで、アクセサリ200が通信可能な状態となったと判定する。
第1カメラ制御回路101は、I2C通信により、アクセサリ情報を要求する。アクセサリ制御回路201は、カメラ100からのアクセサリ情報要求に応じて、アクセサリ情報を送信する。アクセサリ制御回路201は、アクセサリ情報を送信すると、通信要求信号/WAKEの信号レベルをHiレベルに設定する。
第1カメラ制御回路101は、受信したアクセサリ情報を確認し、装着されたアクセサリ200を制御可能であるかどうか等を判定する。また、第1カメラ制御回路101は、第2アクセサリ用電源回路132をオンにする。
第1カメラ制御回路101は、カメラ100の種々の設定を完了すると、第2カメラ制御回路102に対してアクセサリ情報を通知する。
第2カメラ制御回路102は、アクセサリ200の種類を示すアクセサリ種類情報に基づき、SPI通信により、アクセサリ200に対して制御コマンドを通知したり、機能信号を制御したりする。
図7は、アクセサリ200が不図示の不揮発性メモリ(記憶部)内に有するアクセサリ情報の一例を示す図である。アクセサリ情報は、アドレス0x00~0x0Fのメモリ空間にマッピングされている。なお、本実施形態のI2C通信においては、読み出したデータに対するチェックサム値を通信の最終データとして付加するものとする。
アドレス0x00のD7-D0データは、アクセサリ200の種類を示すアクセサリ種類情報である。図8は、アクセサリ種類情報の一例を示す図である。例えば、0x81はストロボ機器、0x82はインタフェース変換アダプタ機器、0x83はマイク機器、0x84は複数のアクセサリ機器をカメラ100に装着するためのマルチアクセサリ接続アダプタ機器であることを示している。ここで、アダプタ機器は、カメラ100とストロボ機器やマイク機器等のアクセサリとの間に装着される中間アクセサリである。インタフェース変換アダプタ機器は、カメラ100のインタフェースとアクセサリのインタフェースが異なる場合に、カメラ100とアクサセリとの間に互換性を持たせるためにインタフェースを変換するアダプタ機器である。マルチアクセサリ接続アダプタ機器は、複数のアクセサリを装着可能なアダプタ機器である。
アドレス0x01のD7-D0データは、アクセサリ200の機種番号(識別番号)を示す情報である。該情報と前述したアクセサリ種類情報とを用いてアクセサリ機種を一意に決定することが可能である。
アドレス0x02のD7-D0データは、アクセサリ200のファームウェアのバージョンを示す情報である。
アドレス0x03のD7-D6データは、カメラ100が不図示の電源スイッチがオフしている状態において、アクセサリ200へのアクセサリ電源VACCの電圧供給を要求するか否かを示す情報である。該情報が0の場合には給電不要を示し、1の場合には第1アクセサリ用電源回路131による給電要求を示し、2の場合には第2アクセサリ用電源回路132による給電要求を示す。
アドレス0x03のD5-D4データは、カメラ100が省電力モード状態において、アクセサリ200へのアクセサリ電源VACCの電圧供給を要求するか否かを示す情報である。該情報が0の場合には給電不要を示し、1の場合には第1アクセサリ用電源回路131による給電要求を示し、2の場合には第2アクセサリ用電源回路132による給電要求を示す。
アドレス0x03のD3-D2データは、アクセサリ200が電池205を具備しているかどうかを示す情報である。該情報が0の場合には具備していないことを示し、1の場合には具備していることを示す。
アドレス0x03のD1-D0データは、アクセサリ200が電池205への充電機能を具備しているかどうかを示す情報である。該情報が0の場合には具備していないことを示し、1の場合には具備していることを示す。
アドレス0x04のD7-0データは、アクセサリ200がカメラ100から給電されるアクセサリ電源VACCに対する要求電流を示す情報である。例えば、該情報を10倍した値が電流値を示し、要求電力を示す情報が10の場合には100mAの要求を示し、要求電力を示す情報が100の場合には1Aの要求を示す。また、情報量を削減するために、要求電力を示す情報を任意の電流値に関連付けた情報としてもよい。例えば、要求電力を示す情報が0,1,2,3の場合にはそれぞれ、100mA,300mA,450mA,600mAの要求を示すようにしてもよい。
アドレス0x05のD7データは、アクセサリ200がファームアップモード状態であるかどうかを示す情報である。該情報が0の場合にはファームアップモード状態ではないことを示し、1の場合にはファームアップモード状態であることを示す。
アドレス0x05のD6データは、アクセサリ200がファームアップ機能を具備しているかどうかを示す情報である。該情報が0の場合には機能を具備していないことを示し、1の場合には機能を具備していることを示す。
アドレス0x05のD5-D4データは、アクセサリ200が中間接続アクセサリを装着された場合の動作を許可するかどうかを示す情報である。該情報が0の場合には動作を許可しないことを示し、1の場合には動作を許可することを示す。
アドレス0x05のD3-D2データは、アクセサリ200が中間接続アクセサリの装着状態をカメラ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,FNC2、FNC3、FNC4による機能を具備しているかどうかを示す情報である。各情報が0の場合には機能を具備していないことを示し、1の場合には機能を具備していることを示す。
アドレス0x0AのD7データは、アクセサリ200が通信要求信号/WAKEをカメラ100に通知した際に、カメラ100に対して起動を要求するかどうかを示す情報である。該情報が0の場合には起動を要求することを示し、1の場合には起動を要求しないことを示す。
アドレス0x0AのD6-D0データは、アクセサリ200がカメラ100に対して通知した通信要求信号/WAKEの発生要因を示す情報である。図9は、通信要求信号/WAKEの発生要因の一例を示す図である。図9では、アクセサリ200がマイク機器である場合の例を示している。例えば、要因番号0x00は、操作部212のうちメニュー呼び出し部が操作されたことを示す番号である。要因番号0x01は、アクセサリ200が音声信号の出力制御を完了したことを示す番号である。要因番号0x02は、アクセサリ200が音声信号のミュート処理を完了したことを示す番号である。
アドレス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の場合のバイト間の通信間隔を示す情報である。
アドレス0x0EのD7-D0データは、アクセサリ200がSPIプロトコルAで通信を行う場合、かつ、アドレス0x05のD7データが1の場合のバイト間の通信間隔を示す情報である。
図10は、通信間隔を示す情報の一例を示す図である。図10(a)はアドレス0x0Dのデータに対する通信間隔を示し、図10(b)はアドレス0x0Eのデータに対する通信間隔を示している。
アドレス0x0FのD7-D0データは、チェックサムを示す情報である。
図11は、アクセサリ200がカメラ100に装着された後、アクセサリ200の機能が有効になるまでの第1カメラ制御回路101の処理を示すフローチャートである。
ステップS401では、第1カメラ制御回路101は、アクセサリ200が装着されているかどうかを確認するために、アクセサリ装着検出信号/ACC_DETの信号レベルがLowレベルであるかどうかを判定する。信号レベルがLowレベルであり、アクセサリ200が装着されていると判定された場合、ステップS402に進み、信号レベルがHiレベルであり、アクセサリ200が未装着であると判定された場合、本ステップの処理を繰り返す。
ステップS402では、第1カメラ制御回路101は、第1アクセサリ用電源回路131の出力をオンするために、電源制御信号CNT_VACC1の信号レベルをHiレベルに設定する。第1アクセサリ用電源回路131は、電源制御信号CNT_VACC1の信号レベルがHiレベルに設定されると、アクセサリ電源VACCの電圧を出力する。
ステップS403では、第1カメラ制御回路101は、過電流が流れていないかどうかを確認するために、過電流検知信号DET_OVCの信号レベルがLowレベルであるかどうかを判定する。過電流信号レベルがLowレベルであり、過電流は流れていないと判定された場合、ステップS404に進み、信号レベルがHiレベルであり、過電流が流れていると判定された場合、ステップS405に進む。
ステップS404では、第1カメラ制御回路101は、アクセサリ200の初期化が完了しているかどうかを確認するためにアクセサリ200からの通信要求信号/WAKEの信号レベルがLowレベルであるかどうかを判定する。信号レベルがLowレベルであり、初期化が完了していると判定されると、ステップS406に進み、信号レベルがHiレベルであり、初期化が完了していないと判定されると、本ステップの処理を繰り返す。
ステップS405では、第1カメラ制御回路101は、エラー処理を行う。
ステップS406では、第1カメラ制御回路101は、アクセサリ200に対してI2C通信(初期通信)を行い、15バイトのアクセサリ情報の読み出しを行う。
ステップS407では、第1カメラ制御回路101は、ステップS406で読み出したアクセサリ情報に基づき、装着されたアクセサリ200がカメラ100に対応している機器であるかどうかを判定する。装着されたアクセサリ200がカメラ100に対応していると判定された場合、ステップS408に進み、そうでないと判定された場合、ステップS409に進む。
ステップS408では、第1カメラ制御回路101は、第2アクセサリ用電源回路132の出力をオンするために、電源制御信号CNT_VACC2の信号レベルをHiレベルに設定する。第2アクセサリ用電源回路132は、電源制御信号CNT_VACC2の信号レベルがHiに設定されると、アクセサリ電源VACCの電圧を出力する。本実施形態では、電源制御信号CNT_VACC1,CNT_VACC2の両方の信号レベルがHiレベルに設定されると、第2アクセサリ用電源回路132がアクセサリ電源VACCの電圧を出力する。
ステップS410では、第1カメラ制御回路101は、第2カメラ制御回路102に対してステップS406で読み出したアクセサリ情報を通知する。
図12は、アクセサリ200がカメラ100に装着された後、アクセサリ200の機能が有効になるまでの第2カメラ制御回路102の処理を示すフローチャートである。
ステップS501では、第2カメラ制御回路102は、第1カメラ制御回路101からアクセサリ情報が通知されたかどうかを判定する。アクセサリ情報が通知されたと判定された場合、ステップS502に進み、そうでないと判定された場合、本ステップの処理を繰り返す。
ステップS502では、第2カメラ制御回路102は、アクセサリ情報に基づいて機能信号FNC1~FNC4の設定を行う。例えば、アクセサリ200がマイク機器であると通知された場合、機能信号FNC1~FNC3はそれぞれ、音声データクロック信号BCLK、音声データチャンネル信号LRCLK、音声データ信号SDATAとして機能するように設定される。また、アクセサリ200がストロボ機器であると通知された場合、機能FNC4はストロボ発光同期信号XOUTとして機能するように設定される。なお、アクセサリ200に対して制御が不要な機能信号についても、カメラ100及びアクセサリ200の動作に支障が出ないように所定の設定が行われる。
ステップS503では、第2カメラ制御回路102は、アクセサリ情報に基づいてSPI通信における信号CSの制御論理の設定を行う。
ステップS504では、第2カメラ制御回路102は、アクセサリ200に対する所定のイベントが発生しているかどうかを判定する。所定のイベントが発生していると判定された場合、ステップS505に進み、そうでないと判定された場合、本ステップの処理を繰り返す。
ステップS505では、第2カメラ制御回路102は、アクセサリ200に対する所定のイベントがアクセサリ200とのSPI通信が必要なイベントであるかどうかを判定する。SPI通信が必要なイベントであると判定された場合、ステップS506に進み、そうでないと判定された場合、ステップS507に進む。
ステップS506では、第2カメラ制御回路102は、アクセサリ200とのSPI通信を行う。例えば、アクセサリ200がマイク機器である場合、SPI通信は、マイク動作をオンさせるための指示通信、マイク動作をオフさせるための指示通信、マイクの集音指向性を切り替える指示通信、及びマイクのイコライザ機能を切り替える指示通信等である。また、アクセサリ200がストロボ機器である場合、SPI通信は、ストロボの設定情報を読み出す通信や、ストロボに対して設定情報を通知する通信等である。本ステップの処理の終了後、ステップS504に戻る。
ステップS507では、第2カメラ制御回路102は、アクセサリ200に対する所定のイベントが機能信号を用いた制御を行うイベントであるかどうかを判定する。機能信号を用いた制御を行うイベントであると判定された場合、ステップS508に進み、そうでないと判定された場合、ステップS509に進む。
ステップS508では、第2カメラ制御回路102は、アクセサリ200に対して機能信号を用いた制御を行う。例えば、アクセサリ200がマイク機器である場合、機能信号を用いた制御は、音声データクロック信号BCLKと音声データチャンネル信号LRCLKの出力の開始や、音声データ信号SDATAの取り込みである。これにより、カメラ100は、アクセサリ200からの音声データを取得可能である。また、アクセサリ200がストロボ機器である場合、機能信号を用いた制御は、ストロボ発光同期信号XOUTの所定のタイミングでの通知である。これにより、カメラ100は、ストロボに発光指示を通知することができる。本ステップの処理の終了後、ステップS504に戻る。
ステップS509では、第2カメラ制御回路102は、アクセサリ200に対する所定のイベントに応じてカメラ内制御を行う。例えば、アクセサリ200がマイク機器である場合、カメラ内制御は、記録用メモリ126への音声データの記録の開始や終了の制御や、音声データに対するイコライザ処理制御等である。また、アクセサリ200がストロボ機器である場合、カメラ内制御は、ストロボが発光した光を撮像センサ122で蓄積取得する測光制御や、ストロボの発光量指示値の演算制御等である。本ステップの処理の終了後、ステップS504に戻る。
以上説明したように、カメラ100は、図11及び図12のフローに沿って装着されたアクセサリ200の制御を行うことができる。
図13は、アクセサリ200がカメラ100に装着された後、アクセサリ200の機能が動作するまでのアクセサリ制御回路201の処理を示すフローチャートである。
ステップS601では、アクセサリ制御回路201は、アクセサリ電源VACCがオンしたかどうかを判定する。アクセサリ電源VACCがオンしたと判定された場合、ステップS601に進み、そうでないと判定された場合、本ステップの処理を繰り返す。アクセサリ200が電池205を有さない場合、アクセサリ制御回路201は、自身が動作を開始したことでアクセサリ電源VACCがオンしたと判定することができる。アクセサリ200が電池205を有する場合、アクセサリ制御回路201は、アクセサリ電源VACCの電圧値を監視することでアクセサリ電源VACCがオンしたかどうかを判定することができる。
ステップS602では、アクセサリ制御回路201は、所定の初期設定を行う。所定の初期設定とは例えば、マイコンの動作周波数の設定、マイコンの入出力制御ポートの設定、マイコンのタイマー機能の初期化設定、及びマイコンの割り込み機能の初期化設定等である。
ステップS603では、アクセサリ制御回路201は、カメラ100に対して初期設定が完了したことを通知するために、通信要求信号/WAKEの信号レベルをLoレベルに設定する。
ステップS604では、アクセサリ制御回路201は、カメラ100からのI2C通信に対して応答し、15バイトのアクセサリ情報を送信する。
ステップS605では、アクセサリ制御回路201は、通信要求信号/WAKEの信号レベルをHiレベルに設定する。
ステップS606では、アクセサリ制御回路201は、アクセサリ200に対する所定のイベントが発生しているかどうかを判定する。所定のイベントが発生していると判定された場合、ステップS607に進み、そうでないと判定された場合、本ステップの処理を繰り返す。
ステップS607では、アクセサリ制御回路201は、アクセサリ200に対する所定のイベントがカメラ100とのSPI通信が必要なイベントであるかどうかを判定する。SPI通信が必要なイベントであると判定された場合、ステップS608に進み、そうでないと判定された場合、ステップS609に進む。
ステップS608では、アクセサリ制御回路201は、カメラ100とのSPI通信を行う。アクセサリ制御回路201は、SPI通信実行時に通信要求信号/WAKEの信号レベルがLoレベルである場合、SPI通信後に通信要求信号/WAKEの信号レベルをHiレベルに設定する。例えば、アクセサリ200がマイク機器である場合、SPI通信は、マイク動作をオンさせるための指示通信、マイク動作をオフさせるための指示通信、マイクの集音指向性を切り替える指示通信、及びマイクのイコライザ機能を切り替える指示通信等である。また、アクセサリ200がストロボ機器である場合、SPI通信は、ストロボの設定情報を読み出す通信や、ストロボに対して設定情報を通知する通信等である。本ステップの処理の終了後、ステップS606に戻る。
ステップS609では、アクセサリ制御回路201は、アクセサリ200に対する所定のイベントがカメラ100とのI2C通信が必要なイベントであるかどうかを判定する。I2C通信が必要なイベントであると判定された場合、ステップS610に進み、そうでないと判定された場合、ステップS611に進む。
ステップS610では、アクセサリ制御回路201は、カメラ100とのI2C通信を行う。I2C通信は例えば、アクセサリ制御回路201からカメラ100への通信要求信号/WAKEの発生要因の読み出し通信等である。本ステップの処理の終了後、ステップS606に戻る。
ステップS611では、アクセサリ制御回路201は、アクセサリ200に対する所定のイベントが機能信号を用いた制御を行うイベントであるかどうかを判定する。機能信号を用いた制御を行うイベントであると判定された場合、ステップS612に進み、そうでないと判定された場合、ステップS613に進む。
ステップS612では、アクセサリ制御回路201は、カメラ100に対して機能信号を用いた制御を行う。例えば、アクセサリ200がマイク機器である場合、機能信号を用いた制御は、音声データクロック信号BCLKと音声データチャンネル信号LRCLKの受信の制御や、これらの信号に同期した音声データ信号SDATAの出力の制御である。また、アクセサリ200がストロボ機器である場合、機能信号を用いた制御は、ストロボ発光同期信号XOUTの受信の制御である。本ステップの処理の終了後、ステップS606に戻る。
ステップS613では、アクセサリ制御回路201は、アクセサリ200に対する所定のイベントが通信要求信号/WAKEによるカメラ100への通知を行うイベントであるかどうかを判定する。通信要求信号/WAKEによるカメラ100への通知を行うイベントであると判定された場合、ステップS614に進み、そうでないと判定された場合、ステップS615に進む。
ステップS614では、アクセサリ制御回路201は、まず、アクセサリ200に対する所定のイベントに応じたカメラ100への通信要求信号/WAKEの要因番号をアクセサリ200の不図示の揮発性メモリに格納する。次に、アクセサリ制御回路201は、通信要求信号/WAKEの信号レベルをLoレベルに設定する。本ステップの処理の終了後、ステップS606に戻る。
ステップS615では、アクセサリ制御回路201は、アクセサリ200に対する所定のイベントに応じてアクセサリ内制御を行う。アクセサリ内制御は、例えば、アクセサリ200が電池205を有する場合の電池残量検出制御や、操作部212の検出制御等である。本ステップの処理の終了後、ステップS606に戻る。
以上説明したように、アクセサリ200は、図13のフローに沿って装着後の機能動作を行うことができる。
本実施例では、カメラ200の表示部127に、装着されたアクセサリごとのメニュー画面を表示させることを要求するためのメニュー呼び出し部を有するアクセサリ200のメニュー呼び出し動作について説明する。本実施例では、メニュー呼び出し部は、プッシュスイッチである。なお、メニュー呼び出し部は、物理的な部材であってもよいし、アクセサリ200に設けられた不図示の表示部(アクセサリ側表示部)の少なくとも一部の領域であってもよい。
まず、アクセサリ200の側で設定情報を保持している場合の例として、アクセサリ200がストロボの電波ワイヤレス制御を行うストロボトランスミッターである場合について説明する。操作部212は、メニュー呼び出し部のみで構成されている。
アクセサリ制御回路201は、図13のフローに従って、アクセサリ200がカメラ100に装着された後、アクセサリ200の機能が動作するまでの処理を行う。
ステップS604では、アクセサリ制御回路201は、カメラ100からのI2C通信に対して応答し、15バイトのアクセサリ情報を送信する。本実施例ではアクセサリ200はストロボトランスミッターであるため、アクセサリ種類情報は図8の0x80である。
メニュー呼び出し部が操作されると、アクセサリ制御回路201は、ステップS614において、カメラ100への通信要求信号/WAKEの要因番号(図9の「メニュー呼び出し部操作」に対応する0x00)をアクセサリ200の揮発性メモリに格納する。その後、アクセサリ制御回路201は、通信要求信号/WAKEの信号レベルをLoレベルに設定する。本ステップの処理の終了後、ステップS606に戻る。
アクセサリ制御回路201は、ステップS606及びステップS607において、所定のイベントが、SPI通信が必要なストロボトランスミッターの設定を読み出すイベントと判定し、ストロボトランスミッターの設定を読み出す通信を行う。その際、アクセサリ200は、アクセサリ制御回路201内に保存されている、ストロボトランスミッターの設定情報をカメラ200に送信する。
カメラ100は、受信したストロボトランスミッターの設定情報を用いて表示部127にストロボトランスミッターの設定画面(ストロボトランスミッターに関する設定画面)を表示する。ストロボトランスミッターの設定画面は、ストロボトランスミッターの主要な機能に関する設定を行う画面である。図14(a)は、ストロボトランスミッターの設定情報の一例を示す図である。モード、ワイヤレス、SYNC、FEB、発光量、調光量、発光、CH、RATIO、及びGr等の情報がある。GrAモードや、GrA発光量/調光量等は、モードGrのときの設定値である。また、アドレス0x0Dには、ストロボトランスミッターの設定情報以外にストロボトランスミッターのカスタム設定情報が保存されている。アドレス0x0E,0xFに保存されている系列情報や、階層情報については別の実施例にて説明する。
図15(a)は、ストロボトランスミッターの設定画面の一例を示している。表1は、ストロボトランスミッターの設定画面の階層構成の一例を示している。
1201は、表示部127の表示枠である。1202は、画面のタイトルであり、ストロボトランスミッターの機能を設定する画面であることを示している。タイトル以下の表示エリアは、設定項目ごとに分割されている。カメラ100の不図示の操作部を操作してカーソルを移動させ、所望のカーソル位置で不図示の操作部のSETボタンを押下することで設定を変更する項目を決定することができる。1203は、ストロボの発光モードを示す領域であり、図15(a)では発光モードの1つであるETTLとなっている。カーソルが置かれているため枠線が他の項目よりも太くなっている。発光モードは、図15(b)に示されるように、ETTLの他、マニュアル(M)、マルチ発光(MULTI)、グループ発光(Gr)がある。
1204は、ワイヤレス設定を示す領域であり、本実施例のストロボトランスミッターでは電波ワイヤレスセンダーのみであり設定変更できないためグレー表示となっている。1205は、ズーム駆動可能な発光部を有するストロボで使用されるストロボズーム位置を示す領域であり、本実施例のストロボトランスミッターは発光部を有しないためグレー表示となっている。1206は、シンクロ設定を示す領域であり、先幕シンクロ、後幕シンクロ、ハイスピードシンクロ等を示す。1207は、調光量を示す領域である。1208は、調光量をコマごとに変更するFEBを示す領域である。1209は、電波ワイヤレスのチャンネル設定を示す領域である。1210は、センダーストロボの発光をするかしないかの設定を示す領域であり、本実施例のストロボトランスミッターでは設定変更できないためグレー表示となっている。1211は、RATIO設定を示す領域であり、モードがETTLである場合はALL、A:B、又はA:B Cを選択可能である。1212は、電波ワイヤレスのIDを示す領域であり、他のユーザとの混信による誤動作防止のために使用される。
図15(a)のように領域1203にカーソルが置かれた状態でSETボタンを押されると、表示部127に図15(b)に示される発光モードの第二階層画面が表示される。1214は、画面のタイトルであり、発光モードの項目が表示されている画面であることを示している。1215は、現在の設定を示す領域である。1216から1219は、選択肢を示す領域である。領域1216の太線は、カーソル位置を示している。領域1216が黒く、領域1217から1219がグレーとなっているのは現在の設定がETTLであることを示している。
カメラ100の操作部を操作してカーソルを領域1217のマニュアル(M)に移動させ、SETボタンが押下されると、カメラ100は設定を変更する通信をストロボトランスミッターに送信する。それに伴い、ストロボトランスミッターは発光量の情報を送信し、カメラ100は表示部127に図15(c)に示される画面を表示させる。図15(c)の設定画面では、図15(a)の領域1207,1208が消えている。1223は、発光量を示す領域である。1224は、現在の設定値を示す表示である。
次に、アクセサリ200の側で設定情報を保持していない場合の例として、アクセサリ200がマイクである場合について説明する。操作部212は、メニュー呼び出し部のみで構成されている。
アクセサリ制御回路201は、図13のフローに従って、アクセサリ200がカメラ100に装着された後、アクセサリ200の機能が動作するまでの処理を行う。
ステップS604では、アクセサリ制御回路201は、カメラ100からのI2C通信に対して応答し、15バイトのアクセサリ情報を送信する。本実施例ではアクセサリ200はマイクであるため、アクセサリ種類情報は図8の0x83である。
メニュー呼び出し部が操作されると、アクセサリ制御回路201は、ステップS614において、カメラ100への通信要求信号/WAKEの要因番号(図9の「メニュー呼び出し部操作」に対応する0x00)をアクセサリ200の揮発性メモリに格納する。その後、アクセサリ制御回路201は、通信要求信号/WAKEの信号レベルをLoレベルに設定する。本ステップの処理の終了後、ステップS606に戻る。
マイクの設定はカメラ100が保持しているためSPI通信は行われず、カメラ100は表示部127にマイクの設定画面を表示する。
以上説明したように、アクセサリ情報をカメラに送信し、メニュー呼び出し部が操作された場合、通信要求信号/WAKEの発生要因が、メニュー呼び出し部が操作されたことを示す情報をアクセサリ側に格納しておく。これにより、メニュー呼び出し部を操作するだけで、カメラ100を操作してアクセサリ200に応じた設定画面を探すことなく、表示部127に所望の設定画面を表示することができる。また、前述したように、アクセサリ200が設定情報を保持している場合でもSPI通信を実施することで容易に表示部127に所望の設定画面を表示することができる。
本実施例では、表示したい画面が複数ある場合について説明する。カメラ100で表示可能なストロボトランスミッターの設定画面は、「ストロボトランスミッターの設定画面」と「ストロボトランスミッターのカスタム設定画面」である。階層構成として2つの設定画面はつながっていないので「ストロボトランスミッターの設定画面」に入ってから「ストロボトランスミッターのカスタム設定画面」に移行し、設定を変更することができない。
まず、ストロボトランスミッターのカスタム設定画面について説明する。図16(a)は、ストロボトランスミッターのカスタム設定画面の一例を示している。図17は、ストロボトランスミッターのカスタム設定画面の階層構成の一例を示す図である。カスタム設定画面では、オートパワーオフの設定等のストロボトランスミッターの主な機能とは異なる部分の設定を行うことができる。本実施例では、二階層までしかなく、設定は0と1の2択となっている。
図16の1601は、画面のタイトルであり、ストロボトランスミッターのカスタム機能を設定する画面であることを示している。1602はカーソルが現在置かれている項目のタイトルを示す表示であり、1603は現在の設定を示す表示であり、現在の設定が「0:メートル表示」であることを示している。1604は、表示1303に現在表示さている内容を示す表示である。1605は0から7で示されるカスタム機能設定項目であり、1606は各カスタム機能設定項目の設定値である。1608は、カーソルが置かれているカスタム機能設定の番号を示す表示である。1607と1609は、表示させる内容を変更させるための表示である。
図16(a)のように表示1604にカーソルが置かれた状態でカメラ100の操作部のSETボタンが押されると、表示部127に図16(b)に示される距離表示の第二階層画面が表示される。1610は、カーソル位置を示す表示であり、現在の設定が「0:メートル表示」であることを示している。
カメラ100の操作部を操作してカーソルを「1:フィート表示」に移動させ、SETボタンが押下されると、カメラ100は設定を変更する通信をストロボトランスミッターに送信する。それに伴い、ストロボトランスミッターは設定を更新する。その後、カメラ100は、表示部127に図16(c)に示される画面を表示させる。表示1603は、「1:メートル表示」となる。また、表示1604の内容も変更されている。
ここで、図14(a)のアドレス0x0E,0xFに保存されている系列情報について説明する。系列情報は、図14(b)に示されるように表示部127に表示される設定画面の系列がストロボトランスミッターの設定画面であるか、ストロボトランスミッターのカスタム設定画面であるかを示す情報である。
系列ごとに割り当てられた操作部212に対する操作に応じてアクセサリ制御回路201は、アドレス0x0Eの系列情報を更新した後、カメラ100に通信要求を行い、要因と共に系列情報をカメラ100に送信する。これにより、表示部127に所望の系列の設定画面を表示させることができる。
コストやアクセサリ200のサイズの観点から操作部212が1つの部材で構成される場合は、アクセサリ制御回路201に操作部212への複数の操作を判定させることで、所望の系列の設定画面を表示させるようにしてもよい。例えば、操作部212がボタンである場合は、ボタンが短押しされるとストロボトランスミッターの設定画面を表示させ、長押しされるとストロボトランスミッターのカスタム設定画面を表示させればよい。また、単純にボタンの押下に応じてアドレス0x0Eの系列情報を切り替えることで、表示部127に所望の系列の設定画面を表示させてもよい。
本実施例では、操作部212に含まれるメニュー呼び出し部を使用してアクセサリ200の設定画面の第一階層ではない、任意の階層の画面を呼び出す場合について説明する。本実施例では、アクセサリ200は、ストロボトランスミッターであるものとする。
図14(a)のアドレス0x0Eに保存されている階層情報は、図14(c)に示されるようにメニュー呼び出しスイッチが操作されてカメラ100に呼び出す画面の階層がどの階層かを示す情報である。アドレス0x0EのD3以降のデータは階層情報が例えば第二階層である場合、どの項目の第二階層かを示す情報である。階層情報が第二階層、図14(d)の第一階層情報がモードである場合、メニュー呼び出し部が操作されて表示部127に表示される設定画面の階層はモードの第二階層であり、表示部127には図15(b)の発光モードの第2階層画面が表示される。
以下、第二階層の画面を呼び出す際の動作について説明する。図18は、ストロボトランスミッターのカスタム設定画面の一例を示す図である。
本実施例ではカスタム機能設定項目に「8:メニュー呼び出し設定」が追加されており、図18(a)は現在の設定が「8:メニュー呼び出し設定」である場合の画面を示している。1801,1802,1803はそれぞれ、メニュー呼び出し部で呼び出す系列、階層、項目を表している。
図18(a)の状態でカメラ100の不図示の操作部のSETボタンが押されると、表示部127に図18(b)の画面が表示される。ユーザは、カーソル1804を用いて、系列、階層、又は項目のいずれかを選択可能である。図18(b)の状態でSETボタンが押されると、表示部127に図18(c)の画面が表示される。1805は、カーソル位置を示す表示であり、現在の系列が「ストロボ機能設定」であることを示している。図18(c)の状態でSETボタンが押されると、表示部127に図18(d)の画面が表示される。図18(d)の画面でカーソルが操作され、カーソル位置が階層でSETボタンが押されると、表示部127に図18(e)の画面が表示される。図18(e)の画面でカーソルが操作され、カーソル位置が2でSETボタンが押されると、表示部127に図18(f)の画面が表示される。項目の変更も同様であり、本実施例では詳細な説明は省略する。
以上説明したように、アクセサリ200の系列情報、階層情報、及び項目情報を操作部212により所望の設定に変更することで別の系列や第一階層よりも深い階層の画面を表示させることが可能である。
なお、アクセサリ200の使用を再開させる場合、操作部212に対する最初の操作が行われた場合、表示部127に表示させる設定画面は、前回使用した状態の設定画面でもよいし、ユーザが設定した設定画面でもよい。
実施例1乃至3では、アクセサリ200がメニュー呼び出し部を有する場合について説明したが、本実施例ではアクセサリ200がメニュー呼び出し部を有さない場合について説明する。本実施例では、アクセサリ200は、ストロボトランスミッターであるものとする。
図19は、本実施例のストロボトランスミッターのカスタム設定画面の一例を示す図である。
本実施例ではカスタム機能設定項目に「9:メニュー呼び出し」が追加されており、図19(a)は現在の設定が「9:メニュー呼び出し」である場合の画面を示している。1901,1902はそれぞれ、ストロボトランスミッターの設定画面及びカスタム設定画面を呼び出すための方法を示す表示である。本実施例では、アクセサリ200のSETボタンが長押しされると、アクセサリ200はストロボトランスミッターの設定画面を呼び出す要求をカメラ100に送信する。また、アクセサリ200の不図示のSUBMENUボタンが長押しされると、アクセサリ200はストロボトランスミッターのカスタム設定画面を呼び出す要求をカメラ100に送信する。
図19(a)の状態でカメラ100の不図示の操作部のSETボタンが押されると、表示部127に図19(b)の画面が表示される。ユーザは、カーソル1902を用いて、機能設定とカスタム機能設定を選択可能である。図19(b)の状態でSETボタンが押されると、表示部127に図19(c)の画面が表示される。1903は、カーソル位置を示す表示である。ユーザは、ボタンの設定を変更するか、操作の設定を変更するかを選択可能である。図19(c)の状態でSETボタンが押されると、表示部127に図19(d)の画面が表示される。図19(d)の画面でユーザはカーソルを操作し、どのボタンにストロボ機能設定のメニュー呼び出しを割り当てるかを選択可能である。他の項目についても同様に選択可能である。
ユーザによる設定が完了した後、カメラ100はアクセサリ200に設定内容を送信し、アクセサリ200は設定内容を更新する。その後、アクセサリ200が更新された情報を元に制御を行うことでメニュー呼び出し部を有さないアクセサリであってもメニュー呼び出し機能を割り当てることが可能となる。階層情報等の細かい設定をする場合は、本実施例で説明した方法と実施例3で説明した方法とを組み合わせればよい。
以上説明したように、メニュー呼び出し部を有さないアクセサリ200でも既存のボタンを操作し、メニュー呼び出し機能を割り当てることでカメラ100にアクセサリ200のメニューを表示させることができる。その結果、カメラ100の表示部127と操作部を使用して設定を変更する場合でも容易にアクセサリ200のメニューを表示させることができる。
アクセサリ200に表示部と操作部が設けられている場合、アクセサリ200の表示部に所定の画面(例えば第一階層の画面)を表示している際にメニュー呼び出し動作を実行してもよい。これにより、誤動作を防止することができる。また、アクセサリ200がカメラ100に装着されていない場合にはメニュー呼び出しを要求する操作が実施された場合、アクセサリ200の表示部に「カメラ未接続です」等の情報を表示させてもよい。
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
上記各実施例では、電子機器として撮像装置について説明したが、本発明にいう電子機器には撮像装置以外の様々な電子機器も含まれる。
また、上記実施例ではアクセサリ200がカメラ100に直接装着される形態を中心に説明したが、その他の形態であってもよい。例えば、アクセサリ200に相当するメインアクセサリ及びカメラ100が装着されたアダプタ機器等の中間アクセサリを介してカメラ100とメインアクセサリとが通信を行う形態であってもよい。このような形態では、上記実施例で説明したアクセサリ200で実行される通信制御やカメラ100で実行される通信制御の少なくとも一部と同様の通信制御を中間アクセサリで実行してもよい。あるいは、当該アクセサリがカメラ100から入力した情報に対応する情報をメインアクセサリに出力し、メインアクセサリから入力した情報に対応する情報をカメラ100に出力する、といった情報の伝達経路として中間アクセサリを機能させてもよい。以上のように、本発明にいうアクセサリには、マイク機器、照明機器、アダプタ機器など様々なアクセサリが含まれる。