光学ジェスチャーセンサAPDS9960 データシートダウンロード www.avagotech.com/docs/AV02-4191EN COLOR/ALS ENGINE(色と照度) PROXIMITY ENGINE(近接) GESTURE ENGINE(ジェスチャー) 『Enable Register (0x80)』R/W 各機能と割り込みの有効無効を設定するレジスタ BIT6 GEN  ジェスチャー機能の有効無効、(PEN and GMODE bitsもONにする) BIT5 PIEN 近接割り込みの有効無効、閾値フィルターの設定に従います。 BIT4 AIEN デジタル照度センス(ALS)割り込みの有効無効、閾値フィルターの設定に従います。 BIT3 WEN ウェイト機能の有効無効(電力消費及びデータ収集レートを低減します) BIT2 PEN  近接検出機能の有効無効 BIT1 AEN デジタル照度センス(ALS)機能の有効無効 BIT0 PON 1:内部発振器を起動 0:発振器が無効になり、低電力スリープモードになる       I2Cで読み書きするとPONの状態に関係なく一時的に発振器が有効になる ジェスチャー・近接・ALS、機能を有効にする前に、所望の機能の制御に関連するすべてのビットを 設定する必要があります。 制御レジスタ値を変更する操作は無効な結果をもたらすかもしれません。 『ADC Integration Time Register (0x81)』R/W BIT7-0 ATIME デジタル変換器へのALS/カラーアナログの内部の積分時間を制御します。 ADCの積分時間レジスタは、0xFF(2.78ms)がデフォルトで設定されています。 ATIMEレジスタは、ALS/カラーエンジン(16ビットデータ)にのみ適用されます。 8ビットの近接/ジェスチャーエンジンの積分時間は、0.696msの一定時間です、 『Wait Time Register (0x83)』R/W BIT7-0 WTIME 近接とALSサイクル間の低電力モードにおける時間の量を制御します。 電源投入時に、待ち時間レジスタは0xFF(2.78ms)がデフォルトで設定されています。 待ち時間レジスタはAEN/PENのアサート前に設定する必要があり。 任意の近接および/またはALSサイクルの間、機能ブロック図に示されている待機状態では、入力されます。 例えば、Proxのは唯一、ProxのおよびALS、またはALSは唯一のサイクルは常にWAIT状態に入り、 WTIMEで定義された時間で区切られています。 WENで有効にする必要が有ります。 MAX RGBC Count値=(256-ATIME)*1024 『ALS Interrupt Threshold Register (0x84 ? 0x87)』R/W AILTL(下位バイト)/AILTH(上位バイト) 低しきい値 AIHTL/AIHTH 高しきい値 ALSレベル検出は、クリアチャネルによって生成されたデータを使用します。 ALS割り込みしきい値レジスタは、16ビット値で、16ビットのCDATA値と比較するために、 高しきい値および低しきい値として使用することを提供します。 AIENが有効になっており、CDATAは、割り込みが割り込みピンでアサートさAPERSで指定された連続した サンプル数のAILTL/ AIHTLよりAILTH/ AIHTHより大きいか小さい場合。 割り込み発生は、永続性(APERS)に設定された値が適用されます。 『Proximity Interrupt Threshold Register (0x89/0x8B)』R/W PILT 低割り込みしきい値 PIHT 高割り込みしきい値 近接割り込みスレッショルドレジスタは割り込みを発生する比較関数のための ハイとローのトリガポイントを設定します。 PDATA、近接チャネルによって生成された値が、指定された下限しきい値を下回る交差する場合、 またはより高い閾値を超えると、割り込みがホストプロセッサに通知することができます。 割り込み発生は、永続性(PPERS)に設定された値が適用されます。 『Persistence Register (0x8C)』R/W 割り込み持続性レジスタは、結果が外部のしきい値れたALSまたは近接サイクルの 蓄積量と比較される値を設定します。 しきい値内にある任意の近接またはALSの結果は、カウントがリセットされます。 個別のカウンタが近接し、ALSの永続性の検出のために提供されます。 BIT7-4 PPERS 近接割り込み持続性。0-15の値        0=PILT/PIHTに関係なく全ての近接サイクルでデータを得る        1=しきい値範囲外の任意の近接値(PILT/PIHTでフィルターが掛かる)        2=2連続した近接範囲外の値 .....15=15連続した近接範囲外の値 BIT3-0 APERS ALS割り込み持続性。0-15の値        0=AILT/AIHTに関係なく全ての近接サイクルでデータを得る        1=しきい値範囲の外のALS値(AILT/AIHTでフィルターが掛かる)        2=範囲外の2連続したALS値 .....15=範囲外の60連続したALS値 『Configuration Register One (0x8D)』R/W コンフィグ1レジスタは、待機時間が設定されます。 レジスタは、電源投入時には0x60に設定されています。 BIT1 WLONG ウェイトサイクルは12x倍になります。 ウェイトサイクルはWTIMEレジスタにプログラムされたことから、係数12x倍によって増加します (例えば、WTIME=2.78msの設定時に、WLONG=1で有れば0.03Sウエイトする事になります) ビット5/6は予約されており、自動的にPORで1に設定(0x60:デフォルト値)されています。 このビットが設定されていない場合、消費電力は、待機状態の間に増加します。 『Proximity Pulse Count Register (0x8E)』R/W 近接パルスレジスタは近接パルスの間に、現在変更されたパルス幅を設定します数えます。 近接パルスカウントレジスタのビットは、LDRピンに出力するパルス数を設定します。 近接長レジスタのビットは、近接パルスの間の時間LDRピンが電流をシンクしているの量を設定します。 BIT7-6 PPLEN 近接パルス幅の時間(0-4)、1:8usデフォルト BIT5-0 PPULSE 近接パルスカウント(0-63)、パルスの数は、PPULSE値+1により設定されます。 LEDに与えるPWM周期(PPLEN)と発生させるパルスの個数(PPULSE)を指定するレジスタ (デューティ比は50%らしい) 『Control Register One (0x8F)』R/W BIT7-6 LDRIVE LEDドライブ電流の指定(0-3)、12.5mA-100mA BIT3-2 PGAIN 近接ゲインコントロール(0-3)、1x-8x、数値が大きいと検知距離が長くなる BIT1-0 AGAIN ALSゲインコントロール(0-3)、1x-64x 『Configuration Register Two (0x90)』R/W PSIEN/CPIENはアナログデータが飽和した場合に割り込みを利用するのか指定できます。 飽和割り込みは0xE5、0xE6と0xE7でクリア割り込みレジスタにアクセスすることによってクリアされます。 LED_BOOSTビットはLDRピンはLDRIVEとGLDRIVEによる最大値より上のより多くの電流をシンクする事が出来ます。 BIT7 PSIEN 近接飽和割り込み有効無効 BIT6 CPSIEN クリアフォトダイオード飽和(ALS彩度割り込み)割り込み有効無効 BIT5-4 LED_BOOST 近接時の追加のLDR電流とジェスチャーLEDパルス(0-3)、100% - 300% LDRIVEによって設定された電流値が、LED_BOOSTの割合で増加します。 要するにデータが飽和した場合は、読んだデータは当てにならないよ的な使い方を行うのでは。 有効にした場合は、CPSAT/PGSATのステータスを見る。 『ID Register (0x92)』R デバイス(APDS-9960)の認識番号で0xAB固定 『Status Register (0x93)』R ステータスレジスタはデバイスのステータスを提供します。 レジスタは、パワーアップ時には0x04に設定されています。 BIT7 CPSAT クリアフォトダイオードの飽和。 アサートされると、アナログセンサは、ダイナミックレンジの上端でした。 ビットはクリアチャネル割り込みコマンド(0xE6 CICLEAR)を送信することによって、 またはADC(AEN=0)を無効にすることでディアサートすることができます。 CPSIENが設定されている場合、このビットは割り込みをトリガします。 BIT6 PGSAT アナログ飽和イベントは、前の近接やジェスチャーサイクル中に発生したことを示します。 一度設定すると、このビットはクリアな近接でクリアが特別な機能コマンド(0xE5 PICLEAR) を中断するまで、設定またはProxの(PEN=0)を無効にすることによってされたままになります。 PSIENが設定されている場合、このビットは割り込みをトリガします。 BIT5 PINT 近接割込み。 PIENが有効であれば、このビットは、割込みをトリガします。(0xE6 CICLEARを読めばクリア) BIT4 AINT  ALS割り込み。        このビットは、AIENを有効にした場合、割込みがトリガされます(0xE5 PICLEARを読めばクリア) BIT2 GINT  ジェスチャー割り込み。 GFVLVはGFIFOTHよりも大きくなった時かGVALIDになっていた場合にアサート        又は、GMODEがゼロに移行した時。 FIFOが完全に(リード)空になったときにこのビットがリセットされます。 BIT1 PVALID 近接データ有効。        近接サイクルはPENがアサートされてから完了またはPDATAが最後に読み取られた事を示します。        PDATAの読み取りが自動的にPVALIDをクリアします。 BIT0 AVALID ALSデータ有効。 AENがアサートまたはALS/カラーデータレジスタのいずれかからの読み取り以降にしてから、 ALSのA/D変換サイクルが完了したことを示します。 『RGBC Data Register (0x94 - 0x9B)』R CDATAL/CDATAH (0x94/95) Low/High Byte of clear channel data. RDATAL/RDATAH (0x96/97) Low/High Byte of red channel data. GDATAL/GDATAH (0x98/99) Low/High Byte of green channel data. BDATAL/BDATAH (0x9A/9B) Low/High Byte of blue channel data. 赤、緑、青、及びクリアのデータは、16ビット値として格納されます。 下位バイトレジスタが読み取られると、 上位8ビットは、シャドウ・レジスタに格納され、 これは上位バイトに後続の読み取りによって読み取られます。 上位レジスタ域は、追加のADC統合サイクルは下位および上位のレジスタの読み取りの間に終了しても、 正しい値を読み込みます。 レジスタの内容を読み出す場合、下位バイトのデータの読み出しは、自動的に対応する上位バイトの データを(16ビットラッチ)をラッチ。 この機能はI2Cが読み込む間に高バイト値は、ADCによって更新されていないことを保証します。 又、読書CDATALはCDATAHラッチだけでなく、全ての8(RGBC)を同時にラッチする、レジスタ(64ビットラッチ)。 (CDATALを先に読めば、BDATAHまでを読み出すまではデータが更新されないと言う事かな) 『Proximity Data Register (0x9C)』R/W BIT7-0 PDATA 近接データが8ビットの値として記憶されます。 『Proximity Offset UP / RIGHT Register (0x9D)』R/W BIT7-0 POFFSET_UR (-127...0...127) 近接モードでは、UPおよびRIGHTのフォトダイオードは、ダイオードのペアを形成する接続されています。 POFFSET_URアプリケーションにおけるクロストークを補償するために、 内部オフセット補正係数をスケーリングするために使用される8ビットの値です。 この値は、符号/大きさの形式(-127...0...127)で符号化されます。 『Proximity Offset DOWN / LEFT Register (0x9E)』R/W BIT7-0 POFFSET_DL (-127...0...127) 『Configuration Three Register (0x9F)』R/W CONFIG3レジスタは、近接のために使用されているフォトダイオードを選択するために使用されます。 2つのフォトダイオードは、信号を提供するために対になっています。 近接モードでは、UP/RIGHTのフォトダイオードは、ダイオードのペアを形成する接続されています。 同様にDOWN/LEFTフォトダイオードは、ダイオード対を形成します。 BIT5 PCMP 近接ゲイン補償が有効。 近接フォトダイオード信号は、センサのマスキングの結果として減少したとき、 このビットは、利得補償を提供します。 ダイオードペアの一方だけダイオードが貢献している場合は、 信号の後、唯一の半分は、ADCで利用可能です。これは、127の最大のADC値になります。 PCMPを有効にすると、255の最大のADC値で、その結果、2倍の追加ゲインを可能にします。 (BIT0-3でどれか無効にした場合にPCMP=1とすればゲイン補償がされるらしい) BIT4 SAI 割り込み後にスリープ。 有効にすると、INTピンがアサートされ、状態マシンは、 SAIの決定ブロックに進行した場合には、デバイスは自動的に低電力モードに入ります。 INTピンは、I2Cを介してクリアされると、通常の動作が再開されます。 BIT3 PMASK_U 近接UPマスク有効無効にします、1でこのフォトダイオードが無効になります。 BIT2 PMASK_D 近接DOWNマスク有効無効にします、1でこのフォトダイオードが無効になります。 BIT1 PMASK_L 近接LEFTマスク有効無効にします、1でこのフォトダイオードが無効になります。 BIT0 PMASK_R 近接RIGHTマスク有効無効にします、1でこのフォトダイオードが無効になります。 『Gesture Proximity Enter Threshold Register (0xA0)』R/W 近接ジェスチャ入力閾値レジスタ値がジェスチャーステートマシンが入力されたかどうかを決定する為に近接値、 PDATA、と比較されます。 近接永続フィルタ、PPERSは、ジェスチャステートマシンエントリを決定するために使用されていません。 BIT7-0 GPENTH ジェスチャー近接エントリーのしきい値。 このレジスタは、ジェスチャーの状態機械に「ジェスチャー開始」と後続のエントリを決定するために 使用される近接閾値を設定します。 ビット4を0に設定する必要があります。 (PDATAがこの閾値以内OR以外ならジェスチャーを開始すると言う事かな?不明) 『Gesture Exit Threshold Register (0xA1)』R/W ジェスチャー近接終了閾値レジスタの値は、すべての非マスクジェスチャ検出フォトダイオード(UDLR)を比較します。 ジェスチャーステートマシン出口は又、持続性が登録ジェスチャーを終了し、GEPERSの値によって支配されています。 BIT7-0 GEXTH ジェスチャーを終了しきい値。 このレジスタは、「ジェスチャー終了」とジェスチャーの状態機械の後続の終了を決定する為に使用される閾値を 設定します。 GMODEが0に設定されるまで、0x00にGTHR_OUTを設定すると、ジェスチャー出口を防ぐことができます。 (ここで設定した値よりジェスチャーデータGDATAが超えたら、GEXPERS回数数える様だ) 『Gesture Configuration One Register (0xA2)』R/W ジェスチャーコンフィグ1レジスタ ジェスチャ検出器のマスキング、FIFO割り込み発生およびジェスチャー出口固定フィルターを管理する設定が 含まれています。 BIT7-6 GFIFOTH ジェスチャーFIFOしきい値(0-3)。 この値は、FIFOレベル(有効な場合)(UDLRデータセットの数はIE)の割り込みを 生成するために比較されます。 1〜16個のデータFIFOに追加(セット)された後に割り込みが生成されます。 BIT5-2 GEXMSK ジェスチャーの終了マスク(0b0000-0b1111)。 含まれるジェスチャーの検出器のフォトダイオード(UDLR)のコントロールは、 「ジェスチャー終了」とジェスチャーの状態機械の後続の終了を決定します。 マスクされていないUDLRデータはGTHR_OUTの値と比較します。 フィールドの値ビットは、UDLRの検出器に対応しています UDLR 0000=すべてUDLR検出データが合計に含まれます 0001=R検出器データは、合計には含まれません 0110=LとDの検出データは、合計には含まれません 1111=すべてのUDLR検出器データは、合計には含まれません BIT1-0 GEXPERS ジェスチャー終了させるまでの回数(0-3)。 連続する「ジェスチャー終了」発生数がGEPERS値と同じかそれ以上になると、 ジェスチャーステートマシンが終了されます。 1-7回したら「ジェスチャー終了」の発生 『Gesture Configuration Two Register (0xA3)』R/W ジェスチャーコンフィグ2レジスタ LDRドライブの現在の強さとジェスチャーゲイン制御を駆動、待ち時間を管理する設定が含まれています。 BIT6-5 GGAIN ジェスチャーゲインコントロール(0-3:1x-8x) ジェスチャーモードで近接受信機のゲインを設定します。 フォトダイオードの出力に関連したアナログゲインを設定します。 BIT4-3 GLDRIVE ジェスチャーLEDドライブの強度(0-3:12.5mA-100mA) LEDの輝度を支配LDRドライブ電流の強さを設定します。 BIT2-0 GWTIME ジェスチャーの待機時間(0-7:0ms,2.8ms-39.2ms) ジェスチャ検出サイクルの間に、低電力モードの時間の量を制御します。 ジェスチャがONの間は繰返しAD変換しFIFOに書込まれるが、この繰返し時のウエイト時間で有る) GENがアサートされるまでの待ち時間レジスタを設定する必要があります。 GTIMEによって記述された時間は、実際の信号の積分時間です。 LEDはわずかに長い積分時間よりも(通常は1.33マイクロ秒)が有効化されます。 『Gesture UP Offset Register (0xA4)』R/W BIT7-0 GOFFSET_U (-127...0...127) GOFFSET_Uアプリケーションにおけるクロストークを補償するために、内部オフセット補正係数を スケーリングするために使用される8ビットの値です。 この値は、符号/大きさの形式(-127...0...127)で符号化されます。 『Gesture DOWN Offset Register (0xA5)』R/W BIT7-0 GOFFSET_D (-127...0...127) 『Gesture LEFT Offset Register (0xA7)』R/W BIT7-0 GOFFSET_L (-127...0...127) 『Gesture RIGHT Offset Register (0xA9)』R/W BIT7-0 GOFFSET_R (-127...0...127) 『Gesture Pulse Count and Length Register (0xA6)』R/W ジェスチャーパルスレジスタはジェスチャーパルスの間に、現在変更されたパルス幅を設定します数えます。 ジェスチャーパルスカウントレジスタのビットは、LDRピンに出力するパルス数を設定します。 ジェスチャーの長さレジスタのビットは、ジェスチャパルスの間の時間LDRピンが電流をシンクしているの量を 設定します。 BIT7-6 GPLEN ジェスチャーパルス幅の時間(0-4)、1:8us(デフォルト) BIT5-0 GPULSE ジェスチャーパルスカウント(0-63)、パルスの数は、GPULSE値+1により設定されます。 ジェスチャーパルスレジスタは最初の電源投入(POR)には0x40(デフォルト)にリセットカウント。 『Gesture Configuration Three Register (0xAA)』R/W ジェスチャーコンフィグ3レジスタ ジェスチャー状態マシンが方向データを収集している間に、 上下および/または左右有効(FIFOに有効なデータを持っている)されます。 ジェスチャーフォトダイオードのペアがどの支配する設定が含まれています。 通常モードは、FIFOにすべての4つ(UDLR)のジェスチャーのフォトダイオードと場所のデータを可能にします。 フォトダイオードのペアを無効にする、基本的に二倍の高速なデータを収集するために有効です。 無効のペアのFIFOに格納されたデータは有効ではありません。この機能は、一次元ジェスチャが予想される時に、 信頼性とジェスチャ検出の精度を向上させるために有用です。 BIT1-0 GDIMS ジェスチャーのセンサペアを選択(0-3)。 ジェスチャーフォトダイオードのペアがジェスチャ中に結果を収集するために 有効になっているかを選択します。 0/3= 両方のペアがアクティブになっている。UP/DOWN and LEFT/RIGHT FIFOのデータが有効です。 1 = UP/DOWN のペアがアクティブ。FIFO内のLEFT/RIGHTのデータを無視します。 2 = LEFT/RIGHT のペアがアクティブ。FIFO内のUP/DOWNのデータを無視します。 何方か一方向の動作のみで有れば、ここで他のペアを禁止させれば精度が向上するよみたいなぁ 『Gesture Configuration Four Register (0xAB)』R/W ジェスチャーコンフィグ4レジスタ ジェスチャー割り込みを支配し、 クリアを中断設定が含まれ/動作モード制御とステータスと同様にリセットされます。 BIT2 GFIFO_CLR 1=GFIFO、GINT、GVALID、GFIFO_OVとGFIFO_LVLのレジスタをクリアします。 BIT1 GIEN 1=ジェスチャー割り込み有効とする。0=割り込みなし BIT0 GMODE ジェスチャーモード。1=ジェスチャー、0= ALS、近接、色。 『Gesture FIFO Level Register (0xAE)』R 読み取りのためのFIFOで利用可能なデータセットの数を示します。 完全なFIFOのデータセットを(アドレス0xFCから0xffの)読込みは一つGPENTHレジスタの削減を構成しています。 BIT7-0 GFLVL ジェスチャーFIFOレベル。(FIFOに溜まっているデータの数) UDLR I2C以上の読み取りのための準備ができている - このレジスタは、多くの4バイトのデータ点がどのように示しています。 1つの4バイトのデータセットはGFLVL内の単一の数に相当します。 『Gesture Status Register (0xAF)』R GSTATUSレジスタはジェスチャー状態機械の動作状態を示しています。 BIT1 GFOV ジェスチャーFIFOオーバーフロー(データ保存が32個以上になったぞ) BIT0 GVALID ジェスチャーFIFOデータ。 GVALIDビットはGFLVLがGFIFOTHよりも大きくなったときにONします、又割り込ありならGINTもON。 GMODE=0とGFLVL=0(すなわち、全てのFIFOデータが読み取られた)時GFIFODがリセットされます。 FIFOがGFLVL回読み込まれた後に(関係なくGVALIDの)GINTが設定されたままの場合、 これは新しいデータが最後のFIFOを読み取る時にFIFOに追加されたことを示しています。 『Clear Interrupt Registers (0xE4 ? 0xE7)』R/W 割り込みは、「アドレスへのアクセス」を適切なレジスタによってクリアされます。 R/W=0のチップアドレス、レジスタアドレスに続く:これは、2バイトからなる特別のI2Cトランザクションです。 (0xE4-0xE7から読み出せばクリアされる様だ) IFORCE 0xE4 割り込みを強制的にクリア(任意の値) PICLEAR 0xE5 近接割込みをクリア CICLEAR 0xE6 ALS割込みをクリア AICLEAR 0xE7 すべての非ジェスチャー(non-gesture)割り込みをクリア 『Gesture FIFO Register (0xFC - 0xFF)』R ジェスチャーFIFO、各方向の値が格納されている GFIFO_U 0xFC GFIFO_D 0xFD GFIFO_L 0xFE GFIFO_R 0xFF RAM領域(0x00-0x7F)には、32×4バイトのFIFOとして再利用されます。 もしFIFOのオーバーフロー(即ち、33のデータセットのホストの前に/システムはFIFOを空にする事が出来ます)は、 既存のデータセットを置き換えることはありません新しいデータセット。 代わりにオーバーフローフラグが設定され、新しいデータが失われます。 内部FIFO読み出しポインタとアドレス0xFFのは(単一バイト・トランザクション)にアクセスしたとき、 FIFOレベルレジスタは、GFLVL、値が更新されるとき、またはすべての4番目のバイト、 0xFFでのアドレスに対応するページモードでアクセスされます。 FIFOがGFLVLレジスタがゼロの後にアクセスされ続ける場合は、 データセットはゼロ値として読み込まれます。 ジェスチャー割り込みが(GFLVL> GFIFOTH)を生成する際に、FIFOに格納されたデータを読み出すための推奨手順が 開始されます。 次に、ホストは、FIFO内の有効なデータの量を決定するために、 FIFOレベルレジスタ、GFLVLを読み取ります。 最後に、ホストはアドレス0xFC(ページ読み込み)を読み始め、 FIFOが空になるまで(クロックアウトデータ)を読み取るために継続する(バイト数は4倍GFLVLです)。 例えば、GFLVL=2場合、ホストは、アドレス0xFCのリードを開始する必要があり、 順次すべての8バイト(2*4バイト=8)を読み込みます。 4バイトのブロックが読み込まれると、GFLVLレジスタがデクリメントされ、内部FIFOポインタが更新されます。