Fri, 18 Jan 2019 12:33:39 +0100
[hp34970a] fixes and improvements on the protocol description
59 | 1 | ========================================== |
2 | HP 34970A Data Acquisition Unit - part 2 | |
3 | ========================================== | |
4 | ||
5 | :Author: David Douard | |
6 | :Category: Electronics | |
7 | :Tags: HP, 34970A, DMM, repair, test equipment | |
8 | :series: HP 34970A repair | |
9 | :series_index: 2 | |
10 | ||
11 | ||
60
3f87af862c60
[hp34970a] #2: add a link to the first post
David Douard <david.douard@logilab.fr>
parents:
59
diff
changeset
|
12 | This is quick follow up of my `previous blog |
3f87af862c60
[hp34970a] #2: add a link to the first post
David Douard <david.douard@logilab.fr>
parents:
59
diff
changeset
|
13 | post <{filename}/hp34970a.rst>`_ on my attempt to fix my recently acquired |
3f87af862c60
[hp34970a] #2: add a link to the first post
David Douard <david.douard@logilab.fr>
parents:
59
diff
changeset
|
14 | HP 34970A. |
59 | 15 | |
16 | In my hurry to replace the failing FRAM (FM24C04) chips, I also | |
17 | replaced the FRAM chip on one of my 2 plugin modules. | |
18 | ||
19 | Bad idea: the module then provoques an error on startup (something | |
20 | related to the memory being incorrect). | |
21 | ||
22 | So I decided to try to dump the content of the memory on copy it into | |
23 | a brand new chip. The FRAM chips on the plugin modules are much less | |
24 | prone to fail, but I would not have been pleased to be obliged to | |
25 | reinstall the original chip... | |
26 | ||
27 | At this point, I had 2 problems: | |
28 | ||
29 | - I don't have a universal programmer (yet), | |
30 | ||
31 | - I don't which one of the 3 FM24C04 is the one from the plugin | |
32 | modules (the other 2 are from the main board and the DMM). | |
33 | ||
34 | Dumping the FRAM chips | |
35 | ====================== | |
36 | ||
37 | I don't have a programmer, but I have some Arduino Uno laying | |
38 | around. So let's use it as a poor man's mem dumper/programmer. | |
39 | ||
40 | My first problem has been to build a setup to install the SOIC8 chips | |
41 | on, connect the 2 pull-up resistors and wire it to the Arduino. | |
42 | ||
43 | I ended with this: | |
44 | ||
45 | .. image:: {filename}/images/hp34970a/soic8_breadboard.jpg | |
46 | :alt: the breadboard-based setup to dump/write the FM24C04 chips. | |
47 | ||
48 | And with a FM24C04 chip soldered on: | |
49 | ||
50 | .. image:: {filename}/images/hp34970a/soic8_breadboard_populated.jpg | |
51 | :alt: the breadboard-based setup with a FM24C04 to be dumped. | |
52 | ||
53 | I've been using a small library named extEEPROM_ dedicated to | |
54 | reading/writing I2C EEPROM chips. My problem was I was not able to get | |
55 | any acnkoledge from any FM24C04 I "plugged" on my board. It was | |
56 | working properly with a MAG3110 or a PCF8563 I have, but not wth the | |
57 | FM24C04. | |
58 | ||
59 | According to the datasheet I have (FM24C04U from Fairchild), the chip | |
60 | is supposed to accept a wide range of voltage (from 2.7v to 5.5v), so | |
61 | I used the 3.3v pin of the Arduino to power the chip. That was the | |
62 | problem: using a 5v power rail made meable to dump the content of the | |
63 | chips. | |
64 | ||
65 | .. image:: {filename}/images/hp34970a/fm24c04_dump.jpg | |
66 | :alt: dumping the content of a FM24C04 | |
67 | ||
68 | Restoring the dumped content in a new FM24C04 | |
69 | ============================================= | |
70 | ||
71 | Now I have 3 candidates. | |
72 | ||
73 | First:: | |
74 | ||
75 | 0x0000 3C 84 7C 6C 57 57 6C 7C 84 3C 3F 71 BD 2A 68 68 | |
76 | 0x0010 2A BD 71 3F 3C F8 27 74 30 30 74 27 F8 3C 3F 71 | |
77 | 0x0020 9D 81 31 31 81 9D 71 3F 00 00 00 00 00 00 00 00 | |
78 | 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 | |
79 | 0x0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
80 | 0x0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
81 | 0x0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
82 | 0x0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
83 | 0x0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
84 | 0x0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
85 | 0x00A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
86 | 0x00B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
87 | 0x00C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
88 | 0x00D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
89 | 0x00E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
90 | 0x00F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
91 | 0x0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
92 | 0x0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
93 | 0x0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
94 | 0x0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
95 | 0x0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
96 | 0x0150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
97 | 0x0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
98 | 0x0170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
99 | 0x0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
100 | 0x0190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
101 | 0x01A0 F8 F7 10 10 F7 F8 FC DF 24 24 DF FC 00 00 00 00 | |
102 | 0x01B0 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00 | |
103 | 0x01C0 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00 00 | |
104 | 0x01D0 00 FF 00 FF FF 00 00 FF 00 00 00 00 00 00 00 00 | |
105 | 0x01E0 FF FF FF FF FF FF FF FF 00 00 00 00 39 39 30 33 | |
106 | 0x01F0 30 32 30 33 31 34 33 36 E8 00 00 00 00 00 00 00 | |
107 | ||
108 | ||
109 | Second:: | |
110 | ||
111 | 0x0000 86 00 00 00 00 86 00 00 86 00 00 00 00 A6 00 00 | |
112 | 0x0010 86 00 00 00 02 86 00 00 86 00 00 00 07 86 00 00 | |
113 | 0x0020 86 00 00 00 00 86 00 00 86 00 00 00 05 86 00 00 | |
114 | 0x0030 86 00 00 00 05 86 00 00 86 00 00 00 07 86 00 00 | |
115 | 0x0040 86 00 00 00 07 86 00 00 86 00 00 00 07 86 00 00 | |
116 | 0x0050 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
117 | 0x0060 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
118 | 0x0070 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
119 | 0x0080 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
120 | 0x0090 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
121 | 0x00A0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
122 | 0x00B0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
123 | 0x00C0 86 00 00 00 A7 A6 00 00 00 00 00 00 00 00 00 00 | |
124 | 0x00D0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
125 | 0x00E0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
126 | 0x00F0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
127 | 0x0100 FF FF FF FF FF FF FF 7F 00 00 00 00 00 00 00 00 | |
128 | 0x0110 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
129 | 0x0120 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
130 | 0x0130 FF FF FF FF FF FF FF FF 01 00 00 00 00 00 00 00 | |
131 | 0x0140 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
132 | 0x0150 FF FF FF FF FF FF FF FF 01 00 00 00 00 00 00 00 | |
133 | 0x0160 FF FF FF FF FF FF FF FF 01 00 00 00 00 00 00 00 | |
134 | 0x0170 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
135 | 0x0180 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
136 | 0x0190 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
137 | 0x01A0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
138 | 0x01B0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
139 | 0x01C0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
140 | 0x01D0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
141 | 0x01E0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
142 | 0x01F0 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 | |
143 | ||
144 | ||
145 | Third:: | |
146 | ||
147 | 0x0000 01 0C 00 00 00 1A 00 00 22 1A 00 0A 80 46 FE 77 | |
148 | 0x0010 37 B5 57 DB CA 6E FB 6F 3F EC F9 FB DE FF FF 77 | |
149 | 0x0020 F7 04 7D FF FB FE FA 67 77 FD DD FB DF FF FF 76 | |
150 | 0x0030 37 BC 59 FB FF 7E FA 66 37 E5 D9 FF FB EE FF F7 | |
151 | 0x0040 BF 45 77 FB FA FF FA 77 3F ED 51 FF DE FF FF FE | |
152 | 0x0050 37 27 51 DB DF FE FA 66 B7 EC 7F FB EE FE FE F6 | |
153 | 0x0060 37 F5 D2 FF CB EE FE 6F FF 65 71 FF FF FF FE 7F | |
154 | 0x0070 3F 4E 71 FF CF FE FF 67 BF BD 5D FF FE FE FE 7F | |
155 | 0x0080 37 04 55 DF EA EE FF 6E F7 E5 7F FF DE FF FE 7E | |
156 | 0x0090 FF 0C 70 FF FF FF FA 6E FF FD 7F FF DE FE FF 76 | |
157 | 0x00A0 3F 3D 71 DF FE FE FB 6E B7 E5 FD FB DF FF FE FF | |
158 | 0x00B0 FF 7F FF DB DB FF FE 6F BF FD F9 FB EA FF FE FE | |
159 | 0x00C0 F7 E3 FB BB FF FE FB 66 F7 6C D1 FB DF FE FE F6 | |
160 | 0x00D0 B7 64 7D EB DF FE FB 76 3F F5 F1 FF DB FE FF E6 | |
161 | 0x00E0 BF C6 D6 DB CA EF FA 76 B7 F5 7F FF FE FE FF 7F | |
162 | 0x00F0 B7 6E 41 DB CA 7E FB EE FF FF FF FF FF FF FF 7F | |
163 | 0x0100 11 00 00 00 00 00 C0 00 FF FF FF FF FF FF FF FF | |
164 | 0x0110 11 00 00 02 00 00 00 20 FF FF FF FF FF FF FF FF | |
165 | 0x0120 11 00 00 00 02 00 00 00 FF FF FF FF FF FF FF FF | |
166 | 0x0130 11 00 00 02 00 20 18 00 FF FF FF FF FF FF FF FF | |
167 | 0x0140 11 00 00 02 80 00 08 00 FF FF FF FF FF FF FF FF | |
168 | 0x0150 11 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF | |
169 | 0x0160 11 00 00 00 02 00 50 00 FF FF FF FF FF FF FF FF | |
170 | 0x0170 11 00 00 02 00 00 00 00 FF FF FF FF FF FF FF FF | |
171 | 0x0180 11 00 00 00 00 00 D0 00 FF FF FF FF FF FF FF FF | |
172 | 0x0190 01 00 00 00 00 08 08 02 FF FF FF FF FF FF FF FF | |
173 | 0x01A0 11 00 00 00 00 00 08 20 FF FF FF FF FF FF FF FF | |
174 | 0x01B0 11 00 00 00 00 00 08 00 FF FF FF FF FF FF FF FF | |
175 | 0x01C0 13 00 00 08 02 00 08 00 FF FF FF FF FF FF FF FF | |
176 | 0x01D0 11 00 00 08 00 00 18 00 FF FF FF FF FF FF FF FF | |
177 | 0x01E0 11 00 00 00 00 00 90 00 FF FF FF FF FF FF FF FF | |
178 | 0x01F0 01 00 00 00 00 00 08 00 FF FF FF FF FF FF FF FF | |
179 | ||
180 | ||
181 | The notable thing about the first one is the absence of long 0xFF | |
182 | patterns. So I chose it as a first guess, and I was right. | |
183 | ||
184 | Now my HP 34970A does not complainany more at all on startup! | |
185 | ||
186 | So I "just" have to fix the display (and recalibrate it). But "just" | |
187 | fixing the display looks a not so easy task, since my display unit | |
188 | microcontroller (U1) seems to be partially dead. | |
189 | ||
190 | But that's an other story. | |
191 | ||
192 | .. _extEEPROM: https://github.com/JChristensen/extEEPROM |