background image

8

USB Firmware Description

A function call map for USB operation is shown in Figure 
6. The following are descriptions of the functions in 
SPCP825A _A6000.asm.

IO_initial

 – This function is use to set the Sunplus micro-

controller as input or output.

Port A(PA) is set as input while both Port B(PB) and Port 
C(PC) are set as output. This function also includes setting 
and enabling of pull-up resistor for left, right and middle 
keys.  

clear_ram

 – This function clears the internal ram of the 

microcontroller. 

Usb_initial

 – This function is used to enable the USB 

mode. This is done by enabling the watchdog and LVR and 
the low speed is selected. The USB reset event interrupt as 
well as the set up event interrupt are enabled. 

DetectUsbReset 

– This routine initializes USB interface 

service and SPI ports.  Then, the normal_mode variable is 
compared, if normal_mode is equal to ‘0’ then this routine 
will invoke the calibration_operation routine to enter cali-
bration loop.  If normal_mode variable fl ag is equal to ‘1’ 
then Read_LP_CFG_REG is called to load the calibrated 
LP_CFG0 and LP_CFG1 register value.  Subsequently, 
the ADNS-6000 sensor is reset and AdjustLaser routine 
is invoked to write the LP_CFG0 and LP_CFG1 value to 
the sensor register.  Then, SetShuttherMode routine is 
called to enable VCSEL in shutter mode and laser output 
is enabled.

Default_state

 – This function is used to set the default 

service routing. 

SPI_init

 – This function involves the initialization of SPI.

Read_LP_CFG_REG

 – This function reads the calibrated 

laser power confi guration register from EEPROM.

sample_mouse

 – This routine returns any updates in 

the X, Y and Z-wheel motion information. The motion of 
the Z-wheel is detected using the traditional method by 
decoding the quadrature signal generated by the pho-
totransistors. The X and Y directions of the movement 
are obtained by calling the ReadDeltaX and ReadDeltaY 
routines. The X, Y, and Z-wheel movement is stored in the 
[xCount], [yCount], and [zCount] variables which will be 
sent to the host in the main routine.

ReadDeltaX

 – Reads the ADNS-6000 Delta_X register for 

the X movement. Calls the ReadSPI routine to enable the 
SPI interface and perform reading operations through the 
two wire serial interface. Any new X motion information is 
added to the [xCount] variable.

ReadDeltaY

 – Reads the ADNS-6000 Delta_Y register for 

the Y movement. Calls the ReadSPI routine to enable the 
SPI interface and perform reading operations through the 
two wire serial interface. Any new Y motion information is 
added to the [yCount] variable.

DetectKeyLoop

 – This function is used to detect the left, 

right and middle buttons changes.

check_mouse_data

 –This function is used to determine 

whether the buttons, X, Y or Z-wheel data need to be sent 
to the host. 

reset_adns6000

 – This function is responsible for 

resetting the hardware, loading the SROM (Shadow ROM) 
fi rmware into the ADNS-6000 optical sensor. The ID from 
the device and program are compared. If the ID is not the 
same, then the program is trapped in the dead loop, i.e. 
the device is unusable.  

Report_mouse_data

 – This function is used to send 

buttons, X, Y and Z-wheel data to the computer.

judge_mode

 – This function is used to check for normal 

mouse or calibration mode. 

detect_key_change

 – This function is used to detect left, 

right or middle button changes. 

ReadMotionReg

 – Reads the ADNS-6000 Motion 

register. The data returned from this register will be used 
to determine if any motion has occurred or if any fault 
condition exists.

AdjustLaser

 – the AdjustLaser is used to read the value 

from the EEPROM and then store them into the ADNS-
6000 sensor. The mouse will do calibration when the left 
button is pressed when the mouse is fi rst plugged into the 
USB port. However if the mouse left button is not pressed, 
the value of calibration is already stored in the EEPROM 
i.e. there is no need of calibration. 

Calibration operation

 - The calibration mode is diff erent 

