67B Hall Effect Joystick I2C User Manual

67B Hall Effect Joystick I2C User Manual
rev. 1.4
67B Hall Effect Joystick
I2C User Manual
1 Introduction
The 67B joystick is a proportional output joystick which provides an X,Y coordinate (0-50) proportional to the
joystick location. The X,Y coordinates are read from the joystick via an I2C bus. Features include:
•
•
•
•
•
Proportional Joystick
I2C Interface (other interfaces available)
Low Operating Current (3 mA, [email protected] VDD = 3.3V)
Low Power “Sleep Mode” (110 µA, max. @ VDD = 3.3V)
Push button and 3 Position Momentary (Rotary) Switch options available.
2 Hardware Interface
2.1
Connector - Two options are available – header or ribbon cable with connector.
A. Ribbon cable with Molex 14-56-2084 connector (Mates with Molex 70543 Series headers or
standard 0.100” pin headers with 0.025” sq. pins).
B. Header (1x8) – 0.10” centers with 0.025” sq. pins.
Pin #
1
2
3
4
5
6
7
8
Signal
VDD
SDA
I/O
I/O
INTn
PBn
A1
SCL
VSS
Out
Out
In
In
-
Description
Power Supply
I2C Data Line
Spare
Interrupt Out (Open Drain. Active Low)
Pushbutton Out (Open Drain – Active Low) if installed
A1 (LSB) of 7 bit I2C address
I2C Clock Line
Ground
Table 1- 67B Connector Signals
The 67B is an I2C (Slave) with 7 bit I2C address of 42h (A1n floating) or 40h (A1n tied to Gnd).
I2C speed: up to 400 KHz.
External pull-up resistors are required for I2C signals (SDA & SCL- See Sec 2.3 for recommended pull-up
resistors for I2C signals) , INTn and PBn (Recommended value 2K-10K). (See Figure 1)
INTn – Interrupt Out (Active Low) - Goes low only when a different X, Y value is available, or for units with a
switch option, if a switch position has changed. Reading the Y value causes INTn to go high (inactive). For
most efficient use of the I2C bus and processor resources it is recommended that the INTn signal be used to
trigger reading of the X, Y value from the joystick. If INTn is not used, X, Y values should be read
continuously at a rate of 50 samples/sec. An external pull-up resistor in the range of 2K - 10K (see Figure 1)
is required for INTn.
1
67B Hall Effect Joystick I2C User Manual
rev. 1.4
VDD
67B JOYSTICK
10K* Rp* Rp* 10K*
Hall
Effect
Sensor
VDD
I²C
Slave
PB
µC
(OPTION)
3 POS
MOM SW
(OPTION)
HOST CPU
SDA
INTn
PBn
A1
SCL
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
SDA
SCL
I²C
Master
INTn
PBn
A1
µC
SELECT I2C ADDRESS
JUMPER OUT = 42H
JUMPER IN = 40H
CCW
CW
* PULL-UP RESISTORS REQUIRED
Figure 1 - 67B Electrical Connection Diagram
2.2 Cable/PCB Trace Length
Cable/PCB Trace Length: Varies with I2C frequency. The I2C Spec. specifies a maximum capacitance per
signal line (SCL or SDA) of 400 pF. The bus capacitance is the total of wire, PCB traces and pins. The longer
the cable/PCB trace length the higher the bus capacitance and thus, the lower the operating frequency that
can be used.
2.3
Pull-up Resistors
2.3.1 I2C Signals (SCL, SDA) Pull-up Resistors
The two I2C signals (SDA & SCL) must be pulled up to the power supply voltage at the Host CPU. The pullup resistor value depends on the bus capacitance and SCL frequency. See Table 2 below for recommended
pull-up resistor values vs. SCL frequency and bus capacitance:
SCL Frequency
Standard Mode (100 KHz)
Fast Mode (400 KHz)
Rp recommended
Bus Load Capacitance
100 pF
200 pF
300 pF
400 pF
6.49KΩ
3.48KΩ
2.49KΩ
2KΩ
2.26KΩ
1.4KΩ
1.1KΩ
Table 2 - Recommended Pull-up Resistors for SCL, SDA vs. Frequency & Bus Capacitance
To determine if a proper pull-up value is being check the low and high voltage levels for SCL and SDA during
I2C bus activity. The signal levels should meet the following requirements with at least a 0.1V margin:
2
67B Hall Effect Joystick I2C User Manual
rev. 1.4
VL, MAX < 0.3 VDD
VH, MIN > 0.7 VDD
For more on choosing the I2C pull-up resistors see: Sec. 7.1 in I2C-bus specification and user manual, Rev.
03 (NXP UM10204).
2.3.2 INTn and Pushbutton (PBn) Pull-up Resistor
The pull-up for the INTn and Pushbutton (if installed) signals should be between 2K-10KΩ.
3 I2C Interface
The 67B joystick communicates over an I²C bus (2-wire bi-directional serial interface). The host CPU
(master) must initiate the data transfers, as the 67B is a slave device.
I²C address - The I²C address consists of 7 bits (D7-D1) and a bit (D0) indicating whether it is a Read (1) or
Write (0) cycle. The 67B is shipped from the factory with the 7-bit device I²C address of 42H (‘0100 001X’)
when A1 (pin 6) is left floating (not connected). The I²C address may be changed to 40H (‘0100 000X) by
pulling A1n to Gnd. If A1n is changed after power-up then a reset command needs to be sent to the joystick
to make active the new value (A1n is only read by the joystick after a power-up or reset command).
Changing the I2C address would be necessary if two 67B joysticks are connected to the same I2C bus or if
another component connected to the I2C bus shared the same I2C address. To request a custom I²C address
contact Grayhill.
.
SDA is a bi-directional signal and is used to read and write the serial data. The SCL signal is the clock
generated by the host CPU, to synchronize the SDA data in read and write mode. The maximum I²C clock
frequency is 400 KHz with data triggered on the rising edge of SCL.
Clock Stretching - Clock stretching occurs when a device on the bus holds the SCL line low effectively
pausing communication. The joystick (slave) may stretch the clock to allow more time to load data to be read
by the master device. It is important that the I2C Master interfacing with the 67B implement clock stretching
on a byte level for reliable operation with the joystick. See Sec 5.1.1 for more on clock stretching.
3.1
3.1.1
I2C Registers
X Register
Bit 7
X(7) sign
R
Bit 6
X(6) MSB
R
Bit 5
X(5)
R
Bit 4
X(4)
R
Bit 3
X(3)
R
Bit 2
X(2)
R
Bit 1
X(1)
R
Bit 0
X(0) LSB
R
Reset value: 0000 0000
• Bit7-0: X coordinate
X coordinate, 2’s complement format (signed –50 to +50).
Note: After every complete I2C transaction the register pointer in the joystick is set to point at the X register
so that X register value can be read without writing to register pointer (See Sec 3.2).
IMPORTANT: In order to keep X & Y values paired together or “in synch.”, X register data should be read in
an I2C sequence which reads both the X & Y registers as described in Sec. 3.2.1 and Figure 2.
3.1.2
Y Register
Bit 7
Y(7) sign
R
Bit 6
Y(6) MSB
R
Bit 5
Y(5)
R
Bit 4
Y(4)
R
Bit 3
Y(3)
R
Reset value: 0000 0000
3
Bit 2
Y(2)
R
Bit 1
Y(1)
R
Bit 0
Y(0) LSB
R
67B Hall Effect Joystick I2C User Manual
rev. 1.4
• Bit7-0: Y coordinate
Y coordinate, 2’s complement format (signed –50 to +50)
Reading the Y register will reset INTn output to Hi-Z.
The Y register should be read in a single I2C sequence that reads the X Register first immediately followed
by the Y register as described in Sec. 3.2.1 and Figure 2.
3.1.3
Error/Switch Register
Bit 7
Bit 6
PB
CCW
R
R
X = Do Not Care
Reset value: 0000 000X
Bit 5
CW
R
Bit 4
Com
R
Bit 3
WD
R
Bit 2
BOR
R
Bit 1
Ovr
R
Bit 0
Parity
R
When the Ext. Host (I2C Master) executes a 3 byte I2C read sequence the 3rd byte read is the Error/Switch
byte. This byte contains bits which indicate joystick errors and bits which indicate the switch positions (if
installed).
D0 – Parity – The joystick generates a parity bit for the 3 data bytes of the I2C message. Odd parity is used.
(Read Only)
D1 – Overrun (Ovr) – When this bit is set (1) indicates that X or Y data has changed before it was read. This
error indicates that the Ext. Host is not reading the data at a fast enough rate (up to 50 samples/sec.).
Reading the Error/Switch byte clears this bit. (Read Only).
D2 – (BOR) Brown-Out Reset indicator (1 = Brown Out occurred) Indicates that supply voltage dropped to
below brownout threshold voltage (2.7V) and caused a joystick reset . Cleared by reset of joystick. (Read
Only).
D3 - (WD) Watchdog Timer time out indicator (1 = time out occurred). Joystick internal program malfunction
caused a reset. Cleared by reset of joystick. (Read Only).
D4 – (Com) Internal Communication Error - When set (1) indicates that an internal comm. error occurred
when the joystick microcontroller tried to read or write to the Hall Sensor. Cleared by reset of joystick. (Read
Only).
D5 – Clockwise (CW) (if option installed) – The internal microcontroller reads the 3 Position Momentary
Switch and debounces the signal. When active (1) indicates the switch is in the Clockwise (CW) position. (if
option not installed – set to 0). (Read Only).
D6 – Counter-Clockwise (CCW) (if option installed) – The internal microcontroller reads the 3 Position
Momentary Switch and debounces the signal. When active (1) indicates the switch is in the Counter
Clockwise (CCW) position. (if option not installed – set to 0). (Read Only).
D7 – Pushbutton (PB) (if option installed) – The internal microcontroller reads the pushbutton and debounces
the signal. When active (1) indicates that the pushbutton has been pressed (if option not installed – set to 0).
(Read Only).
3.1.4
Bit 7
X
Control Register (76h)
Bit 6
X
Bit 5
X
Bit 4
X
Bit 3
X
Bit 2
X
Bit 1
Reset
W
Bit 0
X
X = Do Not Care
Reset value: 1001 1010 (9Ah)
Writing to this register with Reset (Bit 1) high resets joystick and sets all registers to default values. The
Reset bit is set low by the joystick after completing the reset sequence. Note: there is a start-up time (TP,W)
which must be observed after resetting the joystick.
4
67B Hall Effect Joystick I2C User Manual
rev. 1.4
I2C Read and Write Cycles
3.2
Read X, Y and Error/Switch Bytes – When INTn goes low there are new X & Y values available. To
read the three bytes the external I2C Master should perform a read sequence of 3 bytes without
providing a register address (Joystick always sends X register value followed by Y register value and
then the Error/Switch byte for any 3 byte read without a register address). INTn will go high (inactive)
at the beginning of the read of the Y value (see Figure 2).
3.2.1
I2C Start Command
41h or 43h (Joystick I2C Address with D0 set for read)
X Byte (Data from Joystick)
Y Byte (Data from Joystick)
Error/Switch Byte (Data from Joystick)
I2C Stop Command
Important Note: If a new X & Y value is available before the previous values are read the new values will
over-write the old (with the loss of the oldest values). However, in order to keep the X & Y values paired
together or “in sync”, it is important that the user read the X, Y and Error/Switch bytes in the a single I2C
sequence as shown in Figure 2. This is also the fastest and most efficient use of the I2C bus.
SCL
SDA
MSB
Start
I2C Address (42h)
R/W ACK
MSB
X Reg, Value
ACK
Y Reg, Value
ACK
PB CCW CW Com WD BOR Ovr Parity ACK
Error/Switch Byte
INTn
Figure 2 – Read X, Y & Error/Switch Bytes over I2C Bus
3.2.2
Reset Joystick – To reset the joystick the I2C Master should perform a write sequence of 1 byte and
must provide the register address for Control Reg. :
I2C Start Command
40h or 42h (Joystick I2C Address with D0 low for write)
76h (Register Address for Control Reg.)
9Ah (Data)
I2C Stop Command
Note: after sending the reset command the I2C Master must wait 300 ms before attempting to access
the 67B. At the end of the Nominal Startup Time (TP,W ) the 67B generates the first XY pair of values
and sets INTn low. Thereafter INTn goes low only if the X or Y value changes.
SCL
SDA
Start
I2C Address
R/W ACK
Control Reg, Value = 76h
ACK
Data = 9Ah
Figure 3 – Send Reset Command over I2C Bus
5
ACK
Stop
Stop
67B Hall Effect Joystick I2C User Manual
rev. 1.4
4 Power Modes & Sleep Threshold
4.1
Power-Up Sequence – During a power-up once the power supply voltage reaches 3.0V the user must
wait the Nominal Startup Time (TP,W ) before communicating with the joystick over the I2C bus (also
applies to a reset joystick command). At the end of the Nominal Wakeup Time the 67B generates the
first pair of XY values and sets INTn low. Thereafter INTn goes low only if the X or Y value changes or
for cases with a switch option, if a switch position has changed.
3 .3 V
3 .0 V
V DD
IN T n
T
P ,W
Figure 4 – Power-Up Sequence
4.2
Low Power (Sleep) Mode: When the joystick position is within a circle defined as the Sleep Zone for
ten consecutive measurements the joystick goes to the Low Power mode where power consumption is
significantly lower. The Sleep Zone typically extends to a joystick shaft angle of 5° from the center
(See Figure 6). The last XY value output before entering the Low Power mode is (0,0). As long as the
joystick remains within the Sleep Zone circle, it will remain in the Low Power Mode and INTn will stay
in the float state. Low Power (Sleep Mode) current may be higher if supply voltage drops below 2.0V.
4.3
Full Power Mode: When the joystick position is moved outside of the Low Power (Sleep) zone the
joystick switches to the Full Power Mode where an internal measurement occurs every 20 ms. If either
the X or Y value changes from the last values measured, the INTn output (Pin 5) is set low signaling
new X & Y values are ready to be read. INTn is cleared (Hi-Z) while the Y value is read. Power
consumption is higher in this mode.
6
67B Hall Effect Joystick I2C User Manual
rev. 1.4
+Y
(0,50)
(35,35)
45°
(-50,0)
+X
(50,0)
MAX JOYSTICK
OUTPUT
(0,-50)
- LOW POWER (SLEEP ZONE) - ALL VALUES (0,0)
Figure 5 - Sleep Zone & Max Output Circle
7
67B Hall Effect Joystick I2C User Manual
rev. 1.4
Figure 6 – Joystick Output Along X or Y Axis vs. Shaft Angle (Typical)
8
67B Hall Effect Joystick I2C User Manual
rev. 1.4
5 SPECIFICATIONS
NOTICE: Stresses above those listed under “Absolute Maximum Ratings may cause permanent damage to the device. This is a stress
rating only and functional operation of the device above those listed in the operation listings of this specification is not implied. Exposure
above maximum ratings conditions for extended periods may affect device reliability.
Table 3- Absolute Maximum Ratings (non operating)
Parameter
DC Supply Voltage
Sym.
VDD
Min
-0.3
Max
4.0
Unit
V
VIN
-0.3
Tstrg
-55
VDD + 0.3
25
+100
V
mA
°C
Voltage on all other pins with respect to Vss
Max current sunk by any I/O pin
Storage temperature
Note
Table 4 - Operating Conditions
Parameter
Sym.
Min
Typ
Max
Unit
DC Supply Voltage
VDD
3.0
3.3
3.6
V
High level input voltage
VIH
Low level input voltage
VIL
Leakage Current
IIL
Low level output voltage
Current Consumption, Full Power
mode (Average current VDD pin)
Current Consumption, Low Power
(sleep) mode (Average current VDD
pin)
Current Consumption (with Mom.
Turn Option) (Average current VDD
pin)
0.7 VDD
V
SCL, SDA
0.25 VDD
+ 0.8
V
A1
0.3 VDD
V
SCL, SDA
0.15 VDD
V
A1n
±125
nA
0.6
V
-
±5
VOL
2.5
3.0
mA
VDD = 3.30V, Note 1
IDD2
50
110
µA
VDD = 3.30V. Notes 1, 3
IDD3
4.0
6.0
mA
VDD = 3.30V. Notes 1, 5.
Operating temperature range
Sample
s/sec
50
Response Time (Full Power Mode)
Response Time (Low Power Mode)
Output with Joystick Released
(Center)
Low Power (Sleep) Threshold
Nominal Startup Time
VSS ≤ VPIN ≤ VDD, Pin at
high impedance at 85°C
INTn , SDA
IOL = 6mA, VDD = 3.30V
IDD1
Measurement Frequency, (Full
Power mode)
Output with Max. Joystick Deflection
Note
XMAX or
YMAX
XMIN, or
YMIN
20
80
ms
ms
±49
±50
±50
Units
-
0
0
Units
300
Deg.
ms
+85
°C
5
TP,W
Tamb
-40
Note 2
Note 2
Notes 4, 6
Note 1: Measured with SDA, SCL, INTn and PBn terminated with pull-up resistors (See Sec 2.3). Does not include
current in external pull-up resistors.
Note 2: Response time is the time from joystick movement to when new X,Y position data is available (INTn goes low).
Note 3: For VDD < 2.0V current will exceed 110 µA.
Note 4: Maximum values along X or Y axis in positive and negative directions.
Note 5: Full Power Mode Only (No sleep mode with 3 Pos. Mom. Sw Option).
9
67B Hall Effect Joystick I2C User Manual
rev. 1.4
Note 6: Positive value is for movement in the positive X or Y direction. Negative value is for movement in the negative X
or Y direction. Moving the joystick toward the cable will result in positive Y values.
5.1
I2C Bus Timing Requirements
THIGH
TF
TR
TLOW
SCL
THD:DAT
THD:STO
TSU:DAT
THD:STA
TSU:STO
SDA in
TBUF
TAA
TAA
SDA out
Figure 7 - I2C Bus Data Requirements
Table 5 - I2C Bus Data Requirements
Parameter
100 kHz mode
Start condition
Hold time
400 kHz mode
Stop condition
Setup time
400 kHz mode
Stop condition
Hold time
400 kHz mode
Clock high time
Clock low time
100 kHz mode
100 kHz mode
100 kHz mode
400 kHz mode
100 kHz mode
400 kHz mode
Sym.
T HD:STA
T SU:STO
T HD:STO
T HIGH
T LOW
Min
Typ
Max
4000
—
—
600
—
—
4700
—
—
600
—
—
4000
—
—
600
—
—
4.0
—
—
0.6
—
—
4.7
—
—
1.3
—
—
Unit
Note
ns
After this period, the first clock
pulse is generated
ns
ns
µs
µs
SDA and SCL rise
time
—
—
1000
400 kHz mode
TR
20 + 0.1CB
—
300
ns
CB is specified to be from
10-400 pF
SDA and SCL fall
time
100 kHz mode
400 kHz mode
TF
—
20 + 0.1CB
—
—
250
250
ns
CB is specified to be from
10-400 pF
Data input hold time
Data input setup
time
Output valid from
clock
Bus free time
SCL delay from
Clock Stretching
Bus capacitive loading
100 kHz mode
100 kHz mode
400 kHz mode
100 kHz mode
400 kHz mode
100 kHz mode
400 kHz mode
100 kHz mode
400 kHz mode
Full Power
Mode
Low Power
Mode
T HD:DAT
T SU:DAT
T AA
T BUF
0
—
—
ns
0
—
0.9
µs
250
—
—
ns
100
—
—
ns
—
—
3.5
µs
—
—
—
ns
4.7
—
—
1.3
—
—
—
20
—
—
45
—
—
—
400
T DEL
CB
10
(Note 2)
(Note 1)
µs
Time the bus must be free
before a new transmission
can start
µs
See Figure 8
pF
67B Hall Effect Joystick I2C User Manual
rev. 1.4
Note 1: As a transmitter, the device must provide this internal minimum delay time to bridge the undefined region (min.
300 ns) of the falling edge of SCL to avoid unintended generation of Start or Stop conditions.
Note 2: A Fast mode (400 kHz) I2C bus device can be used in a Standard mode (100 kHz) I2C bus system, but the
requirement TSU:DAT ≥ 250 ns must then be met. This will automatically be the case if the device does not stretch the low
period of the SCL signal. If such a device does stretch the low period of the SCL signal, it must output the next data bit to
the SDA line TR max. + TSU:DAT = 1000 + 250 = 1250 ns (according to the Standard mode I2C bus specification), before
the SCL line is released.
5.1.1 Clock Stretching
As mentioned previously the I2C Master that interfaces with the joystick must be capable of clock stretching
on a byte level. The joystick is able to transmit a byte of data at a fast rate, but may need more time to
prepare the next byte to be transmitted. The joystick (slave) holds the SCL line LOW after transmission and
acknowledgment of a byte to force the master into a wait state until the slave is ready for the next byte
transfer in a type of handshake procedure (See Figure 8 below). See I2C Spec. UM10204, Rev. 3, Sec. 3.9
for more on clock stretching.
TDEL
SCL
SDA
Start
I2C Address or Data
ACK
Data
Figure 8 – Clock Stretching by Joystick
Revision History
Date
Rev
06/20/13
09/18/13
1.0
1.1
Name Description of Changes
SAK
SAK
09/24/13
1.2
SAK
12/10/13
02/17/14
1.3
1.4
SAK
SAK
Initial Version
In Table 4 Changed Operating Temp to be one operating temp for all versions (-40 to
+85 °C).
Added Figure 6 (Angle v Output graph).
In Table 4 added current (IDD3) for joystick with 3 Pos. Mom. Sw. option.
In Table 4 added current spec for 5V version of joystick with 3 Position Momentary
Switch option.
In Sec 3.1.1 and 3.1.2 changed X & Y value range to 50 (was 40).
In Table 4 added Typ. & Max current for 3.3V joystick with 3 Position Mom. Sw. (IDD2).
In Table 4 added new Note 1 and changed old Note 1 to Note 6.
Removed all references to 5V unit.
11