forked from forks/qmk_firmware
Optimize initialization of PMW3360 Sensor (#15821)
This commit is contained in:
parent
2fbdfae4b7
commit
ec7c3ac12d
|
@ -144,13 +144,14 @@ The PMW 3360 is an SPI driven optical sensor, that uses a built in IR LED for su
|
||||||
|
|
||||||
| Setting | Description | Default |
|
| Setting | Description | Default |
|
||||||
|-----------------------------|--------------------------------------------------------------------------------------------|---------------|
|
|-----------------------------|--------------------------------------------------------------------------------------------|---------------|
|
||||||
|`PMW3360_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ |
|
|`PMW3360_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ |
|
||||||
|`PMW3360_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
|
|`PMW3360_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
|
||||||
|`PMW3360_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
|
|`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_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` |
|
||||||
|`PMW3360_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
|
|`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` |
|
|`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` |
|
|`ROTATIONAL_TRANSFORM_ANGLE` | (Optional) Allows for the sensor data to be rotated +/- 127 degrees directly in the sensor. | `0` |
|
||||||
|
|`PMW3360_LEGACY_FIRMWARE_UPLOAD` | (Optional) Switches to older, manual upload of firmware, for compatibility. | _not defined_ |
|
||||||
|
|
||||||
The CPI range is 100-12000, in increments of 100. Defaults to 1600 CPI.
|
The CPI range is 100-12000, in increments of 100. Defaults to 1600 CPI.
|
||||||
|
|
||||||
|
|
|
@ -209,12 +209,16 @@ void pmw3360_upload_firmware(void) {
|
||||||
spi_write(REG_SROM_Load_Burst | 0x80);
|
spi_write(REG_SROM_Load_Burst | 0x80);
|
||||||
wait_us(15);
|
wait_us(15);
|
||||||
|
|
||||||
|
#ifdef PMW3360_LEGACY_FIRMWARE_UPLOAD
|
||||||
unsigned char c;
|
unsigned char c;
|
||||||
for (int i = 0; i < FIRMWARE_LENGTH; i++) {
|
for (int i = 0; i < FIRMWARE_LENGTH; i++) {
|
||||||
c = (unsigned char)pgm_read_byte(firmware_data + i);
|
c = (unsigned char)pgm_read_byte(firmware_data + i);
|
||||||
spi_write(c);
|
spi_write(c);
|
||||||
wait_us(15);
|
wait_us(15);
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
spi_transmit(firmware_data, sizeof(firmware_data));
|
||||||
|
#endif
|
||||||
wait_us(200);
|
wait_us(200);
|
||||||
|
|
||||||
pmw3360_read(REG_SROM_ID);
|
pmw3360_read(REG_SROM_ID);
|
||||||
|
|
Loading…
Reference in a new issue