110 lines
4.8 KiB
Plaintext
110 lines
4.8 KiB
Plaintext
Here we try to document what we know about the EEPROM Structure.
|
|
|
|
Even with a 93xx66 EEPROM, at maximum 256 Bytes are used
|
|
|
|
All important things happen in the first
|
|
0x14(FT232/245), 0x16(FT2232CD), 0x18(FT232/245R) or 0x1a (FT2232H/4432H) bytes
|
|
|
|
Type | Use extra EEPROM space
|
|
FT2XXB | No
|
|
|
|
Byte.BIT| TYPE_AM TYPE_BM TYPE_2232C TYPE_R TYPE_2232H TYPE_4232H
|
|
00.0 | 0 0 channel_a_type channel_a_type 0
|
|
00.1 | 0 0 channel_a_type channel_a_type 0
|
|
00.2 | 0 0 channel_a_type high_current channel_a_type 0
|
|
00.3 | 0 0 channel_a_driver channel_a_driver channel_a_driver channel_a_driver
|
|
00.4 | 0 0 high_current_a 0 0 0
|
|
00.5 | 0 0 0 0 0 0
|
|
00.6 | 0 0 0 0 0 0
|
|
00.7 | 0 0 0 0 SUSPEND_DBUS7 channel_c_driver
|
|
|
|
On TYPE_R 00.3 set mean D2XX, on other devices VCP
|
|
|
|
01.0 | 0 0 channel_b_type channel_b_type 0
|
|
01.1 | 0 0 channel_b_type channel_b_type 0
|
|
01.2 | 0 0 channel_b_type 0 channel_b_type 0
|
|
01.3 | 0 0 channel_b_driver 0 channel_b_driver channel_b_driver
|
|
01.4 | 0 0 high_current_b 0 0 0
|
|
01.5 | 0 0 0 0 0 0
|
|
01.6 | 0 0 0 0 0
|
|
01.7 | 0 0 0 0 0 channel_d_driver
|
|
|
|
Fixme: Missing 4232H validation
|
|
|
|
02 | Vendor ID (VID) LSB (all)
|
|
03 | Vendor ID (VID) MSB (all)
|
|
04 | Product ID (PID) LSB (all)
|
|
05 | Product ID (PID) MSB (all)
|
|
06 | Device release number LSB (not tested on TYPE_4232H)
|
|
07 | Device release number MSB (not tested on TYPE_4232H)
|
|
|
|
|
08.4 | Battery powered
|
|
08.5 | Remote wakeup
|
|
08.6 | Self powered: 1, bus powered: 0
|
|
08.7 | Always 1
|
|
|
|
|
09 | Max power (mA/2)
|
|
|
|
|
Byte.BIT| TYPE_AM TYPE_BM TYPE_2232C TYPE_R TYPE_2232H TYPE_4232H
|
|
0a.0 | 0 IsoIn IsoIn part A 0 0 0
|
|
0a.1 | 0 IsoOut IsoOut part A 0 0 0
|
|
0a.2 | 0 suspend_pull_down suspend_pull_down suspend_pull_down suspend_pull_down
|
|
0a.3 | 0 use_serial use_serial use_serial
|
|
0a.4 | 0 change_usb_version change_usb_version
|
|
0a.5 | 0 0 IsoIn part B 0 0 0
|
|
0a.6 | 0 0 IsoOut part B 0 0 0
|
|
0a.7 | 0 - reserved
|
|
|
|
0b | TYPE_R Bitmask Invert, 0 else
|
|
Byte.BIT| TYPE_4232H
|
|
0b.4 | channel_a_rs485enable
|
|
0b.5 | channel_b_rs485enable
|
|
0b.6 | channel_c_rs485enable
|
|
0b.7 | channel_d_rs485enable
|
|
|
|
Byte | TYPE_AM TYPE_BM TYPE_2232C TYPE_R TYPE_2232H TYPE_4232H
|
|
0c | 0 USB-VER-LSB USB-VER-LSB 0 ? ?
|
|
0d | 0 USB-VER-MSB USB-VER-MSB 0 ? ?
|
|
(On several FT2232H different values were observed -> The value is unused
|
|
if change USB version is not set, so it might contain garbage)
|
|
|
|
0e | OFFSET Vendor
|
|
0f | Len VENDOR
|
|
|
|
10 | Offset Product
|
|
11 | Length Product
|
|
|
|
12 | Offset Serial
|
|
13 | Length Serial
|
|
|
|
Byte.BIT| TYPE_AM TYPE_BM TYPE_2232C TYPE_R TYPE_2232H TYPE_4232H
|
|
14.3:0 | UA UA CHIP CBUS[0] AL A
|
|
14.7:0 | UA UA CHIP CBUS[1] AH B
|
|
15.3:0 | UA UA 0 CBUS[2] BL C
|
|
15.7:0 | UA UA 0 CBUS[3] BH D
|
|
16.3:0 | UA UA UA CBUS[4] 0 0
|
|
16.7:0 | UA UA UA 0 0 0
|
|
|
|
CHIP values:
|
|
0x46: EEPROM is a 93xx46
|
|
0x56: EEPROM is a 93xx56
|
|
0x66: EEPROM is a 93xx66
|
|
|
|
17 UA UA UA 0 0 0
|
|
18 UA UA UA VENDOR CHIP CHIP
|
|
19 UA UA UA VENDOR 0 0
|
|
|
|
1a UA (all)
|
|
|
|
|
|
Additional fields after the serial string:
|
|
0x00, 0x00 - reserved for "legacy port name prefix"
|
|
0x00, 0x00 - reserved for plug and play options
|
|
(Observed values with PnP == 0:
|
|
0x02 0x03 0x01 0x00)
|
|
|
|
Note: The additional fields after the serial number string
|
|
collide with the official FTDI formula from AN_121 regarding
|
|
the start of the user area:
|
|
"Start Address = the address following the last byte of SerialNumber string."
|