from the AdjustLaser as the calibration mode happens 
when the left button is pressed whereas the AdjustLa-
ser is used to read the EEPROM values and put them into 
the ADNS-6000 sensor. This means in the Normal mouse 
mode, the AdjustLaser is done even in the normal mouse 
mode. Actually when the mouse enters the calibration 
mode, it cannot come back to the normal mouse mode 
without unplugging the USB plug.

Summary of Contents for ADNK-6003-SP01

Page 1: ...tion velocities up to 20 inches per second and accelerations up to 8g The ADNS 6000 sensor along with the ADNS 6120 lens ADNS 6230 001 clip and ADNV 6340 laser diode form a complete and compact laser...

Page 2: ...T high When the SPI is enabled thru PB0 NCS the PB2 SCLK PB1 MISO and PB3 MOSI GPIO pins serve special functions to enable the SPI interface to talk with external hardware During normal operation the...

Page 3: ...y reading the Motion_Burst register The ADNS 6000 will respond with the contents of the Motion Delta_X Delta_Y SQUAL Shutter_Upper Shutter_Lower and Maximum_Pixel registers in that order SROM download...

Page 4: ...buttons and USB cable See Figure 4 Unscrewing the one screw located at the base of the unit can open the ADNK 6003 SP01 unit Lifting and pulling the PCB out of the base plate can further disassemble t...

Page 5: ...ns reference plane to surface While reassembling the components please make sure that the Z height Distance from lens reference plane to surface is valid Refer to Figure 5 Sensor Sensor PCB 2 40 0 094...

Page 6: ...esign Documentation Gerber File The Gerber File presents detailed schematics used in ADNK 6003 SP01 in PCB layout form See Appendix C for more details Overall circuit A schematic of the overall circui...

Page 7: ...changed to the value as supplied by the USB IF 2 idProduct should be assigned for specific product 3 MaxPower value should be changed as per specific circuit s current draw 4 Post Enumeration Operati...

Page 8: ...000 Delta_X register for the X movement Calls the ReadSPI routine to enable the SPI interface and perform reading operations through the two wire serial interface Any new X motion information is added...

Page 9: ...routine is entered whenever a SET ADDRESS request has been received The device address change cannot actually take place until after the status stage of this no data control transaction so the addres...

Page 10: ...he following string ADNS 6000 Mouse Configuration String A request for the configuration string will return the following string HID Compliant Mouse Endpoint 1 String A request for the endpoint string...

Page 11: ...A Schematic Diagram of the Overall Circuit Figure A1 Circuit level block diagram for ADNK 6003 SP01 designer s kit optical mouse using the Avago Technologies ADNS 6000 optical mouse sensor and Sunplu...

Page 12: ...1 0 125W 0805 2 Chip RES 12 7K 1 0 125W 0805 1 Chip RES 2K7 1 0 125W 0805 1 Chip RES 20K 1 0 125W 0805 4 Chip RES 100K 1 0 125W 0805 1 Chip RES 240R 1 0 125W 0805 1 Photo Transistor DIP 1 2N3906 TO 92...

Page 13: ...13 Appendix C PCB Layout Figure C1 PCB Schematic Bottom Layer Figure C2 PCB Schematic Top Layer...

Page 14: ...14 Figure C3 PCB Schematic Top Overlay Figure C4 PCB Schematic Bottom Overlay...

Page 15: ...e 0 0 0 0 0 0 Middle Right Left Byte 1 X X X X X X X X Byte 2 Y Y Y Y Y Y Y Y The following is the USB report protocol format and allows the additional wheel movement information in the fourth byte Wh...

Page 16: ...ADNS 6130 001 Trim Lens Data Sheet d ADNS 6230 001 VCSEL Assembly Clip Data Sheet e ADNV 6340 VCSEL Data Sheet f Avago Technologies ADNS 6000 ADNS 6010 ADNS 6090 and ADNS 7010 Laser Mouse Eye Safety C...

Reviews: