|
I2C Specifications
- The Bus supports seven-bit addressing and only acts as a
slave device.
- The address for the fan controller is 0001A2A1A0.
- General call support is not provided.
- The fan controller will stretch the clock further if needed.
The I2C master must observe clock stretching.
- The hardware register will support Standard Mode I2C with
speeds up to 100 KHz, however, lower clock speeds are
recommended for increased noise immunity.
- If temperature control mode is disabled and I2C speed mode
is used, then I2C communication must occur within ~2
minutes of the last communication, or there will be an I2C
communication timeout error. When an I2C timeout occurs,
full speed will be applied to the fans, and fan speed must be
reset with a new speed command. Performing any valid I2C
operation on either bus will clear the timeout condition and
restart the watchdog timer.
- Fan failure based on 2000 minimum PPM of fan in slow
(default) mode or 4000 minimum PPM in fast mode. Fan
failure is not updated when the output is set to 0%.
- It is possible for noise to cause the I2C hardware to miss an
address or data. In this case an Ack will not be generated.
The production tester allows 3 errors to occur before
marking the board as failing. Also during the EEPROM
write cycle the I2C will not generate ACK signals as no
more data can be accepted until the write cycle is complete.
Typical write cycle is 8ms.
Table 3.0 defines the bits used in the serial bus protocol.

Write sequence
S A6 A5 A4 A3 A2 A1 A0 W Ack L7 L6 L5 L4 L3 L2 L1 L0
Ack D7 D6 D5 D4 D3 D2 D1 D0 Ack P
Read sequence
S A6 A5 A4 A3 A2 A1 A0 W Ack L7 L6 L5 L4 L3 L2 L1 L0
Ack P S A6 A5 A4 A3 A2 A1 A0 R Ack D7 D6 D5 D4 D3 D2
D1 D0 Ack P
Register Locations: L7-L0 Label (R/W) [initial condition]
Register 0x00 – 0xEF: Generic EEPROM storage (Read/Write)
[undetermined]
Register 0xF0: Firmware Revision (Read only) [00:current rev]
Register 0xF1: Alarm0 Status (Read only) [0x00]
| D0: |
Status of fan of 1 (0=no fault, 1= fault) |
| D1: |
Status of fan of 2 (0=no fault, 1= fault) |
| D2: |
Status of fan of 3 (0=no fault, 1= fault) |
| D3: |
Status of fan of 4 (0=no fault, 1= fault) |
| D4: |
Status of fan of 5 (0=no fault, 1= fault) |
| D5: |
Status of fan of 6 (0=no fault, 1= fault) |
| D6: |
Always 0 |
| D7: |
Always 0 |
Register 0xF2: Alarm1 Status (Read only) [0x00]
| D0: |
Always 0 |
| D1-3: |
Always 0 |
| D4: |
Status of speed override (0=normal, 1=100%) |
| D5: |
Status of on-board sensor (0=connected, 1= open) |
| D6: |
Status of external sensor (0=connected, 1=open) |
| D7: |
Status of controlling sensor (0=valid, 1=alarm) |
Register 0xF3: Temperature (Read only) [1111 1111] on-board
sensor
| D0-7: |
Temperature from 0 - 70 in degrees C in 0.5 deg steps
0XFF = temperature not read yet or open
(Temperatures above 70 are reported as 254) |
Register 0xF4: Temperature (Read only) [1111 1111] external
sensor
| D0-7: |
Temperature from 0 - 70 in degrees C in 0.5 deg steps
0XFF = temperature not read yet or open
(Temperatures above 70 are reported as 254) |
Register 0xF5: Current Target Speed (Read only) [0001 0100]
| D0-7: |
0x14 = 100%, 0x00 = 0%C |
(Commanded speed with alarm status override included)
(In temperature mode this register will read 0x14)
Register 0xF6: Current Speed (Read only) [0001 0100]
| D0-7: |
0x14 = 100%, 0x00 = 0%C |
(What the actual current voltage is)
(In temperature mode this register will read 0x14)
| D0-3: |
0x14 = 100%, 0x00 = 0% |
0x00 – 0x14 = 0 – 100 %, 5% per step
If set to 0xFF then temperature mode is enabled and I2C speed
control disabled
Register 0xF8: Off Temperature (Read/Write) [1111 1111]
| D0-7: |
Temperature from 0 - 70 in degrees C in 0.5 deg steps
Temperature below which the controller turns off the fan output
(0 VDC) |
If set to 0xFF then function disabled
Register 0xF9: Control Temperature (Read/Write) [0101 0000]
| D0-7: |
Temperature from 0 - 70 in degrees C in 0.5 deg steps |
Full speed temperature, only used if Commanded Speed set to
0xFF.
Register 0xFA: Alarm Temperature (Read/Write) [1111 1111]
| D0-7: |
Temperature from 0 - 70 in degrees C in 0.5 deg steps |
Temperature above which the controller alarms
If set to 0xFF then function disabled
Register 0xFB: Config0 Register (Read/Write) [0011 1111]
| D0-D5: |
0=Mask, 1=Active for an Fan (J1-J6) |
| D6-D7: |
Not Used |
Register 0xFC: Config1 Register (Read/Write) [0000 0000]
| D0: |
Not Used |
| D1-4: |
Set to 0, may be set to 1 to allow system to indicate a
fan controller reset. |
| D5: |
0=5deg slope, 1=10 deg slope for temperature mode
only |
| D6: |
0=2000PPM tach, 1=4000PPM tach fan alarm speed |
| D7: |
0=External, 1=On-board sensor selection for
temperature mode only |
Register 0xFD-0xFF: CRI Test Register (Reserved) [xxxx xxxx]
Note: If a fan failure occurs the Current Speed will be updated to
full but the Commanded Speed will remain at its previous value.
Once the failure clears the Current Speed will return to the
Commanded Speed value. An I2C timeout changes BOTH the
Current Speed and Commanded Speed to full. The Commanded
Speed must be reset after a timeout. During the speed ramp the
Current Speed will not match the Commanded Speed until the
ramp completes.
|