ADNS-2700 Single Chip USB Optical Mouse Sensor Data Sheet Description Features The ADNS-2700 is a compact, one chip USB optical mouse sensor designed for implementation of a non-mechanical tracking engine in computer mice. One chip USB mouse sensor It is based on optical navigation technology that measures changes in position by optically acquiring sequential surface images (frames) and mathematically determining the direction and magnitude of movement. Meets HID Revision 1.11 The sensor is in an 8-pin optical package that is designed to be used with the ADNS-5100-001 trim lens, LED clip and the HLMP-EG3E-xxxxx LED. Together, these parts provide a complete and compact mouse sensor. There are no moving parts and precision optical alignment is not required, thus facilitating high volume assembly. The output format is USB. This device meets HID Revision 1.11 specification and is compatible with USB Revision 2.0 specification. USB 2.0 Low Speed Compliance 12 bits USB motion data reporting Single 5.0 volts power supply High speed motion detection at 30 inches per second (ips) and acceleration up to 8 g Input buttons: 3 buttons Z-Wheel interface for vertical scroll Integrated oscillator Integrated USB D- pull-up resistor Product string is set to “USB Optical Mouse” On-chip OTP memory for device configuration flexibility without any external software driver: Frame rate is varied internally to the sensor to achieve tracking and speed performance, eliminating the need for the use of many registers. – Programmable resolution from 500 to 1250 counts per inch (cpi) with 250 cpi step. Default resolution is specified as 1000 counts per inch, with rates of motion up to 30 inches per second. – Programmable VID and PID. A complete mouse can be built with the addition of a PC board, switches and Z-wheel, plastic case and cable. – Programmable sensor orientation Applications Corded optical mice Trackballs NOTE: ADNS-2700 will be referred to as "sensor", ADNS-5100001 as " trim lens" and HLMP-EG3E as "LED" hereafter. Integrated input devices Theory of Operation Package Pinout The sensor is based on Optical Navigation Technology. It contains an Image Acquisition System (IAS), a Digital Signal Processor (DSP) and USB stream output. Date Code 4 5 The IAS acquires microscopic surface images via the lens and illumination system provided by the trim lens. The clip and LED. These images are processed by the DSP to determine the direction and distance of motion. The DSP generates the x and y relative displacement values which are converted to USB motion data. Table 1. Pin Name Description Pin Name Input/Output Description XY_LED I XY_LED VDDA5 – 5-Volt Power ZB I Z-Wheel quadrature input ZA I Z-Wheel quadrature input SW – 3-in-1 button pin. Do not force any voltage into this pin GND – Ground D- I/O USB D- line D+ I/O USB D+ line 2 3 6 2 7 1 8 Lot Code Product Number Item Marking Remarks Product Number A2700 Date Code XYYWWZ X = Subcon Code YYWW = Date Code Z = Sensor Die Source E = Wafer Revision Lot Code VVV Numeric Figure 1. Package outline drawing (top view) Product Number Date Code Features for Illustration only 9.90 0.390 9.10 0.358 3.21 0.126 4.30 0.169 5.15 0.203 12.85 (At shoulder) 0.506 Lot Code Pin 1 ± 90 1.00 Lead offset 0.039 0.50 0.020 (2.54) 0.100 ∅ 5.60 12.85 ± 0.50 (At lead tip) 0.506 ± 0.020 2.00 0.079 (0.04) 0.002 Lead pitch 3q Lead width Pin 1 0.220 4.55 0.179 Protective Kapton Tape Section A-A A A ∅ 0.80 0.031 Clear Optical Path 4.45 0.175 Notes: 1. Dimensions in millimeter / inches. 2. Dimensional tolerance: ± 0.1mm. 3. Coplanarity of leads: 0.1mm. 4. Lead pitch tolerance: ± 0.15mm. 5. Non-cumulative pitch tolerance: ± 0.15mm. 6. Angular tolerance: ± 3q 7. Maximum flash: 0.2mm. 8. Brackets () indicate reference dimension. 9. Document Number: LED_DIFF_8B_PKG_002 Figure 2. Package Outline Drawing CAUTION: It is advised that normal static precautions be taken in handling and assembling of this component to prevent damage and/or degradation which may be induced by ESD. 3 Overview of Optical Mouse Sensor Assembly Avago Technologies provides an IGES file drawing describing the base plate molding features for lens and PCB alignment. The sensor is designed for mounting on a through-hole PCB. There is an aperture stop and features on the package that align to the lens. The lens provides optics for the imaging of the surface as well as the illumination of the surface at the optimum angle. Features on the lens align it to the sensor, base plate, and clip with the LED. The clip holds the LED in relation to the lens. The LED must be inserted into the clip and the LED’s leads formed prior to loading on the PCB. 10.35 0.407 7.56 0.298 6.29 0.248 5.02 0.198 2.25 0.089 Optional hole for alignment post if used 12.85 0.506 31.50 1.240 0.25 0.010 26.67 1.050 14.44 0.569 3x 0 2x 0 24.15 0.951 3.00 0.118 Clear Zone 0.80 0.031 14.94 0.588 Pin #1 0 0 2.00 0.079 2.00 0.079 8x 0 25.00 0.984 1.00 0.039 Hole Pitch Distance 0.80 0.031 Optical Center 0 0 1.37 0.054 6.29 0.248 11.22 0.442 12.60 0.496 Figure 3. Recommended PCB Mechanical Cutouts and Spacing 4 13.06 0.514 33.45 1.317 TOP VIEW Pin #1 B B 13.10 0.516 BASE PLATE CROSS SECTION SIDEVIEW LENS LED 10.59 0.417 LED CLIP SENSOR PCB 7.45 0.293 TOP PCB to SURFACE ALIGNMENT POST (OPTIONAL) 2.40 BOTTOM of LENS 0.094 FLANGE to SURFACE BASE PLATE NAVIGATION SURFACE NOTE: Dimensions in mm/Inches Important Note: Pin 1 of sensor should be located nearest to the LED Figure 4. 2D Assembly drawing of sensor (Top and Side View) Lens Sensor Object Surface Lens Reference Plane Z= 2.40 0.094 Figure 5. Distance from lens reference plane to tracking surface (Z) 5 LED Clip Sensor Customer supplied PCB Trim Lens Customer supplied base plate with recommended alignment features per IGES drawing IMPORTANT NOTE: P-bin LED or better is recommended. Figure 6. Exploded View of Assembly PCB Assembly Considerations 1. Insert the sensor and all other electrical components into PCB. 2. Insert the LED into the assembly clip and bend the leads 90 degrees. 3. Insert the LED clip assembly into PCB. 4. This sensor package is only qualified for wave-solder process. 5. Wave solder the entire assembly in a no-wash solder process utilizing solder fixture. The solder fixture is needed to protect the sensor during the solder process. It also sets the correct sensor-to-PCB distance as the lead shoulders do not normally rest on the PCB surface. The fixture should be designed to expose the sensor leads to solder while shielding the optical aperture from direct solder contact. 6. Place the lens onto the base plate. 6 7. Remove the protective Kapton tape from optical aperture of the sensor. Care must be taken to keep contaminants from entering the aperture. Recommend not to place the PCB facing up during the entire mouse assembly process. Recommend to hold the PCB first vertically for the Kapton removal process. 8. Insert PCB assembly over the lens onto the base plate aligning post to retain PCB assembly. The sensor aperture ring should self-align to the lens. 9. The optical position reference for the PCB is set by the base plate and lens. Note that the PCB motion due to button presses must be minimized to maintain optical alignment. 10. Install mouse top case. There MUST be a feature in the top case to press down onto the PCB assembly to ensure all components are interlocked to the correct vertical height. USB PORT D+ SW D BUTTONS CONTROL AND I/O PROCESSOR ZA Z WHEEL OSCILLATOR LED XY_LED LED DRIVE POWER ON RESET IMAGE PROCESSOR R VE OG LU T L AA GT EO R VDDA5 5 VOLT POWER GND Figure 7. Block diagram of optical mouse Design considerations for improving ESD Performance The table below shows typical values assuming base plate construction per the Avago Technologies supplied IGES file trim lens. Stand-off of the base plate shall not be larger than 5 mm. Typical Value Distance (mm) Creepage 17.9 mm Clearance 9.2 mm Note that the lens material is polycarbonate or polystyrene HH30, therefore, cyanoacrylate based adhesives should not be used as they will cause lens material deformation 7 1 2 3 4 5 T 59.0 143.0 8 22R 22R 1 Middle Button Right Button Left Button C9 20 pF VDD_LED Don’t use jumper wire. Use resistor to jump instead. Keep the trace wide. Keep (pin 5) away from noisy traces, GND plane and Power plane. The 3 button trace for SW pin need to be same width, length. Figure 8. Application Circuit with sensor 2 1 R9 R8 C2 10 μF/50 V POWER BLOCK VDD 2 2 3 2 3 SW3 SW2 SW1 1 1 1 6 SW ZA ZB XY_LED C5 4.7 μF/10 V A2700 Buttons BM BR BL GND D+ D- VDDA5 Use ONLY 1% tolerance resistor for buttons C10 20 pF 8 7 2 U1 C3 100 nF VDD Try to shield the HWEL with a SHIELD Plane (USB pin 5) similar size of HWFL before connect to GND. Isolate the Shield island with GND plane S 59.0 110.0 1 R 59.0 93.1 LED Bin Q VCC USBUSB+ VSS Shield 59.0 78.7 Rbin Value (Ohm) Table 1 H1 HWFL 2mm 5Way R W G B B VCC VCC 5 4 3 1 R7 30 k R10 15 k D5 HLMP-EG3E Rbin Refer to Rbin Table VDD_LED R11 6.8 k 2 COM B A Z-ENCORDER Z1 3 2 1 1 PAD1 P6 VCC 1 ZB ZA 1 1 1 PAD1 PAD1 PAD1 GND ZB P2 P1 P3 VDD ZA MECH-Z-Encoder 1 1 1 PAD1 P9 VDD VOLTAGE MEASUREMENT VCC ZA ZB VDD Regulatory Requirements Passes FCC B and worldwide analogous emission limits when assembled into a mouse with shielded cable and following Avago Technologies recommendations. Passes EN61000-4-4/IEC801-4 EFT tests when assembled into a mouse with shielded cable and following Avago Technologies recommendations. UL flammability level UL94 V-0. Provides sufficient ESD creepage/clearance distance to withstand discharge up to 8 kV when assembled into a mouse with trim lens according to usage instructions above. Absolute Maximum Ratings Parameter Symbol Minimum Maximum Units Storage Temperature TS -40 85 C Operating Temperature TA -15 55 C 260 C VDDA5 -0.5 5.5 V 2 kV All pins, human body model JESD22-A114 VIN -0.5 VDDA5 +0.5 V All I/O pins except D+, D- -1.0 4.6 V D+, D-, AC waveform, see USB specification (7.1.1) 0 VDDA5 V D+, D-, see USB specification (7.1.1) Lead Solder Temperature Supply Voltage ESD Input Voltage Input Short Circuit Voltage VSC Notes For 10 seconds, 1.6 mm below seating plane. Recommended Operating Condition Parameter Symbol Minimum Operating Temperature TA 0 Power Supply Voltage VDDA5 4.25 Vddm 4.0 Power Supply Rise Time VRT 0.1 Supply Noise VN Velocity Vel 30 ips Acceleration Acc 8 g 0.5 g from Rest 1 MHz 50% duty cycle 2.5 mm See Figure 9 25000 MW/m2 = 639 nm fps Internally adjusted by sensor Serial Port Clock Frequency fSCLK Distance from Lens Reference Plane to Surface Z 2.3 Light Level onto IC IRRINC 80 Frame Rate Maximum Units 40 C 5.0 5.25 V For accurate navigation and proper USB operation 5.0 5.25 V Maintains communication to USB host and internal register contents. 6 ms 100 mV 2.4 2400 Sensor Lens Z Object Surface Figure 9. Distance from lens reference plane to object surface 9 Typical Notes Peak to peak within 0-100 MHz bandwidth AC Electrical Specifications Electrical Characteristics over recommended operating conditions. Typical values at 25° C, VDDA5 = 5.0 V. Parameter Symbol Wakeup Delay from Rest Mode Due to Motion T WUPP Power Up Delay TPUP Debounce Delay on Button Inputs TDBB 5 Scroll Wheel Sampling Period TSW 150 Transient Supply Current IDDT Minimum Typical Maximum Units Notes 1 2 ms 50 ms 9 17 ms “Maximum” specified at 8 ms polling rate. 200 300 s ZA PIN 60 mA Max. supply current during a VDDA5 ramp from 0 to 5.0 V with > 500 s rise time. Does not include charging currents for bypass capacitors. USB Electrical Specifications Electrical Characteristics over recommended operating conditions. Parameter Symbol Minimum Maximum Units Notes Output Signal Crossover Voltage VCRS 1.5 2.0 V CL = 200 to 600 pF (see Figure 10) Input Signal Crossover Voltage VICRS 1.2 2.1 V CL = 200 to 600 pF (see Figure 10) Output High VOH 2.8 3.6 V with 15 k to Ground and 7.5 k to VBUS on D- (see Figure 11) Output Low VOL 0.0 0.3 V with 15 k to Ground and 7.5 k to VBUS on D- (see Figure 11) 0.8 Single Ended Input VSEI Input High (Driven) VIH 2.0 Input High (Floating) VIHZ 2.7 VIL VDI 0.2 Differential Input Common Mode Range VCM 0.8 Single Ended Receiver Threshold VSE 0.8 Transceiver Input Capacitance CIN 10 3.6 0.8 Input Low Differential Input Sensitivity V V V V 7.5 k to VDDA5 V |(D+)-(D-)| See Figure 12 2.5 V Includes VDI, See Figure 12 2.0 V 12 pF D+ to VBUS, D- to VBUS USB Timing Specifications Timing Specifications over recommended operating conditions. Parameter Symbol Minimum D+/D- Transition rise time TLR 75 D+/D- Transition rise time TLR D+/D- Transition fall time TLF D+/D- Transition fall time TLF Rise and Fall time matching TLRFM Wakeup delay from USB suspend mode due to buttons push Maximum Notes ns CL = 200 pF (10% to 90%), see Figure 10 ns CL = 600 pF (10% to 90%), see Figure 10 ns CL = 200 pF (90% to 10%), see Figure 10 300 ns CL = 600 pF (90% to 10%), see Figure 10 125 % TR/TF; CL = 200 pF; Excluding the first transition from the Idle State T WUPB 17 ms Delay from button push to USB operation Only required if remote wakeup enabled Wakeup delay from USB suspend mode due to buttons push until accurate navigation T WUPN 50 ms Delay from button push to navigation operation. Only required if remote wakeup enabled USB reset time Treset 18.7 Data Rate tLDRATE 1.4775 1.5225 Mb/s Average bit rate, 1.5 Mb/s +/- 1.5% Receiver Jitter Tolerance tDJR1 -75 75 ns To next transition, see Figure 13 Receiver Jitter Tolerance tDJR2 -45 45 ns For paired transitions, see Figure 13 Differential to EOP Transition Skew tLDEOP -40 100 ns See Figure 14 EOP Width at Receiver tLEOPR 670 ns Accepts EOP, see Figure 14 Source EOP Width tLEOPT 1.25 Width of SE0 interval during Differential Transition tLST Differential Output Jitter tUDJ1 Differential Output Jitter tUDJ2 VOH 300 Units 75 80 s 1.50 s 210 ns See Figure 11. -95 95 ns To next transition, see Figure 15 -150 150 For paired transitions, see Figure 15 D+ 90% 90% VCRS VOL 10% D Figure 10. Data Signal Rise and Fall Times 11 10% TLR TLF Rise Time Fall Time Minimal Reflectance and Ringing One Bit Time (1.5 MB/s) VOH (min) VIH (min) VIL (max) VOL (max) GND tLST Figure 11. Data Signal Voltage Levels Differential Input Voltage Range Differential Output Crossover Voltage Range -1.0 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.0 3.2 4.6 Input Voltage Range (volts) Figure 12. Differential Receiver Input Sensitivity vs. Common Mode Input Range TPERIOD TDJR TDJR1 Consecutive Transitions N * TPERIOD + TDJR1 Paired Transitions N * TPERIOD + TDJR2 Figure 13. Receiver Jitter Tolerance 12 TDJR2 TPERIOD Crossover Point Crossover Point Extended Differential Data Lines Differential Data to SE0 Skew N * TPERIOD + TLDEOP Source EOP Width: TLEOPT Receiver EOP Width: TLEOPR Figure 14. Differential to EOP Transition Skew and EOP Width TPERIOD Differential Data Lines Consecutive Transitions N * TPERIOD + TUDJ1 Paired Transitions N * TPERIOD + TUDJ2 Figure 15. Differential Output Jitter 13 DC Electrical Specifications Electrical Characteristics over recommended operating conditions. Typical values at 25° C, VDDA5 = 5.0 V. Parameter Symbol System Current, Mouse Moving Typical Maximum Units Notes IDD5 35 50 mA Includes XY_LED current System Current, Mouse Not Moving IDD5N 15 30 mA Includes XY_LED current System Current, USB Suspend Mode, Remote Wakeup Enabled IDD5S 500 A Includes XY_LED current and D- pullup resistor. Supply Current (Sensor only), Mouse Moving IDDS 4.5 8 mA No load on SW, XY-LED, ZA, ZB, D+, D- Supply Current (Sensor only), Mouse Not Moving IDDSN 3.9 7.5 mA No load on SW, XY-LED, ZA, ZB, D+, D- Sensor Supply Current, USB Suspend Mode IDDSS 320 A No load on SW, XY-LED, ZA, ZB, D+,D- XY_LED Current ILED 30 mA XY_LED Output Low Voltage VOL 1.1 V Input Low Voltage VIL 0.5 V Pins: ZA, ZB VIL max of 0.5 VDC is at VDDA5 min of 4 V DC, with a typical of 0.8 VDC at VDDA5 of 5 VDC Input High Voltage VIH V Pins: ZA, ZB 14 Minimum 0.6*VDDA5 One-Time-Programmable (OTP) Memory OTP Byte Write Operation The on chip OTP memory allows device configuration flexibility to override the default setting of sensors without any external software driver. Once the OTP operation is enabled, all OTP registers must be programmed accordingly as the default values of un-program OTP registers are always zero when L1_USE_OTP register setting is not zero value. Tips: OTP write to the OTP register can be skipped if the setting is zero value (0x00) in order to save the OTP programming time. OTP write operation flow chart is shown in Figure 16. OTP address space is from 0xDF to 0xE8. OTP can be programmed via USB interface using Set Vendor Test and Get Vendor Test commands. 5. Set write enable bit in OTP_CTRL register, 0x54 to enable write command to OTP: WR = 1. 1. Set OTP Clock enable bit in OTP_CLOCK register, 0x42: OTP_CLOCK_EN = 1. 2. Set OTP enable bit in OTP_CONFIG register, 0x51: OTP_ EN = 1. 3. Write the OTP register address byte to OTP_ADDR register, 0x52. 4. Write the OTP data byte to OTP_DATA register, 0x53. 6. Read the write enable bit status in OTP_CTRL register, 0x54. If WR = 1, repeat reading the bit status until it is clear. 7. Read the write status bit in OTP_CTRLSTAT register, 0x58. a. If WR_OK = 1, OTP write operation is completed. Repeat Step 2 for more OTP byte write operations. b. If WR_OK = 0, repeat Step 5. 8. If Step 6b is repeated up to 10 times, OTP write operation is failed and the chip is confirmed as defective unit. Start 0x51: REGA_OTP_CONFIG[0]=1 Write OTP enable bit repeat = 1 0x52: REGA_OTP_ADDR[7:0] Write OTP address byte 0x53: REGA_OTP_DATA[7:0] Write OTP data byte 0x54: REGA_OTP_CTRL[0]=1 Write OTP program bit 0x54: REGA_OTP_CTRL[0] Read OTP program bit No bit = 0? Yes 0x58: REGA_OTP_CTRLSTAT[0] repeat = repeat + 1 read otp status bit No bit = 1? No Yes OTP write pass No Done Figure 16. OTP Byte Write Flow Chart 15 OTP write fail Yes more bytes? repeat = 10? Bad Chip OTP Byte Read Operation OTP read operation flow chart is shown in Figure 17. 1. Set OTP Clock enable bit in OTP_CLOCK register, 0x42: OTP_CLOCK_EN = 1. 2. After OTP write to OTPLOCK1 register, set OTP enable bit in OTP_CONFIG register, 0x51: OTP_EN = 1. 3. Set OTP lock bit in OTP_CTRL register, 0x54 to enable OTP lock command: LOCK_L1 = 1. 2. Set OTP enable bit in OTP_CONFIG register, 0x51: OTP_ EN = 1. 4. Read the OTP lock bit status in OTP_CTRL register, 0x54. If LOCK_L1 = 1, repeat reading the bit status until it is clear. 3. Write the OTP register address byte to OTP_ADDR register, 0x52. 5. Read the lock status and CRC bits in OTP_CTRLSTAT register, 0x58. 4. Set read enable bit in OTP_CTRL register, 0x54 to enable write command to OTP: RD = 1. a. If both L1_LOCK_OK and L1_CRC_OK = 1, OTP lock operation is completed. 5. Read the read enable bit status in OTP_CTRL register, 0x54. If RD = 1, repeat reading the bit status until it is clear. Read the OTP data byte from OTP_DATA register, 0x53 to complete the OTP read operation. b. If either L1_LOCK_OK or L1_CRC_OK = 0, repeat Step 2 until both bits are set. 6. Read the OTP data byte from OTP_DATA register, 0x53 to complete the OTP read operation. 7. Repeat Step 2 for more OTP read operations 6. If Step 4b is repeated up to 10 times, OTP lock operation is failed and the chip is confirmed as defective unit. 7. Read the CRC result stored in register 0xE9, 0xEA, 0xEB, 0xEC, if four register values not 0x00 means CRC has been generated correctly and verified as lock operation success. Start 0x51: REGA_OTP_CONFIG[0]=1 Start Write OTP enable bit 0x52: REGA_OTP_ADDR[7:0] Write OTP addr byte 0x54: REGA_OTP_CTRL[1]=1 Write OTP read bite 0x54: REGA_OTP_CTRL[1] 0x51: REGA_OTP_CONFIG[0]=1 Write OTP enable bit Repeat = 1 0x54: REGA_OTP_CTRL[3]=1 Write OTP lock bit Wait for 10ms Read OTP program bit No 0x54: REGA_OTP_CTRL[3] Read OTP lock bit bit = 0? No bit = 0? Yes 0x53: REGA_OTP_DATA[7:0] Yes Read OTP data 0x58: REGA_OTP_CTRLSTAT[4] Read lock status bit Repeat = Repeat + 1 OTP read done 0x58: REGA_OTP_CTRLSTAT[5] Read CRC status bit No Yes more bytes? No Repeat = 10? lock & crc = 1? No Yes Yes OTP write fail Done OTP lock Figure 17. OTP Byte Read Flow Chart Bad Chip more lock? OTP Lock Operation OTP lock operation MUST be performed once OTP write to OTPLOCK1 register for the sensor to function. DO not reset or power up the chip right after OTP write to OTPLOCK1 register, otherwise the chip will be malfunction. The OTP lock operation flow chart is shown in Figure 18. 32 bit CRC results stored in register 0xE9 0xEA 0xEB 0xEC Compare CRC No CRC Correct? Yes Done 1. Set OTP Clock enable bit in OTP_CLOCK register, 0x42: OTP_CLOCK_EN = 1 16 Figure 18. OTP Byte Lock Flow Chart Yes Buttons Debounce Algorithm The minimum time between button pressed is TDBB. The button connection is described in Figure 19 Button inputs B1, B2, and B3 are sampled every 6ms. SW Pin Three consecutive high values create a button release event. R7 30 k R10 15 k BL R11 6.8 k BR Two consecutive low values create a button press event. BM Note: Use only 1% tolerance resistors Figure 19. Button connections Configuration after Power up (Data Values) Signal Function State from Figure 9-1 of USB spec: Powered or Default Address or Configured State from Figure 9-1 of USB spec: Suspended from Any Other State SW Output voltage at 1.16 V (Typ) Output voltage at 2.7 V (Typ) D- USB I/O Hi-Z Input D+ USB I/O Hi-Z Input XY_LED Always ON / Pulsing Pulled HIGH (OFF) ZB Hi-Z Input Output HIGH ZA Hi-Z Input Output HIGH Typical Performance Characteristics Performance Characteristics over recommended operating conditions. Typical values at 25° C, VDD = 5.0 V, 24 MHz Parameter Symbol Path Error (Deviation) PError Minimum Typical 0.5 Maximum Units Notes % Average path error as percent of total 2.5” travel on various standard surfaces The following graphs are the typical performance of the sensor, assembled as shown in the 2D assembly drawing with trim lens, clip, and LED. 17 Resolution vs Z-Height on Standard Surfaces 1200 Resolution (DPI) 1000 800 600 400 White Formica White Paper Manila 200 Spruce/White Pine Black Formica 0 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 Distance from Lens Reference Plane to Surface, Z (mm) Figure 20. Typical Resolution vs. Z Height Mean Shutter vs Z (White paper) Shutter value (Count) 100 Avg-3sigma Avg Avg+3sigma 50 0 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.0 Distance from Lens Reference Plane to Surface, Z (mm) 3.2 Figure 21. Mean shutter vs Z height over white paper Notes: 1. The sensor is designed for optimal performance when used with the specified LED. 2. Z = distance from Lens Reference Plane to Surface. 18 3.4 USB Commands Mnemonic Command Notes USB_RESET D+/D- low > 18.7 s Device Resets; Address=0 USB_SUSPEND Idle state > 3 mS Device enters USB low-power mode USB_RESUME Non-idle state Device exits USB low-power mode Get_Status_Device 80 00 00 00 00 00 02 00 Normally returns 00 00, Self powered 00 00, Remote wakeup 02 00 Get_Status_Interface 81 00 00 00 00 00 02 00 Normally returns 00 00 Get_Status_Endpt0 82 00 00 00 xx 00 02 00 OUT: xx=00, IN: xx=80 Normally returns 00 00 Get_Status_Endpt1 82 00 00 00 81 00 02 00 Normally returns 00 00, Halt 00 01 Get_Configuration 80 08 00 00 00 00 01 00 Return: 00=not config., 01=configured Get_Interface 81 0A 00 00 00 00 01 00 Normally returns 00 Get_Protocol A1 03 00 00 00 00 01 00 Normally returns 01, Boot protocol 00 Get_Desc_Device 80 06 00 01 00 00 nn 00 See USB command details Get_Desc_Config 80 06 00 02 00 00 nn 00 See USB command details Get_Desc_String 80 06 xx 03 00 00 nn 00 See USB command details Get_Desc_HID 81 06 00 21 00 00 09 00 See USB command details Get_Desc_HID_Report 81 06 00 22 00 00 nn 00 See USB command details Get_HID_Input A1 01 00 01 00 00 nn 00 Return depends on motion & config Get_Idle A1 02 00 00 00 00 01 00 Returns rate in multiples of 4 ms Get_Vendor_Test C0 01 00 00 xx 00 01 00 Read register xx Set_Address 00 05 xx 00 00 00 00 00 xx = address Set_Configuration 00 09 xx 00 00 00 00 00 Not configured: xx=00 Configured: xx=01 Set_Interface 01 0B 00 00 00 00 00 00 Only one interface supported Set_Protocol 21 0B xx 00 00 00 00 00 Boot: xx=00, Report: xx=01 Set_Feature_Device 00 03 01 00 00 00 00 00 Enable remote wakeup Set_Feature_Endpt0 02 03 00 00 xx 00 00 00 Halt. OUT: xx=00, IN: xx=80 Set_Feature_Endpt1 02 03 00 00 81 00 00 00 Halt Clear_Feature_Device 00 01 01 00 00 00 00 00 Disable Remote wakeup Clear_Feature_Endpt0 02 01 00 00 xx 00 00 00 Clear Halt; OUT: xx=00, IN: xx=80 Clear_Feature_Endpt1 02 01 00 00 81 00 00 00 Clear Halt Set_Idle 21 0A 00 rr 00 00 00 00 rr = report rate in multiples of 4 ms Set_Vendor_Test 40 01 00 00 xx yy 00 00 Write yy to address xx Poll_Endpt1 Read buttons, motion, & Z-wheel Note: The last two bytes in a command shown as “nn 00” specify the 16-bit data size in the order of “LowByte HighByte.” For example a two-byte data size would be specified as “02 00.” The sensor will not provide more bytes than the number requested in the command, but it will only supply up to a maximum of 8 bytes at a time. The sensor will re-send the last packet if the transfer is not acknowledged properly. 19 USB COMMAND DETAILS USB_RESET D+/D- low for an extended period USB Spec: A device may reset after seeing an SE0 for more than 18.7 uS, and definitely after 10 mS. Notes: After power up and prior to Reset, the device will not respond to any USB commands. After the device has been given a USB Reset, the device’s address will be reset to zero and the device will be in the Default state. The chip will default to Report protocol and any pending output will be flushed. All registers will be reset to a state that matches power-on-reset with the following exceptions: USB State register will be “Default” instead of “Attached”. USB_SUSPEND Idle state for an extended period USB Spec: A device may suspend after seeing an idle for more than 3 mS, and definitely after 10 mS. Notes: The chip will take a minimum of 5 mS to start Suspend, though will definitely start after 6 mS. The chip may finish the current frame if necessary before stopping the clock. Thus, an additional frame time may be used to reach Suspend mode. USB_RESUME Non-idle state USB Spec: Remote Resume signalling from a device must be between 1 mS and 15 mS. The host is required to send Resume signaling for 20 mS plus 10 mS of resume recovery time in which it does not access any devices. This allows devices enough time to wake back up. Notes: The chip can cause a Resume if Remote Wakeup is enabled and a button has been pressed. Remote resume signalling from the chip will last 11.45 mS to 12.45 mS. Get_Status_Device 80 00 00 00 00 00 02 00 Returns: xx yy xx[0] = Self Powered xx[1] = Remote Wakeup xx[7:2] = 0 yy = 00 (Reserved) Default: Accept (undefined in USB Spec) Addressed: Accept Configured: Accept Notes: Use Set_Feature_Device/Clear_Feature_Device to set/clear remote wakeup. Get_Status_Interface 81 00 00 00 00 00 02 00 Returns: 00 00 Default: Stall (undefined in USB Spec) Addressed: Stall Configured: Accept Notes: Both return bytes are reserved and currently 00. 20 Get_Status_Endpt0 82 00 00 00 xx 00 02 00 82 00 00 00 00 00 02 00 82 00 00 00 80 00 02 00 xx = 00 = Endpt0 OUT xx = 80 = Endpt0 IN Returns: xx yy xx[0] = Halt xx[7:1] = 0 yy = 00 (Reserved) Default: Accept (undefined in USB Spec) Addressed: Accept Configured: Accept Notes: Use Set_Feature_Endpt0/Clear_Feature_Endpt0 to (try to) set/clear Halt bit. According to USB, “It is neither required or recommended that the Halt feature be implemented for the Default Control Pipe.” Since a new SETUP command will clear any Endpt0 halt bit, it is impossible to tell if there really is a halt bit. Get_Status_Endpt1 82 00 00 00 81 00 02 00 Returns: xx yy xx[0] = Halt xx[7:1] = 0 yy = 00 (Reserved) Default: Stall (undefined in USB Spec) Addressed: Stall Configured: Accept Notes: Use Set_Feature_Endpt1/Clear_Feature_Endpt1 to set/clear Halt bit. Get_Configuration 80 08 00 00 00 00 01 00 Returns: xx xx = config value Default: Accept (undefined in USB Spec) – returns 00 Addressed: Accept – returns 00 Configured: Accept – returns 01 Notes: Use Set_Configuration to change. Get_Interface 81 0A 00 00 00 00 01 00 Returns: 00 Default: Stall (undefined in USB Spec) Addressed: Stall Configured: Accept – returns 00 Notes: Command has no alternate interfaces, so only valid value is 00 21 Get_Protocol A1 03 00 00 00 00 01 00 Returns: xx xx = 00 = Boot protocol xx = 01 = Report protocol Default: Accept Addressed: Accept Configured: Accept Notes: Defaults to Report protocol after USB Reset. Use Set_Protocol to change. Get_Desc_Device 80 06 00 01 00 00 nn 00 80 06 00 01 00 00 12 00 Returns: 12 01 00 02 00 00 00 08 vv vv pp pp dd dd mm PP ss 01 Example: vv vv = vendor id pp pp = product id (vendor specified) dd dd = device id (vendor specified) (bcd rev_id byte) mm = iManufacturer PP = iProduct ss = iSerialNumber (00 – no string) Example for Multi-button: 12 01 00 02 00 00 00 08 6D 04 pp pp 00 54 01 02 00 01 // Device Descriptor | 12 // bLength (18 decimal) | 01 // bDescriptorType | 00 // bcdUSB (Release ##.## = 02.00) | 02 | 00 // bDeviceClass | 00 // bDeviceSubClass | 00 // bDeviceProtocol | 08 // bMaxPacketSize0 | 2F // idVendor | 19 // idVendor | 16 // idProduct // based on #buttons & wheel | 09 // idProduct | 00 // bcdDevice (Dev Rel 54.00) | 54 | 00 // iManufacturer | 02 // iProduct | 00 // iSerialNumber | 01 // bNumConfigurations Default: Accept Addressed: Accept Configured: Accept Get_Desc_String will return “stall” if Manufacturer string is queried when iManufacturer = 0x00. 22 Get_Desc_Config 80 06 00 02 00 00 nn 00 80 06 00 02 00 00 22 00 Returns: 09 02 22 00 01 01 00 A0 32 09 04 00 00 01 03 01 02 00 09 21 11 01 00 01 22 rr 00 07 05 81 03 05 00 0A rr = HID Report descriptor length 47 = 12 bit motion reporting Default: Accept Addressed: Accept Configured: Accept Notes: This is the concatenation of 4 descriptors: Configuration Interface HID Endpt Get_Desc_String 80 06 xx 03 00 00 nnl nnh xx= 00 Language String 01 Manufacturer String 02 Product String Command Option: xx= 00 => Language String 01 => Manufacturer String 02 => Product String Nnl nnh = varies with the string length Returns: ss 03 “unicode string” ss = String descriptor length For xx = 00: 04 03 09 04 // Language ID For xx = 01: default: stall Product String (xx=02) Product String Returns USB Optical Mouse 24 03 55 00 53 00 42 00 20 00 4f 00 70 00 74 00 69 00 63 00 61 00 6c 00 20 00 4d 00 6f 00 75 00 73 00 65 00 Synopsys cmd: No Default: Accept Addressed: Accept Configured: Accept Notes: 1. A request for any other string will STALL. 2. Returned string depends on the manufacturer string section via OTP. 23 Get_Desc_HID 81 06 00 21 00 00 09 00 Returns: 09 21 11 01 00 01 22 rr 00 rr = HID Report descriptor length 40 = 12bit reporting Get_Desc_HID_Report 81 06 00 22 00 00 nn 00 Returns: This returns a report descriptor that describes how many buttons and x, y, z data. 12 bit reporting: 05 01 09 02 A1 01 09 01 A1 00 05 09 19 01 29 03 15 00 25 01 75 01 95 03 81 02 75 05 95 01 81 01 05 01 09 30 09 31 16 01 F8 26 FF 07 75 0C 95 02 81 06 09 38 15 81 25 7F 75 08 95 01 81 06 C0 C0 // HID Report | 05 01 // USAGE_PAGE (Generic Desktop) | 09 02 // USAGE (Mouse) | A1 01 // COLLECTION (Application) | 09 01 // USAGE (Pointer) | A1 00 // COLLECTION (Physical) | 05 09 // USAGE_PAGE (Button) | 19 01 // USAGE_MINIMUM (Button 1) | 29 03 // USAGE_MAXIMUM (Button #3) | 15 00 // LOGICAL_MINIMUM (0) | 25 01 // LOGICAL_MAXIMUM (1) | 75 01 // REPORT_SIZE (1) | 95 03 // REPORT_COUNT (3) | 81 02 // INPUT (Data,Var,Abs) | 75 05 // USAGE PAGE | 95 01 // REPORT COUNT(1) | 81 01 // INPUT (CNST,ARR,ABS) | 05 01 // USAGE PAGE (Generic Desktop) | 09 30 // USAGE (X) | 09 31 // USAGE (Y) | 16 01 F8 // LOGICAL MINIMUM (-127) | 26 FF 07 // LOGICAL MAXUMUN (128) | 75 0C // REPORT_SIZE (12) | 95 02 // REPORT_COUNT (2) | 81 06 // INPUT (Data,Var,Rel) | 09 38 // USAGE (Zwheel) | 15 81 // LOGICAL MINIMUM(-127) | 25 7F // LOGICAL MAXIMUM(127) | 75 08 // REPORT_SIZE(8) | 95 01 // REPORT_COUNT(1) | 81 06 // INPUT(Data,Var,Rel) | C0 // END_COLLECTION | C0 // END_COLLECTION Default: Accept Addressed: Accept Configured: Accept Notes: The length of this report is needed in the HID descriptor. 24 Get_HID_Input A1 01 00 01 00 00 nn 00 nn = 06 (12 bit reporting) Returns: bb xx yx yy zz bb = button byte xx = X motion byte yx = XY motion byte yy = Y motion byte zz = Z motion byte Default: Stall Addressed: Stall Configured: Accept Notes: If the device is configured, it will always respond with a report for this command, even if no motion or button changes have occurred. In this case, it would report 00 for motion and simply report the current button state. If a report is pending on endpt1, the data there will be reported and the report on endpt1 cleared. The mouse will only create new button/motion packets when it is in the Configured state USB Data Packet Format Bit 7 6 5 4 3 2 1 0 Byte 1 0 0 0 0 0 B3(MB) B2(RB) B1(LB) Byte 2 X7 X6 X5 X4 X3 X2 X1 X0 Byte 3 Y3 Y2 Y1 Y0 X11 X10 X9 X8 Byte 4 Y11 Y10 Y9 Y8 Y7 X6 X5 X4 Byte 5 Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0 Byte 6 0 0 0 0 0 0 0 0 Get_Idle A1 02 00 00 00 00 01 00 Returns: rr rr = rate in multiples of 4 mS Default: Accept Addressed: Accept Configured: Accept Notes: The third byte of the command is to select the Report ID. There is only one for the mouse – so, using 00 or 01 will work. See also Set_Idle. Get_Vendor_Test C0 01 00 00 xx 00 01 00 ii = ignore xx = address of register to read Returns: rr (depends on register read) Default: Accept Addressed: Accept Configured: Accept Notes: Address range (xx) is datasheet register range 25 Set_Address 00 05 xx 00 00 00 00 00 xx = new device address, from 00 to 7F Default: Accept Addressed: Accept Configured: Accept (undefined in USB Spec) Chip gets new address, but stays in “Configured” mode. Notes: If device is not configured, the device will be given the new address and put in the addressed state (or default if new address = 00). If the device is already configured, the device will be given the new address state and remain configured. Set_Configuration 00 09 xx 00 00 00 00 00 xx = 00 = not configured xx = 01 = configured Default: Accept (undefined in USB Spec) Addressed: Accept Configured: Accept Notes: Invalid config values will cause stall. Chip will stall invalid value in configured mode, and leave device in old (configured) mode. Set_Interface 01 0B 00 00 00 00 00 00 Default: Stall (undefined in USB Spec) Addressed: Stall Configured: Accept Notes: Mouse has only one valid interface (00) and alternate setting (00). Invalid values will cause stall. Chip retains previous (valid) interface state after executing this command in configured mode even if invalid values are given and command was stalled. Set_Protocol 21 0B xx 00 00 00 00 00 xx = 00 = Boot protocol xx = 01 = Report protocol Default: Accept (Not in USB Spec) Addressed: Accept (Not in USB Spec) Configured: Accept Notes: 3 byte data packets will be reported in boot mode. These bytes are button, XX data, and YY data. Set_Feature_Device 00 03 01 00 00 00 00 00 Default: Accept (undefined in USB Spec) Addressed: Accept Configured: Accept Notes: This sets the remote wakeup bit. Set_Feature_Endpt0 02 03 00 00 xx 00 00 00 02 03 00 00 00 00 00 00 02 03 00 00 80 00 00 00 xx = 00 = Endpt0 OUT xx = 80 = Endpt0 IN Default: Stall (undefined in USB Spec) Addressed: Stall Configured: Stall Notes: This (tries to) sets the halt bit. The chip always stalls the status stage for this command. The chip never reports the halt bit set for Endpt0 with the Get_Status_Endpt0 command, as any new SETUP command will clear Endpt0 stall. 26 Set_Feature_Endpt1 02 03 00 00 81 00 00 00 Default: Stall (undefined in USB Spec) Addressed: Stall Configured: Accept Notes: Sets the halt bit for Endpt1. Clear_Feature_Device 00 01 01 00 00 00 00 00 Default: Accept (undefined in USB Spec) Addressed: Accept Configured: Accept Notes: This clears the remote wakeup bit. Clear_Feature_Endpt0 02 01 00 00 xx 00 00 00 02 01 00 00 00 00 00 00 02 01 00 00 80 00 00 00 xx = 00 = Endpt0 OUT xx = 80 = Endpt0 IN Default: Accept (undefined in USB Spec) Addressed: Accept Configured: Accept Notes: The chip does NOT stall like it does for Set_Feature_Endpt0. Clear_Feature_Endpt1 02 01 00 00 81 00 00 00 Default: Stall (undefined in USB Spec) Addressed: Stall Configured: Accept Notes: See Set_Feature_Endpt1. Set_Idle 21 0A 00 rr 00 00 00 00 rr = rate in multiples of 4 mS Default: Accept Addressed: Accept Configured: Accept Notes: The third byte of the command is to select the Report ID. There is only one for the mouse – so, using either 00 or 01 will work. The fourth byte of the command sets the rate in multiples of 4 mS. The initial value for mice will be x00 which means “infinite” – that is packets only come out when there is a change in data. Data will only be allowed to come out when the device is configured. However, the chip will accept the command in Default or Addressed mode and use that value when the device is later configured. Set_Vendor_Test 40 01 00 00 xx yy 00 00 xx = address yy = data Default: Accept Addressed: Accept Configured: Accept Notes: Address range for “xx” should be 0x00 to 0x3F. Addresses above this are reserved for possible future use. See also Get_Vendor_Test. 27 Poll_Endpt1 Returns: Default: Addressed: Configured: Notes: bb xx yx yy zz bb = button byte xx = X motion byte yx = XY motion byte yy = Y motion byte zz = Z motion byte (if Z-Wheel) Ignore request Ignore request Accept (NAK if no data; Send packet if available) See also Get_HID_Input. Endpt will only stall if halt bit is set by Set_Feature_Endpt1. Details of data packet are below. Endpt1 should be polled at least every 10 frames (mS). It is typically polled every 8 frames on Windows machines. For internal testing, Endpt1 can be continuously polled if desired. The chip will not generate any report packets unless in the Configured state. If Endpt1 is currently empty, any motion or button change will be loaded into the Endpt1 buffers. Once the Endpt1 buffers are full, any further motion events will get accumulated. When the Endpt1 buffers are later polled and emptied, the current accumulated X/Y/Z values will be loaded into the Endpt1 buffers. After transferring their data, the accumulation registers are reset so they are ready to start accumulating new motion events. Button information is handled a bit differently. If the Endpt1 buffers are empty, and a button change event occurs, the new button state is put into the Endpt1 buffers. At the same time, the button state that is put in Endpt1 is copied for later use. While Endpt1 is full, changes in button state are essentially ignored. When Endpt1 is emptied, if the current button state is different than that which was last loaded into Endpt1, then the new state will be loaded and a new copy saved. Basically, the button state that is loaded into Endpt1 is always the current button state at that point in time. It should also be noted that there is hardware on the chip to help de-bounce the buttons. Special note on wLength: The wLength paramater in commands specifies the maximum number of bytes a device should send back. The commands listed below are not able to handle a wLength of 0 correctly. Get_Status_Device Get_Status_Interface Get_Status_Endpt0 Get_Status_Endpt1 Get_Configuration Get_Interface This chip will send one byte of data rather than none when wLength = 0 is requested for the above commands. 28 Registers The sensor can be programmed through registers, via the USB port, and configuration and motion data can be read from these registers. The registers will be “disabled” by VDDA5 going low or sending a USB reset command. Address Register Name Register Type Access Reset Value 0x00 PROD_ID Device Read only 0x2b 0x01 REV_ID Device Read only 0x01 0x02 MOUSE_STAT Device Read only Undefined 0x03 DELTA_X_L Device Read only 0x00 0x04 DELTA_Y_L Device Read only 0x00 0x05 DELTA_XY_H Device Read only 0x00 0x06 DZ Device Read only 0x00 0x07 SQUAL Device Read only 0x00 0x08 SHUT_HI Device Read only 0x00 0x09 SHUT_LO Device Read only 0x32 0x0A PIX_MAX Device Read only 0x00 0x0B PIX_ACCUM Device Read only 0x00 0x0C PIX_MIN Device Read only 0x00 0x0D PIX_GRAB Device Read only 0x00 0x40 INV_REV_ID Device Read only 0xFE 0x42 OTP_CLOCK Device Read/Write 0x00 0x51 OTP_CONFIG Device Read/Write 0x00 0x52 OTP_ADDR Device Read/Write 0x00 0x53 OTP_DATA Device Read/Write 0x00 0x54 OTP_CTRL Device Read/Write 0x00 0x56 OTP_RUNSTAT Device Read only Undefined 0x58 OTP_CTRLSTAT Device Read only Undefined 0xDF L1_USE_OTP OTP Read/Write 0x00 0xE0 DPI OTP Read/Write 0x04 0xE2 : 0xE3 PID1 : PID0 OTP Read/Write 0x0916 0xE4 : 0xE5 VID1 : VID0 OTP Read/Write 0x192F 0xE8 OTPLOCK1 OTP Read/Write 0x00 29 PROD_ID Address: 0x00 Access: Read only Reset Value: 0x2b Bit 7 Field PID7 Type: Device 6 5 4 3 2 1 0 PID6 PID5 PID4 PID3 PID2 PID1 PID0 Data Type: 8-bit number with the product identifier. USAGE: The value in this register does not change; it can be used to verify that the sensor communications link is OK. REV_ID Address: 0x01 Access: Read only Reset Value: 0x01 Bit 7 Field RID7 Type: Device 6 5 4 3 2 1 0 RID6 RID5 RID4 RID3 RID2 RID1 RID0 Data Type: 8-bit number with current revision of the IC. USAGE: This register contains the IC revision. It is subject to change when new IC versions are released. BUT_STAT Address: 0x02 Access: Read only Reset Value: Undefined Bit 7 Field Reserved Type: Device 6 5 4 3 2 1 0 Reserved Reserved Reserved Reserved BUT3 BUT2 BUT1 Data Type: Bit field. USAGE: This register is included for test purposes only. For navigation use, use the USB HID defined commands. The button status bits reported are for the debounce signals. 30 Field Name Description BUT3 Reports the status of B3 0 = Open 1 = Button Pressed BUT2 Reports the status of B2 0 = Open 1 = Button Pressed BUT1 Reports the status of B1 0 = Open 1 = Button Pressed DELTA_X_L Address: 0x03 Access: Read Reset Value: 0x00 Bit 7 6 5 4 3 2 1 0 Field X7 X6 X5 X4 X3 X2 X1 X0 Data Type: Bit field. USAGE: The value in this register reflects the last USB delta X (lower 8 bits) data output or data queued for output. This register is included for test purposes only. For navigation use, use the HID defined commands. Data is 2’s complement. Absolute value is determined by the currently set resolution. Register 0x03 must be read before register 0x04 (Delta_Y_L) and 0x05 (Delta_XY_H) DELTA_Y_L Address: 0x04 Access: Read Reset Value: 0x00 Bit 7 6 5 4 3 2 1 0 Field Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 Data Type: Bit field. USAGE: The value in this register reflects the last USB delta Y (lower 8 bits) data output or data queued for output. This register is included for test purposes only. Register 0x03 should be read before register 0x04 (Delta_Y_L) and 0x05 (Delta_XY_H), else Delta_Y_L will return 0. For navigation use, use the HID defined commands. Data is 2’s complement. Absolute value is determined by the currently set resolution. DELTA_XY_H Address: 0x05 Access: Read Reset Value: 0x00 Bit 7 Field X11 6 5 4 3 2 1 0 X10 X9 X8 Y11 Y10 Y9 Y8 Data Type: Bit field. USAGE: The value in this register reflects the last USB delta X and Y (upper 4 bits) data output or data queued for output. This register is included for test purposes only. Register 0x03 should be read before register 0x04 (Delta_Y_L) and 0x05 (Delta_XY_H), else Delta_XY_H will return 0. For navigation use, use the HID defined commands. Data is 2’s complement. Absolute value is determined by the currently set resolution. DZ Address: 0x06 Access: Read Reset Value: 0x00 Bit 7 6 5 4 3 2 1 0 Field Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0 Data Type: Bit field. USAGE: This register contains the Z-wheel count. Range is from -127 to 127 decimal. 31 SQUAL Address: 0x07 Access: Read Reset Value: 0x00 Bit 7 Field SQ7 6 5 4 3 2 1 0 SQ6 SQ5 SQ4 SQ3 SQ2 SQ1 SQ0 Data Type: Eight bit number. USAGE: SQUAL is a measure of the number of features visible by the sensor in the current frame. The maximum value is 128. Since small changes in the current frame can result in changes in SQUAL, slight variations in SQUAL on one surface is expected. SHUT_HI Address: 0x08 Access: Read only Reset Value: 0x00 Bit 7 Field S15 Type: Device 6 5 4 3 2 1 0 S14 S13 S12 S11 S10 S9 S8 SHUT_LO Address: 0x09 Access: Read only Reset Value: 0x64 Type: Device Bit 7 6 5 4 3 2 1 0 Field S7 S6 S5 S4 S3 S2 S1 S0 Data Type: 16-bit number. USAGE: The combination of SHUT_HI and SHUT_LO is a 16-bit number. This is the number of clocks the shutter was open for the last image taken. The unit is in main clock count (nominally 12MHz). To avoid split read issues, read SHUT_Hi first. PIX_MAX Address: 0x0A Access: Read only Reset Value: 0x00 Bit 7 Field 0 Type: Device 6 5 4 3 2 1 0 MX6 MX5 MX4 MX3 MX2 MX1 MX0 Data Type: Eight bit number. USAGE: This is the maximum pixel value from the last image taken. 32 PIX_ACCUM Address: 0x0B Access: Read only Reset Value: 0x00 Bit 7 Field AC7 Type: Device 6 5 4 3 2 1 0 AC6 AC5 AC4 AC3 AC2 AC1 AC0 Data Type: High 8bits of 17-bit unsigned integer. USAGE: This is the accumulated pixel value from the last image taken. For the 19x19 pixels, only the 8 most prominent bits are reported ([15:8]). To get the true average pixel value, divide this register value by 1.41. PIX_MIN Address: 0x0C Access: Read only Reset Value: 0x00 Bit 7 Field 0 Type: Device 6 5 4 3 2 1 0 MN6 MN5 MN4 MN3 MN2 MN1 MN0 Data Type: 8-bit number. USAGE: This is the minimum pixel value from the last image taken. 33 PIX_GRAB Address: 0x0D Access: Read/Write Reset Value: 0x00 Bit 7 Field VALID Type: Device 6 5 4 3 2 1 0 PG6 PG5 PG4 PG3 PG2 PG1 PG0 Data Type: 8-bit number. USAGE: The pixel grabber captures 1 pixel per frame. If there is a valid pixel in the grabber when this is read, the MSB will be set, an internal counter will incremented to captured the next pixel and the grabber will be armed to capture the next pixel. It will take 361 reads to upload the completed image. Any write to this register will reset and arm the grabber to grab pixel 0 on the next image. See pixel array numbering in Figure 20. 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Top Xray View of Mouse LB P O S I T I V E RB 4 5 3 6 2 7 Y 1 8 POSITIVE X Figure 20. Pixel Map. Sensor looking at the navigation surface through the lens from top of mouse. INV_REV_ID Address: 0x40 Access: Read Reset Value: 0xfe Bit 7 Field RRID7 6 5 4 3 2 1 0 RRID6 RRID5 RRID4 RRID3 RRID2 RRID1 RRID0 Data Type: Eight bit number. USAGE: Contains the inverse of the revision ID which is located in register 0x01. 34 OTP_CONFIG Address: 0x51 Access: Read/Write Reset Value: 0x00 Bit 7 Field Reserved Type: Device 6 5 4 3 2 1 0 Reserved Reserved Reserved Reserved Reserved Reserved OTP_EN Data Type: Bit field. USAGE: OTP commands enable/disable. Refer to OTP programming section. Field Name Description OTP_EN OTP commands 1 = Enabled 0 = Disabled OTP_ADDR Address: 0x52 Access: Read/Write Reset Value: 0x00 Bit 7 Field OTP_ ADDR7 Type: Device 6 5 4 3 2 1 0 OTP_ ADDR6 OTP_ ADDR5 OTP_ ADDR4 OTP_ ADDR3 OTP_ ADDR2 OTP_ ADDR1 OTP_ ADDR0 Data Type: 8-bit number. USAGE: This register is the container of OTP address in OTP read/write command. Refer to OTP programming section. OTP_DATA Address: 0x53 Access: Read/Write Reset Value: 0x00 Bit 7 Field OTP_ DATA7 Type: Device 6 5 4 3 2 1 0 OTP_ DATA6 OTP_ DATA5 OTP_ DATA4 OTP_ DATA3 OTP_ DATA2 OTP_ DATA1 OTP_ DATA0 Data Type: 8-bit number. USAGE: This register is the container of OTP data value in OTP read/write command. Refer to OTP programming section. 35 OTP_CRTL Address: 0x54 Access: Read/Write Reset Value: 0x00 Bit 7 Field Reserved Type: Device 6 5 4 3 2 1 0 Reserved Reserved Reserved LOCK_L1 Reserved RD WR Data Type: Bit field. USAGE: This register controls the read, write and lock commands of OTP. The commands are auto clear for status check. Refer to OTP programming section. Field Name Description WR Enable write command to OTP 1 = Write to OTP 0 = Write command is completed RD Enable read command to OTP 1 = Read from OTP 0 = Data is ready to be read from OTP_DATA register LOCK_L1 Enable OTP lock command 1 = Lock OTP space 0 = Lock command is completed OTP_RUNSTAT Address: 0x56 Access: Read only Reset Value: Undefined Bit 7 Field Reserved Type: Device 6 5 4 3 2 1 0 Reserved Reserved Reserved Reserved L1_ CHECKED L1_ LOCKED L1_USED Data Type: Bit field. USAGE: This register shows the OTP run status. Refer to OTP programming section. 36 Field Name Description L1_USED OTP space status 1 = Used 0 = Unused L1_LOCKED OTP space locking status 1 = Locked 0 = Open L1_CHECKED OTP status check 1 = Checked 0 = Unchecked OTP_CTRLSTAT Address: 0x58 Access: Read only Reset Value: Undefined Bit 7 Field Reserved Type: Device 6 5 4 3 2 1 0 Reserved L1_CRC_ OK L1_LOCK_ OK DEVICE_ DONE DEVICE_ RDY WR_ DENIED WR_OK Data Type: Bit field. USAGE: This register shows the OTP control status. Refer to OTP programming section. Field Name Description WR_OK OTP write status 1 = OK 0 = Failed WR_DENIED OTP write access status 1 = Denied 0 = OK L1_LOCK_OK OTP lock status 1 = OK 0 = Failed L1_CRC_OK CRC test status 1 = OK 0 = Failed L1_USE_OTP Address: 0xDF Access: Read/Write Reset Value: 0x00 Bit 7 Field L1_USE_ OTP7 Type: OTP 6 5 4 3 2 1 0 L1_USE_ OTP6 L1_USE_ OTP5 L1_USE_ OTP4 L1_USE_ OTP3 L1_USE_ OTP2 L1_USE_ OTP1 L1_USE_ OTP0 Data Type: 8-bit field. USAGE: Bypass OTP configuration if all bits are zero. MUST write non-zero value to this register to enable OTP operation. Once enabled, all OTP registers must be written as the default values are zero value. 37 DPI Address: 0xE0 Access: Read/Write Reset Value: 0x54 Bit 7 Field Reserved Type: OTP 6 5 4 3 2 1 0 SwapXY INV_X INV_Y Reserved DPI2 DPI1 DPI0 Data Type: Bit field. USAGE: These registers are used to customize the device’s DPI. Field Name Description SwapXY To swap x and y 0 = no swap 1 = swap INV_X To invert x direction 0 = not inverted 1 = inverted INV_Y To invert y direction 0 = not inverted 1 = inverted DPI Device status 010 = 500 dpi 011 = 750 dpi 100 = 1000 dpi (default) 101 = 1250 dpi Note: Sensor orientation setting by changing bit 6,5 and 4. The SwapXY operation is always performed before INV_X and INV_Y inversion operations. 38 90° 180° 270° 101 000 110 011 A2700 XYYWWZE +Y +Y +X +X +Y A2700 XYYWWZE Motion Reporting Direction A2700 XYYWWZE Bit[6:4] 0° +X +Y +X A2700 XYYWWZE Rotation PID0 Address: 0xE2 Access: Read/Write Reset Value: 0x16 Bit 7 Field PID7 Type: OTP 6 5 4 3 2 1 0 PID6 PID5 PID4 PID3 PID2 PID1 PID0 PID1 Address: 0xE3 Access: Read/Write Reset Value: 0x09 Bit 7 Field PID15 Type: OTP 6 5 4 3 2 1 0 PID14 PID13 PID12 PID11 PID10 PID9 PID8 Data Type: 16-Bit number. USAGE: These registers are used to customize device USB PID. Default is Avago’s PID = 0x0916. VID0 Address: 0xE4 Access: Read/Write Reset Value: 0x2F Bit 7 Field VID7 Type: OTP 6 5 4 3 2 1 0 VID6 VID5 VID4 VID3 VID2 VID1 VID0 VID1 Address: 0xE5 Access: Read/Write Reset Value: 0x19 Bit 7 Field VID15 Type: OTP 6 5 4 3 2 1 0 VID14 VID13 VID12 VID11 VID10 VID9 VID8 Data Type: 16-Bit number. USAGE: These registers are used to customize device VID. Default is Avago’s VID = 0x192F. OTPLOCK1 Address: 0xE8 Access: Read/Write Reset Value: 0x00 Bit 7 Field OTPLOCK17 Type: OTP 6 5 4 3 2 1 0 OTPLOCK16 OTPLOCK15 OTPLOCK14 OTPLOCK13 OTPLOCK12 OTPLOCK11 OTPLOCK10 Data Type: 8-bit field. USAGE: Must write 0xFF in this register to lock the OTP configuration. For product information and a complete list of distributors, please go to our web site: www.avagotech.com Avago, Avago Technologies, and the A logo are trademarks of Avago Technologies in the United States and other countries. Data subject to change. Copyright © 2005-2012 Avago Technologies. All rights reserved. AV02-2723EN - April 17, 2012