free-pdk / easy-pdk-programmer-hardware

Easy PDK programmer for PADAUK microcontroller. EDA, schematic, gerber, bom, housing stl, firmware
Creative Commons Attribution Share Alike 4.0 International
179 stars 33 forks source link

Help Resolving Occasional Board Issue (“wrong icid”) #6

Closed paulreimer closed 4 years ago

paulreimer commented 5 years ago

After assembling several boards (over 50% working perfectly!) I have an issue with the other 40%, and I haven’t been able to fix it (by metering signals, reworking some parts, etc).

Specifically, while the USB->STM32 works and the programmer is detected, I get “wrong icid” when trying to flash a PFS173.

Can you suggest what parts/traces to check that might cause this? (shorts, unconnected pins, diodes in the wrong orientation, etc)? It would be great to get those boards working and/or understand the likely causes for future builds.

freepdk commented 5 years ago

Have you tried the latest version of the programmer software on github (easypdkprog v1.1)?

I changed the voltages in "fpdkicdata.c" for PFS173 a bit (especially WRITE CMD voltage) which improves the situation a bit.

-

To debug the hardware there is an extra program called "easypdkprogtest".

Compile it with "make easypdkprogtest" and the execute it (with no IC attached).

It outputs 5V on VPP and VDD and uses internal ADC to measure it.

When you execute it write down the measurements reported from easypdkprogtest and also measure VDD and VPP with a multimeter.

Expectation: All values should be very close to 5V. If not you should check that after the 2 diodes you get -2.4V when easypdkprogtest is running (check schematics and measure with multimeter). This is the negative reference for the opamp. In case the diodes are wrong / damaged / not soldered properly you get a wrong negative reference voltage which would explain wrong / shifted output voltages for VDD / VCC which could cause the problem you describe.

Another cause could be the crystal / decoupling caps next to crystal are not soldered properly.

I assembled over 30 pcs now and all of them are working perfectly.

paulreimer commented 5 years ago

Thanks for your help with debugging this! Super helpful to have the easypdkprogtest and happily I do have several boards that are working well to compare against.

So now I'm wondering about the opamp (maybe that needs to be replaced?), and also about the xtal as you suggest (but continuity test seems good.) If you have any other pointers, please let me know! I'm already feeling a lot better knowing that I can confirm some of the symptoms with easypdkprogtest.

freepdk commented 5 years ago

Hi,

* I ran `easypdkprogtest` and the working boards have ~5V for both VDD and VPP. The bad boards have ~13.66V for VDD and ~5V for VPP (multimeter confirms this at the IC pins).

This explains everything.

Just to be sure. You measure +13V on VDD and +5V on VPP ? This scenario is almost impossible and could be caused by wrong resistor values on the DAC lines only.

* I checked the voltage w.r.t. GND for diodes D2 + D3, and they appear to be similar for both the good boards and the bad boards (-2.7v D3<->GND, and 0.0v D2<->GND, -1.5v<->GND for both diodes on the shared side). I'm not sure where to probe to find 2.4v.

I said -2.4V, you measured -2.7V which is ok as negative reference for the opamp (anything less than -2V is fine).

So now I'm wondering about the opamp (maybe that needs to be replaced?), and also about the xtal as you suggest (but continuity test seems good.)

The XTAL + decoupling caps just need visual inspection of soldering. If you say they are good then they are good. (The 13V problem has nothing to do with XTAL).

freepdk commented 5 years ago

@paulreimer Could you solve your problem?

paulreimer commented 5 years ago

Thanks for checking @freepdk!

I checked the resistor values and they all seem to be correct, the value varies somewhat maybe due to low-ish tolerance, but it doesn’t seem like any values were swapped or shorted. I’m not sure what else to check, but I might order extra parts from LCSC and try to replace the STM32 or op-amp and see if that helps?

Feel free to close this issue if there’s nothing else to check (maybe I cooked the boards a bit too much). I can post something if I learn more about this issue.

freepdk commented 5 years ago

@paulreimer Better to find the cause so others can participate from it. I have something like a "troubleshooting" document in mind.

Here a first start:

Reference voltages when running easypdkprogtest:

                   +-------+
                   |   O   |
(DAC-VPP) 1.18V -> |5  P  4| <- -2.7V
          1.18V -> |6  A  3| <-  2.49V (DAC-VDD)
(VPP)      5.0V <- |7  M  2| <-  2.49V
          14.9V -> |8  P  1| ->  5.0V  (VDD)
                   |      .|
                   +-------+

Please measure the voltages on your non working boards and report back.