Need Help Programing an 93C46 EEPROM. I Can Read and Erase But Not Write. - Page 1
Forum section: electronics / repair

author: Chooch_Fiesta
author_rank: Contributor
timestamp: January 27, 2024, 01:51:57 am
content: I am currently trying to program an STMicroelectronics 93C46 EEPROM from my car alarm buzzer.https://ww1.microchip.com/downloads/en/devicedoc/doc5140.pdfhttps://www.st.com/resource/en/datasheet/m93c46-w.pdfThe EEPROM is set up in 128 x 8 config with ORG tied to ground.I disordered the chip and have it soldered to a carrier connected to my CH341A mini programmer.I have both the Serial and Parallel drivers installed, and I am trying to use both AsProgrammer v2.1.0.13 and NeoProgrammer V2.2.0.8 but neither seem to work to write the chip.I have tried a bunch of other CH341A programming softwares as well and they all hang at the write stage.I have been able to successfully read the memory and back it up to a bin file.I made the required changes and have been trying to now flash the memory but all it seems to do is hang on the programming memory stage.I was able to blank erase the EEPROM and do a blank check and that is fine but wont go past the programming part. Both AsProgrammer and NeoProgrammer do the same. The Run led on the CH341A is lit but no actual progress bar change.I tried adding a 10k resistor between CS and GRD based on some post I found online but no changes were made to writing error.I have done a continuity check between all the pins on the IC and the headers on the programmer and they are all connected.I have read the voltage and I am getting 5V (4.97V measured).

author: wraper
author_rank: Unknown
timestamp: January 27, 2024, 02:10:40 am
content: Try adding decoupling cap across its power pins. I wouldn't be surprised it fails due to long wires causing unstable power.

author: Chooch_Fiesta
author_rank: Contributor
timestamp: January 27, 2024, 04:21:27 am
content: I just tried using the shortest wires I have and adding a capacitor.No luck. Same issue hanging on write.

author: fzabkar
author_rank: Super Contributor
timestamp: January 27, 2024, 04:36:34 am
content: Does DO remain low (= BUSY)?Can you write anything at all, or does it hang after the first byte/word?

author: Chooch_Fiesta
author_rank: Contributor
timestamp: January 27, 2024, 06:38:38 am
content: When I try to write;CS is 4.78VCLK is 0VDI is 4.97VDO is 0.197VVCC is 4.97VI can't write anything. I tried changing a random bit in the buffer as well as trying to write a bin I saved and neither work.Software just hangs with the log showing:Code:Current programmer: CH3411:37:00Verify memory...SuccessExecution time: 00:00:00.094Current programmer: CH3411:37:00Programming memory...

author: fzabkar
author_rank: Super Contributor
timestamp: January 27, 2024, 06:56:04 am
content: For some reason, the EEPROM remains Busy.Where does DO (Q) sit when the chip is idle?

author: Chooch_Fiesta
author_rank: Contributor
timestamp: January 27, 2024, 05:16:15 pm
content: Just plugged in at idle, no commands given;CS is 2.94VCLK is 4.95VDI is 4.96VDO is 4.97VVCC is 4.98V

author: fzabkar
author_rank: Super Contributor
timestamp: January 27, 2024, 05:56:38 pm
content: That's a head scratcher. I have no idea what is going on. Sorry.

author: Chooch_Fiesta
author_rank: Contributor
timestamp: January 27, 2024, 07:12:52 pm
content: I made another janky looking adapter to plug directly into the socket but no change. still the same issue.

author: wraper
author_rank: Unknown
timestamp: January 27, 2024, 07:23:36 pm
content: Although I have CH341 programmer, I used it like once or twice more than a year ago. Try looking if software has some programming speed related options.

author: Chooch_Fiesta
author_rank: Contributor
timestamp: January 27, 2024, 07:32:46 pm
content: My latest test. I forgot that the socket is 3.3V VCC. I added a jumper to the VCC line to the 5V header.I am now able to get it to pass the write stage but it doesn't actually write. The chip is still black after verify stage is run.

author: DavidAlfa
author_rank: Super Contributor
timestamp: January 27, 2024, 07:44:50 pm
content: Check under programming if Protect OFF is set.

author: Chooch_Fiesta
author_rank: Contributor
timestamp: January 27, 2024, 08:12:58 pm
content: There is a Lock button but it is not clickable with or without the EEPROM plugged in.Only options when programming are Erase, blank check, write, verify.

author: DavidAlfa
author_rank: Super Contributor
timestamp: January 27, 2024, 08:15:09 pm
content: Then try the lock button. Cannot remember where, but there's a lock/unlock option somewhere.

author: Chooch_Fiesta
author_rank: Contributor
timestamp: January 27, 2024, 08:20:59 pm
content: Like I said previously it is there but not clickable. It does nothing.There are no other write protection options.

author: DavidAlfa
author_rank: Super Contributor
timestamp: January 27, 2024, 08:30:39 pm
content: What other options are available in the erase button?

author: Chooch_Fiesta
author_rank: Contributor
timestamp: January 27, 2024, 08:36:32 pm
content: I thought maybe I had it wrong based off the PCB circuit being too damaged so just for fun I removed ground from the ORG pin so that it would be in X16 configuration and I can still read the chip with both AsProgrammer and NeoProgrammer, but I cannot erase the chip with NeoProgrammerThere are no other options under erase other than blank check.I can't tell if I have a hardware or software issue that it is preventing it from writing. I purchased some new 93C46 EEPROMs to see if I am able to write a different one.CH341A is the only programmer I have.

author: DavidAlfa
author_rank: Super Contributor
timestamp: January 27, 2024, 09:16:45 pm
content: Try:https://github.com/McMCCRU/SNANDer

