==========================================
 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 <{filename}/hp34970a.rst>`_ 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
