FTDI Community
General Category => Discussion - Drivers => Topic started by: Luk3 on March 17, 2020, 11:08:39 AM
-
Hello,
In my hardware I have used FT230X. PC software is developed in Java. I decided to add X series support to https://github.com/akuhtz/JavaFTD2XX
I have read eeprom with status OK but have problem with write to. Function FT_EEPROM_Program returns status 12 = FT_EEPROM_WRITE_FAILED but in FT_PROG I see new programmed values. Why this function returns error? What should I check?
Function prototype in FTD2XX interface:
int FT_EEPROM_Program(
Pointer ftHandle, Structure eepromData, int eepromDataSize, Pointer Manufacturer, Pointer ManufacturerId,
Pointer Description, Pointer SerialNumber);
My eeprom structure:
public class FT_EEPROM_HEADER extends Structure {
public int deviceType = 0;
public short vendorId;
public short productId;
public byte serNumEnable;
public short maxPower;
public byte selfPowered;
public byte remoteWakeup;
public byte pullDownEnable;
}
public class FT_EEPROM_X_SERIES extends Structure {
public FT_EEPROM_HEADER header;
public byte acSlowSlew;
public byte acSchmittInput;
public byte acDriveCurrent;
public byte adSlowSlew;
public byte adSchmittInput;
public byte adDriveCurrent;
public byte[] cBus = new byte[7];
public byte invertTxd;
public byte invertRxd;
public byte invertRTS;
public byte invertCTS;
public byte invertDTR;
public byte invertDSR;
public byte invertDCD;
public byte invertRI;
public byte bcdEnable;
public byte bcdForceCBusPWREN;
public byte bcdDisableSleep;
public short I2CSlaveAddress;
public int I2CDeviceId;
public byte I2CDisableSchmitt;
public byte FT1248Cpol;
public byte FT1248Lsb;
public byte FT1248FlowControl;
public byte RS485EchoSuppress;
public byte powerSaveEnable;
public byte driverType;
public FT_EEPROM_X_SERIES() {
this.header.deviceType = (short)DeviceType.DEVICE_X_SERIES.ordinal(); // 9
}
}
-
Hello,
Please see AN_428 D2XX EEPROM Programming Examples (https://www.ftdichip.com/Support/Documents/AppNotes/AN_428%20D2XX%20EEPROM%20Programming%20Examples.pdf) for some useful information.
Also refer to the D2XX Programmer's Guide (https://www.ftdichip.com/Support/Documents/ProgramGuides/D2XX_Programmer's_Guide(FT_000071).pdf).
FT_EEPROM_Read and FT_EEPROM_Program must be used with the FT_X Series.
If you send us an email (https://www.ftdichip.com/FTContact.htm) I can send a simple code example. This forum is limited to 20000 characters so couldn't post it here.
Best Regards,
FTDI Community
-
Thank you for reply. I have written an email.
I have created C++ console application in the Visual Studio and it works - FT_EEPROM_Program returns FT_OK, but in Java still FT_EEPROM_WRITE_FAILED.
-
Hello,
OK we have received your email.
You can post any resolution here to help other customers.
Thanks,
FTDI Community
-
I have solved the problem!
Problem was caused by other thread which is communicates with my device using uart. When the FT_EEPROM_PROGRAM function was invoked and other thread tried to read or write to uart then EEPROM_WRITE_FAILED was returned.