TL866 won't program FRAM - Page 1
Forum section: electronics / repair

author: jogri
author_rank: Frequent Contributor
timestamp: January 11, 2020, 03:24:22 pm
content: Hi guys,i was trying to repair a 34970A that indicated a FRAM failure and i ran into a rather annoying problem with my TL866ii plus: It can read the FRAM (Cypress FM24C04B-G), but it won't programm even though this chip is in the list of supported devices. It works fine with other types of memory, it just doesn't want to write anything to FRAM. This is my first time trying to programm frams, did i miss anything important?

author: wraper
author_rank: Unknown
timestamp: January 11, 2020, 03:35:34 pm
content: Quote from: jogri on January 11, 2020, 03:24:22 pmThen why CY24C04 is selected instead of FM24C04B?

author: jogri
author_rank: Frequent Contributor
timestamp: January 11, 2020, 04:23:58 pm
content: I thought that Cy just stood for Cypress... Well, it turns out that there is/was a CY24C04 EEPROM that is only listed on a datasheet website, but without said datasheet. Looks like my chips are in fact not supported by the TL866 and i've just spend 50 bucks on the wrong programmer :/

author: wraper
author_rank: Unknown
timestamp: January 11, 2020, 07:30:24 pm
content: Try selecting some different 24C04 EEPROMs. On the first glance into datasheet it should be compatible at least to some extent. Even regular I2C EEPROMs have differences, for example some allow writing more bytes at once, some less (multi-byte write) but writing single bite should work for all, though slower.

author: jogri
author_rank: Frequent Contributor
timestamp: January 11, 2020, 11:17:01 pm
content: Didn't work, i tried around 20-30 different settings and it showed me the same error every time. It looks like it sends the command to write data but when it tries to verify if the bit changed it detects no change and shows an error message.

author: TheSteve
author_rank: Unknown
timestamp: January 11, 2020, 11:37:23 pm
content: It won't work selecting a regular EEPROM, the programming algo is different as far as I know. What happens if you select a Ramtron FM24CL04 ? I'm pretty sure that is what I used with the chips I bought from Digikey and it worked fine(however I also have a regular TL866 I may have used).

author: Galen
author_rank: Regular Contributor
timestamp: January 11, 2020, 11:48:12 pm
content: Some time ago, tried to use TL866II Plus to program FM1608, it program most bytes, but always fail at 2 bytes. tried a few pieces of FM1608, all same result. Then I put the FM1608 in Tek2465B, it not report failure message during startup diagnostics. Interesting.

author: TheSteve
author_rank: Unknown
timestamp: January 12, 2020, 12:07:24 am
content: The FM1608 is a different beast and isn't properly supported by the TL866plus(I've asked for it to be added though). It will fail to program the first byte of each block. If it worked in circuit you got lucky and the incorrect data wasn't needed or was just accepted.

author: jogri
author_rank: Frequent Contributor
timestamp: January 12, 2020, 11:26:21 am
content: Quote from: TheSteve on January 11, 2020, 11:37:23 pmSame problem, it just won't write. Btw, i have discovered another bug: It looks like the TL866 just reports empty blocks when it can't read them: When i try to read the chips via the pin header, i get a FF table, but when i hook the chip up to 5V (nominal voltage) and use the ICSP port, i get a 00 table. I also tried manually pulling down the write protect pin to ground, but it still doesn't work.

author: mikerj
author_rank: Super Contributor
timestamp: January 12, 2020, 01:02:37 pm
content: This part requires a at least 4.5v to operate correctly, compared to many serial EEPROMs that work down to 2.7v or even lower. Worth checking what voltage the TL866 is providing.

author: jogri
author_rank: Frequent Contributor
timestamp: January 12, 2020, 02:24:53 pm
content: I powered the chip with 5V (when connecting it to the ICSP port), but i can't measure what voltage the 866 provides on the zif socket as it displays a pin error (can't seem to find the serial data line and the clock) every time i connect two pins to an oscilloscope. It sort of worked when i used the ICSP port, but i got readings of 0.4V on the data line and 0V on the clock line, so it is either not reading data at all or i can't pick up those signals.

