Macroware Technology

Welcome Portlet


Welcome to Macroware Technology Blog.

The purposes of this engineering blog:

- Share knowledge
- Learn
- Have fun
- Document what I was doing / thinking

Search Box

 

Private Area

Mailing List

Engineering Education

Engineering Organizations

Professional Career Networking Groups

Electronics Hobby

Trade Publications

EEPROM Programming in Circuit and Signal Integrity

posted Sunday, 28 June 2009

I recently had a situation where an EEPROM on a board had a custom program with the board's serial number, board type, and unique checksums because of these.  The parts were already soldered on the boards, so I wanted a programming solution that would be fairly easy to change just a few bytes of a whole program and that would also be able to program the EEPROM on the board.  I did some internet searching and found several options, none of which seemed to be very reputable.  I decided to go with the TMS-120 from Triangle Micro Solutions.

One of the things about my application was that the EEPROM device in circuit was powered at 3.3V.  It could not tolerate 5V IOs.  Before connecting the TMS-120 to my circuit, I tested it first to see what IO voltage it was at.  I was expecting the outputs to be floating when high since they are supposed to be I2C and I thought the pull resistors would not be inside the TMS-120 but external.  Documentation was not clear on this.  It turns out the the TMS-120 has internal pull ups to 5V.  So I had to remove those pull ups before connecing to my circuit.  When I tried to connect the TMS-120 to my circuit with the long cable supplied by Triangle Micro Solutions, with pull ups to 3.3V it did not work.  I put a scope on the signals to see what was happening, and signal quality was very poor.  After many iterations of experimenting I discovered that it worked intermittently with external 5V pull ups and the long cable.  It works reliably with external 5V pull ups and a very short cable, but even with the short cable it still does not work at 3.3V.  This is a prime example of how signal integrity must be considered even for very slow interfaces like I2C.  I ended up having the desolder the EEPROM devices from my board, program them in a little SO-8 clamp fixture powered at 5V, and then solder them back on.  It works but definitely wasted a lot more of my time than I had planned.