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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user