author: mikerj
author_rank: Super Contributor
timestamp: January 12, 2020, 05:06:20 pm
content: The TL866 will undoubtedly scale the logic levels to the Vdd supply, so providing an external 5v to the FRAM means the TL866 could still be providing low voltage logic signals which aren't likely to work.

author: wraper
author_rank: Unknown
timestamp: January 12, 2020, 05:28:35 pm
content: Quote from: jogri on January 12, 2020, 02:24:53 pmWait, did you try programming it in circuit only?

author: jogri
author_rank: Frequent Contributor
timestamp: January 12, 2020, 05:33:25 pm
content: No, i am currently trying to program new SOIC8 chips that are not soldered in. I have used the SOIC to zif adapter for them and attached the ICSP leads to this adapter.

author: Galen
author_rank: Regular Contributor
timestamp: June 01, 2020, 07:39:40 am
content: Tried to program FM16W08, using the TL866 II, still fail. a few bit's is always wrong. But is can be used in tek2465B. interesting.

author: jogri
author_rank: Frequent Contributor
timestamp: June 01, 2020, 10:09:17 am
content: You always get a few wrong bits? Always the same bits that just keep changing between two states?I got that when i told the TL866II that my Cypress chips are ST24C04s, it would change a few bits every time i tried to read it. I managed to program the chips over the ICSP port (as ST24C04s), but my 34970A wouldn't accept the images. I always thought that this weird behaviour just meant that the old FRAM was totally screwed (after all, i only removed it after the 34970 told me it couldn't read the content of the chip), but if you are getting the same results with different chips it could also be a quirk of the 866.

author: Galen
author_rank: Regular Contributor
timestamp: June 02, 2020, 12:12:18 am
content: Quote from: jogri on June 01, 2020, 10:09:17 amyes, the wrong data always sit in the same location for each programming, and for both FM1608 and FM16W08.

author: greasemonkey
author_rank: Contributor
timestamp: April 10, 2021, 03:17:30 pm
content: I had the same problem so I wrote some code to program the FRAM with an arduino. I hope someone finds it useful.The code:https://gist.github.com/greasemonkey-btbm/0577011288397c8edde42adf54b29ae9Programmer schematic:https://btbm.ch/8-pin-i2c-memory-programmer-with-arduino-uno/

author: chekhov
author_rank: Regular Contributor
timestamp: April 10, 2021, 09:25:39 pm
content: Not sure about old TL866, but TL866II supports some FRAM, FM16W08 for example - just update its firmware.

author: greasemonkey
author_rank: Contributor
timestamp: April 10, 2021, 10:19:17 pm
content: Quote from: chekhov on April 10, 2021, 09:25:39 pmI think I have the latest firmware (04.02.124) but it still doesn't work. It can read the chip but does not write to it. It's probably a bug in their software.Did you have any success writing?

author: Miti
author_rank: Super Contributor
timestamp: April 10, 2021, 10:29:08 pm
content: Quote from: Galen on June 02, 2020, 12:12:18 amI had the same issue but starting with V10.55, FM16W08 is supported and it works perfect for me, I just tried now. I have a chip from ebay and one from Digikey, I can R/W both, no problem, but the one from ebay doesn't work in my Tek 2445B.

author: chekhov
author_rank: Regular Contributor
timestamp: April 10, 2021, 10:40:38 pm
content: QuoteYep, I was able to program FM16W08 after firmware update.Previously little adapter required to make READ work - yes, with old firmware it writes data correctly, but it reads contents back incorrectly - each 512th or 256th byte if I remember it right - you may notice that improper byte is always equal to the previous byte in the data I suppose.

author: greasemonkey
author_rank: Contributor
timestamp: April 10, 2021, 11:26:14 pm
content: I think the problem is in the protocol used and not in the memory type. FM16W08 is a parallel device and FM24C08B is I2C.In any case I solved my problem with the arduino workaround for the FM24C08B. Unfortunately I don't have time to look into it any further.