فهرست منبع

[Core] Add configuration of PMW3360 lift off distance (#15424)

* sensor code add

* update documentation

* add default #define

* Update drivers/sensors/pmw3360.c

Co-authored-by: Drashna Jaelre <drashna@live.com>

Co-authored-by: Drashna Jaelre <drashna@live.com>
Xelus22 3 سال پیش
والد
کامیت
b09c44ced7
3فایلهای تغییر یافته به همراه7 افزوده شده و 0 حذف شده
  1. 1 0
      docs/feature_pointing_device.md
  2. 2 0
      drivers/sensors/pmw3360.c
  3. 4 0
      drivers/sensors/pmw3360.h

+ 1 - 0
docs/feature_pointing_device.md

@@ -150,6 +150,7 @@ The PMW 3360 is an SPI driven optical sensor, that uses a built in IR LED for su
 |`PMW3360_SPI_LSBFIRST`       | (Optional) Sets the Least/Most Significant Byte First setting for SPI.                     | `false`       |
 |`PMW3360_SPI_MODE`           | (Optional) Sets the SPI Mode for the sensor.                                               | `3`           |
 |`PMW3360_SPI_DIVISOR`        | (Optional) Sets the SPI Divisor used for SPI communication.                                | _varies_      |
+|`PMW3360_LIFTOFF_DISTANCE`   | (Optional) Sets the lift off distance at run time                                          | `0x02`        |
 |`ROTATIONAL_TRANSFORM_ANGLE` | (Optional) Allows for the sensor data to be rotated +/- 30 degrees directly in the sensor. | `0`           |
 
 The CPI range is 100-12000, in increments of 100. Defaults to 1600 CPI.

+ 2 - 0
drivers/sensors/pmw3360.c

@@ -186,6 +186,8 @@ bool pmw3360_init(void) {
 
     spi_write_adv(REG_Angle_Tune, constrain(ROTATIONAL_TRANSFORM_ANGLE, -30, 30));
 
+    spi_write_adv(REG_Lift_Config, PMW3360_LIFTOFF_DISTANCE);
+
     bool init_success = pmw3360_check_signature();
 
     writePinLow(PMW3360_CS_PIN);

+ 4 - 0
drivers/sensors/pmw3360.h

@@ -46,6 +46,10 @@
 #    endif
 #endif
 
+#ifndef PMW3360_LIFTOFF_DISTANCE
+#    define PMW3360_LIFTOFF_DISTANCE 0x02
+#endif
+
 #ifndef ROTATIONAL_TRANSFORM_ANGLE
 #    define ROTATIONAL_TRANSFORM_ANGLE 0x00
 #endif