pmw3360.h (2837B)
1 // Copyright 2022 Stefan Kerkmann (KarlK90) 2 // Copyright 2022 Ulrich Spörlein (@uqs) 3 // Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com> 4 // Copyright 2019 Sunjun Kim 5 // Copyright 2020 Ploopy Corporation 6 // SPDX-License-Identifier: GPL-2.0-or-later 7 8 #pragma once 9 10 #include <stdint.h> 11 12 #if !defined(PMW33XX_CPI) 13 # define PMW33XX_CPI 1600U 14 #endif 15 16 #define PMW33XX_CPI_STEP 100 17 #define PMW33XX_CPI_MIN 100 18 #define PMW33XX_CPI_MAX 12000 19 20 #define PMW33XX_FIRMWARE_LENGTH 4094 21 22 // PMW3360 register addresses 23 // clang-format off 24 #define REG_Product_ID 0x00 25 #define REG_Revision_ID 0x01 26 #define REG_Motion 0x02 27 #define REG_Delta_X_L 0x03 28 #define REG_Delta_X_H 0x04 29 #define REG_Delta_Y_L 0x05 30 #define REG_Delta_Y_H 0x06 31 #define REG_SQUAL 0x07 32 #define REG_Raw_Data_Sum 0x08 33 #define REG_Maximum_Raw_data 0x09 34 #define REG_Minimum_Raw_data 0x0a 35 #define REG_Shutter_Lower 0x0b 36 #define REG_Shutter_Upper 0x0c 37 #define REG_Control 0x0d 38 #define REG_Config1 0x0f 39 #define REG_Config2 0x10 40 #define REG_Angle_Tune 0x11 41 #define REG_Frame_Capture 0x12 42 #define REG_SROM_Enable 0x13 43 #define REG_Run_Downshift 0x14 44 #define REG_Rest1_Rate_Lower 0x15 45 #define REG_Rest1_Rate_Upper 0x16 46 #define REG_Rest1_Downshift 0x17 47 #define REG_Rest2_Rate_Lower 0x18 48 #define REG_Rest2_Rate_Upper 0x19 49 #define REG_Rest2_Downshift 0x1a 50 #define REG_Rest3_Rate_Lower 0x1b 51 #define REG_Rest3_Rate_Upper 0x1c 52 #define REG_Observation 0x24 53 #define REG_Data_Out_Lower 0x25 54 #define REG_Data_Out_Upper 0x26 55 #define REG_Raw_Data_Dump 0x29 56 #define REG_SROM_ID 0x2a 57 #define REG_Min_SQ_Run 0x2b 58 #define REG_Raw_Data_Threshold 0x2c 59 #define REG_Config5 0x2f 60 #define REG_Power_Up_Reset 0x3a 61 #define REG_Shutdown 0x3b 62 #define REG_Inverse_Product_ID 0x3f 63 #define REG_LiftCutoff_Tune3 0x41 64 #define REG_Angle_Snap 0x42 65 #define REG_LiftCutoff_Tune1 0x4a 66 #define REG_Motion_Burst 0x50 67 #define REG_LiftCutoff_Tune_Timeout 0x58 68 #define REG_LiftCutoff_Tune_Min_Length 0x5a 69 #define REG_SROM_Load_Burst 0x62 70 #define REG_Lift_Config 0x63 71 #define REG_Raw_Data_Burst 0x64 72 #define REG_LiftCutoff_Tune2 0x65 73 // clang-format on