author: Psi
author_rank: Super Contributor
timestamp: January 27, 2024, 09:23:03 pm
content: If you try to write the same value already at the address does it still fail?

author: Psi
author_rank: Super Contributor
timestamp: January 27, 2024, 09:27:41 pm
content: If you unsoldered this from a car alarm there is a possibility this IC is not 100% the same as what you think based on markings that say 93C46.It could be a custom sku of the 93C46, or maybe it has a silicon fault and was sold cheap to specific customers along with documents that provide a work-around.Perhaps there is a mark on the IC to indicate this but only the manufacturer can tell and to anyone else it looks like a date code.i.e, It may appear to be a 93C46 but not actually match the datasheet exactly.Maybe order a new official chip and try that, assuming the car alarm just reads the chip and it sounds like you can read it that should still work fine.

author: Chooch_Fiesta
author_rank: Contributor
timestamp: January 27, 2024, 09:50:24 pm
content: Quote from: DavidAlfa on January 27, 2024, 09:16:45 pmThank you I'll take a look into this tonight.

author: Chooch_Fiesta
author_rank: Contributor
timestamp: January 27, 2024, 10:10:35 pm
content: Quote from: Psi on January 27, 2024, 09:27:41 pmIt's not from the full alarm just the alarm buzzer. These are from cars built 20 years ago but we're still used till about 2013. There are a few cars that use the same unit but there is a difference in the firmware on the bios for how the alarm operates when the car is locked. One unit is incredibly expensive and the other is very cheap. All fail the same way due to the internal NiCad batteries failing and destroying the PCB as seen in the pictures I posted.It was proven by a few people that they were able to read the 93C46 of the expensive unit and flash the cheaper unit getting the same operation. They don't explain their setup just that they used ponyprog.Another person is also able to do it but he will not explain how he does it because he sells flashed units for half of the expensive unit price but still 10x what I paid for a used buzzer on eBay.I'm just trying to grab the firmware I saved from my unit and reflash it.The issue is I was able to backup the firmware but I can't write it back to the chip. Doesn't matter if I try to flash 1 but or try to flash the full recovery file I made.I measured the ORG pin on the PCB of the good buzzer and it looks like it has continuity with VCC not ground like the damaged PCB. So now I think I was wrong and it is actually in X16 configuration.I rewired the 93C46 for X16 with ORG tied to VCC with a 10K resistor.I am still able to read in both programs but NeoProgrammer will not erase and still neither will write.I hope I am being as clear as possible.

author: Chooch_Fiesta
author_rank: Contributor
timestamp: January 28, 2024, 01:28:31 am
content: Maybe not super helpful but I was able to grab a 24C08AN EEPROM off a random scrap PCB I found and I was able to read, save, and write to it no issues.I was able to modify the buffer and write, and I was able to write a backup of the memory back to the EEPROM.I guess it must be an issue with 93C46 itself. The board was very heavily damaged as you can see in my first post.Maybe I just have to wait till I get a new chip and see if it has the same write issue.Otherwise I have no idea what I am doing wrong.

author: Chooch_Fiesta
author_rank: Contributor
timestamp: January 29, 2024, 11:20:10 pm
content: I was able to solve the programming issue now I just need to determine if the chip is written as X8 or X16.In the original post I thought it was X8 because I measured the ORG pin connected to ground but I believe that the alarm circuit on the PCB was just too damaged and there was a short.I measured (and looked) and the good PCB has the ORG pin in continuity with VCC.Also based on the image that the person who said they were able to do it before using PonyProg, they have there buffer window showing 16x hyphenated strings of bits.Would I be correct that the EEPROM is actually X16 config and not X8? If I flash it in one config and test it shouldnt hurt to flash the other as well and try again if it doesn't operate properly.

author: Psi
author_rank: Super Contributor
timestamp: January 30, 2024, 07:04:17 am
content: I wouldn't trust how it displays in the app to mean anything.I've not played with ponyprog but you can probably set it up to display however you want.I doubt it means anything about the chip data it read.

author: Chooch_Fiesta
author_rank: Contributor
timestamp: January 30, 2024, 09:46:29 pm
content: True. It makes more sense to me it's X16 because the circuit on the alarm PCB has ORG and VCC tied together.

author: DavidAlfa
author_rank: Super Contributor
timestamp: January 30, 2024, 09:52:36 pm
content: So "you solved it". How about telling what the problem was to help others?

author: Bud
author_rank: Super Contributor
timestamp: January 30, 2024, 10:26:17 pm
content: 93C46 is not on the list of supported ICs for CH341a. That programmer seems only supports 24 and 25 series ICs.

author: Chooch_Fiesta
author_rank: Contributor
timestamp: January 31, 2024, 01:45:34 am
content: They are supported using newer programming software.

author: Bud
author_rank: Super Contributor
timestamp: January 31, 2024, 10:50:28 pm
content: No software may help if the hardware has no support, things like voltages and timing. You can try buying a net new IC.

author: wraper
author_rank: Unknown
timestamp: January 31, 2024, 11:20:20 pm
content: Quote from: Bud on January 30, 2024, 10:26:17 pmIt supports 93C46 with adapter. All CH341A programmer is is a CH341A universal USB converter IC on a board.QuoteVoltage is absolutely nonsensical argument, like one 5V is different from other 5V. Timing argument does not make much sense either.

author: Bud
author_rank: Super Contributor
timestamp: February 02, 2024, 02:56:40 am
content: That was a generic statement to illustrate the point. Voltage could have been 3.3V vs 5V, i did not check the datasheet for that particular IC.

author: Katuga
author_rank: Newbie
timestamp: May 12, 2024, 06:38:47 pm
content: Did you successfully program a 93C46 16-bit Serial EEPROM using the Ch341a programmer? TIA