[hp34970a] part 2

Wed, 22 Jun 2016 01:20:59 +0200

author
David Douard <david.douard@logilab.fr>
date
Wed, 22 Jun 2016 01:20:59 +0200
changeset 59
cc8413dfcf14
parent 58
58e79464cd09
child 60
3f87af862c60

[hp34970a] part 2

content/hp34970a_2.rst file | annotate | diff | comparison | revisions
content/images/hp34970a/fm24c04_dump.jpg file | annotate | diff | comparison | revisions
content/images/hp34970a/soic8_breadboard.jpg file | annotate | diff | comparison | revisions
content/images/hp34970a/soic8_breadboard_populated.jpg file | annotate | diff | comparison | revisions
--- /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
Binary file content/images/hp34970a/fm24c04_dump.jpg has changed
Binary file content/images/hp34970a/soic8_breadboard.jpg has changed
Binary file content/images/hp34970a/soic8_breadboard_populated.jpg has changed

mercurial