# HG changeset patch # User David Douard # Date 1466551259 -7200 # Node ID cc8413dfcf14f47ef76f78298330007bf4604ab6 # Parent 58e79464cd09fd520e3941ed34d801614d6ae15a [hp34970a] part 2 diff -r 58e79464cd09 -r cc8413dfcf14 content/hp34970a_2.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/content/hp34970a_2.rst Wed Jun 22 01:20:59 2016 +0200 @@ -0,0 +1,191 @@ +========================================== + HP 34970A Data Acquisition Unit - part 2 +========================================== + +:Author: David Douard +:Category: Electronics +:Tags: HP, 34970A, DMM, repair, test equipment +:series: HP 34970A repair +:series_index: 2 + + +This is quick follow up of my previous blog post on my attempt to fix +my recently acquired HP 34970A. + +In my hurry to replace the failing FRAM (FM24C04) chips, I also +replaced the FRAM chip on one of my 2 plugin modules. + +Bad idea: the module then provoques an error on startup (something +related to the memory being incorrect). + +So I decided to try to dump the content of the memory on copy it into +a brand new chip. The FRAM chips on the plugin modules are much less +prone to fail, but I would not have been pleased to be obliged to +reinstall the original chip... + +At this point, I had 2 problems: + +- I don't have a universal programmer (yet), + +- I don't which one of the 3 FM24C04 is the one from the plugin + modules (the other 2 are from the main board and the DMM). + +Dumping the FRAM chips +====================== + +I don't have a programmer, but I have some Arduino Uno laying +around. So let's use it as a poor man's mem dumper/programmer. + +My first problem has been to build a setup to install the SOIC8 chips +on, connect the 2 pull-up resistors and wire it to the Arduino. + +I ended with this: + +.. image:: {filename}/images/hp34970a/soic8_breadboard.jpg + :alt: the breadboard-based setup to dump/write the FM24C04 chips. + +And with a FM24C04 chip soldered on: + +.. image:: {filename}/images/hp34970a/soic8_breadboard_populated.jpg + :alt: the breadboard-based setup with a FM24C04 to be dumped. + +I've been using a small library named extEEPROM_ dedicated to +reading/writing I2C EEPROM chips. My problem was I was not able to get +any acnkoledge from any FM24C04 I "plugged" on my board. It was +working properly with a MAG3110 or a PCF8563 I have, but not wth the +FM24C04. + +According to the datasheet I have (FM24C04U from Fairchild), the chip +is supposed to accept a wide range of voltage (from 2.7v to 5.5v), so +I used the 3.3v pin of the Arduino to power the chip. That was the +problem: using a 5v power rail made meable to dump the content of the +chips. + +.. image:: {filename}/images/hp34970a/fm24c04_dump.jpg + :alt: dumping the content of a FM24C04 + +Restoring the dumped content in a new FM24C04 +============================================= + +Now I have 3 candidates. + +First:: + + 0x0000 3C 84 7C 6C 57 57 6C 7C 84 3C 3F 71 BD 2A 68 68 + 0x0010 2A BD 71 3F 3C F8 27 74 30 30 74 27 F8 3C 3F 71 + 0x0020 9D 81 31 31 81 9D 71 3F 00 00 00 00 00 00 00 00 + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 + 0x0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x00A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x00B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x00C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x00D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x00E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x00F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x0150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x0170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x0190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x01A0 F8 F7 10 10 F7 F8 FC DF 24 24 DF FC 00 00 00 00 + 0x01B0 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00 + 0x01C0 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00 00 + 0x01D0 00 FF 00 FF FF 00 00 FF 00 00 00 00 00 00 00 00 + 0x01E0 FF FF FF FF FF FF FF FF 00 00 00 00 39 39 30 33 + 0x01F0 30 32 30 33 31 34 33 36 E8 00 00 00 00 00 00 00 + + +Second:: + + 0x0000 86 00 00 00 00 86 00 00 86 00 00 00 00 A6 00 00 + 0x0010 86 00 00 00 02 86 00 00 86 00 00 00 07 86 00 00 + 0x0020 86 00 00 00 00 86 00 00 86 00 00 00 05 86 00 00 + 0x0030 86 00 00 00 05 86 00 00 86 00 00 00 07 86 00 00 + 0x0040 86 00 00 00 07 86 00 00 86 00 00 00 07 86 00 00 + 0x0050 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x0060 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x0070 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x0080 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x0090 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x00A0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x00B0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x00C0 86 00 00 00 A7 A6 00 00 00 00 00 00 00 00 00 00 + 0x00D0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x00E0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x00F0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x0100 FF FF FF FF FF FF FF 7F 00 00 00 00 00 00 00 00 + 0x0110 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x0120 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x0130 FF FF FF FF FF FF FF FF 01 00 00 00 00 00 00 00 + 0x0140 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x0150 FF FF FF FF FF FF FF FF 01 00 00 00 00 00 00 00 + 0x0160 FF FF FF FF FF FF FF FF 01 00 00 00 00 00 00 00 + 0x0170 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x0180 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x0190 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x01A0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x01B0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x01C0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x01D0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x01E0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + 0x01F0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 + + +Third:: + + 0x0000 01 0C 00 00 00 1A 00 00 22 1A 00 0A 80 46 FE 77 + 0x0010 37 B5 57 DB CA 6E FB 6F 3F EC F9 FB DE FF FF 77 + 0x0020 F7 04 7D FF FB FE FA 67 77 FD DD FB DF FF FF 76 + 0x0030 37 BC 59 FB FF 7E FA 66 37 E5 D9 FF FB EE FF F7 + 0x0040 BF 45 77 FB FA FF FA 77 3F ED 51 FF DE FF FF FE + 0x0050 37 27 51 DB DF FE FA 66 B7 EC 7F FB EE FE FE F6 + 0x0060 37 F5 D2 FF CB EE FE 6F FF 65 71 FF FF FF FE 7F + 0x0070 3F 4E 71 FF CF FE FF 67 BF BD 5D FF FE FE FE 7F + 0x0080 37 04 55 DF EA EE FF 6E F7 E5 7F FF DE FF FE 7E + 0x0090 FF 0C 70 FF FF FF FA 6E FF FD 7F FF DE FE FF 76 + 0x00A0 3F 3D 71 DF FE FE FB 6E B7 E5 FD FB DF FF FE FF + 0x00B0 FF 7F FF DB DB FF FE 6F BF FD F9 FB EA FF FE FE + 0x00C0 F7 E3 FB BB FF FE FB 66 F7 6C D1 FB DF FE FE F6 + 0x00D0 B7 64 7D EB DF FE FB 76 3F F5 F1 FF DB FE FF E6 + 0x00E0 BF C6 D6 DB CA EF FA 76 B7 F5 7F FF FE FE FF 7F + 0x00F0 B7 6E 41 DB CA 7E FB EE FF FF FF FF FF FF FF 7F + 0x0100 11 00 00 00 00 00 C0 00 FF FF FF FF FF FF FF FF + 0x0110 11 00 00 02 00 00 00 20 FF FF FF FF FF FF FF FF + 0x0120 11 00 00 00 02 00 00 00 FF FF FF FF FF FF FF FF + 0x0130 11 00 00 02 00 20 18 00 FF FF FF FF FF FF FF FF + 0x0140 11 00 00 02 80 00 08 00 FF FF FF FF FF FF FF FF + 0x0150 11 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF + 0x0160 11 00 00 00 02 00 50 00 FF FF FF FF FF FF FF FF + 0x0170 11 00 00 02 00 00 00 00 FF FF FF FF FF FF FF FF + 0x0180 11 00 00 00 00 00 D0 00 FF FF FF FF FF FF FF FF + 0x0190 01 00 00 00 00 08 08 02 FF FF FF FF FF FF FF FF + 0x01A0 11 00 00 00 00 00 08 20 FF FF FF FF FF FF FF FF + 0x01B0 11 00 00 00 00 00 08 00 FF FF FF FF FF FF FF FF + 0x01C0 13 00 00 08 02 00 08 00 FF FF FF FF FF FF FF FF + 0x01D0 11 00 00 08 00 00 18 00 FF FF FF FF FF FF FF FF + 0x01E0 11 00 00 00 00 00 90 00 FF FF FF FF FF FF FF FF + 0x01F0 01 00 00 00 00 00 08 00 FF FF FF FF FF FF FF FF + + +The notable thing about the first one is the absence of long 0xFF +patterns. So I chose it as a first guess, and I was right. + +Now my HP 34970A does not complainany more at all on startup! + +So I "just" have to fix the display (and recalibrate it). But "just" +fixing the display looks a not so easy task, since my display unit +microcontroller (U1) seems to be partially dead. + +But that's an other story. + +.. _extEEPROM: https://github.com/JChristensen/extEEPROM diff -r 58e79464cd09 -r cc8413dfcf14 content/images/hp34970a/fm24c04_dump.jpg Binary file content/images/hp34970a/fm24c04_dump.jpg has changed diff -r 58e79464cd09 -r cc8413dfcf14 content/images/hp34970a/soic8_breadboard.jpg Binary file content/images/hp34970a/soic8_breadboard.jpg has changed diff -r 58e79464cd09 -r cc8413dfcf14 content/images/hp34970a/soic8_breadboard_populated.jpg Binary file content/images/hp34970a/soic8_breadboard_populated.jpg has changed