forked from mirrors/qmk_userspace
		
	Optimize initialization of PMW3360 Sensor (#15821)
This commit is contained in:
		
					parent
					
						
							
								2fbdfae4b7
							
						
					
				
			
			
				commit
				
					
						ec7c3ac12d
					
				
			
		
					 2 changed files with 12 additions and 7 deletions
				
			
		| 
						 | 
				
			
			@ -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       |
 | 
			
		||||
|-----------------------------|--------------------------------------------------------------------------------------------|---------------|
 | 
			
		||||
|`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_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`           |
 | 
			
		||||
|`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_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 +/- 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.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -209,12 +209,16 @@ void pmw3360_upload_firmware(void) {
 | 
			
		|||
    spi_write(REG_SROM_Load_Burst | 0x80);
 | 
			
		||||
    wait_us(15);
 | 
			
		||||
 | 
			
		||||
#ifdef PMW3360_LEGACY_FIRMWARE_UPLOAD
 | 
			
		||||
    unsigned char c;
 | 
			
		||||
    for (int i = 0; i < FIRMWARE_LENGTH; i++) {
 | 
			
		||||
        c = (unsigned char)pgm_read_byte(firmware_data + i);
 | 
			
		||||
        spi_write(c);
 | 
			
		||||
        wait_us(15);
 | 
			
		||||
    }
 | 
			
		||||
#else
 | 
			
		||||
    spi_transmit(firmware_data, sizeof(firmware_data));
 | 
			
		||||
#endif
 | 
			
		||||
    wait_us(200);
 | 
			
		||||
 | 
			
		||||
    pmw3360_read(REG_SROM_ID);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue