Green LED only flashes after first IMP003 power-up

Hi all.

I’m having trouble with a couple prototype PCBs I just received that use the IMP003 (schematic and top PCB layer attached). Applying power to the IMP causes the green LED to blink (only the green, no RED at all) on for 1.25 sec and off for 0.5 sec. This scheme doesn’t seem to correspond to any of the Blinkup status codes. The green LED continues to flash at the stated rate during Blinkup, which has no effect on the state of the WLAN_POWER_EN. Neither of the modules have been connected to a network - they are brand new.

I have successfully designed, manufactured and tested two versions of PCB with IMP003 before and the new design essentially replicates the previous (maybe it was dumb luck first time).

PCB SN1:
0.7V on LED_GREEN (this seems to be the highest voltage reached when the LED_GREEN pin is active), LED does not light up as far as I can tell. There is evidence of capacitance on the leading and trailing edges of the signal on LED_GREEN. It’s possible I buggered the LED_GREEN pin of the IMP003 on this PCB as 0R resistors were mistakenly installed as R6 and R7 on both PCBs; this was found during testing and the resistors were subsequently replaced with 100R. I’m not so much concerned with the weird LED_GREEN signals on this PCB as the rate and lack of LED_RED signal.

WLAN_POWER_EN is not active at any time after applying power (not even for the shortest amount of time), so power is never applied to the VDD_PA/VDD_WLAN pins or to the flash which is on the WLAN power net.

Signals on the OSC32 lines are as expected (same as on working IMP003 PCBs).

There is 0VDC on the OPTO_BIAS line (3.3VDC on working IMP003 PCBs).

The IMP003 pulls ~72mA continuously.

PCB SN2:
~3V on LED_GREEN when LED is operating. There is always 0V on LED_RED.

WLAN_POWER_EN is not active at any time after applying power (not even for the shortest amount of time), so power is never applied to the VDD_PA/VDD_WLAN pins or to the flash which is on the WLAN power net.

There is 0.324VDC on OSC32_IN, 0V on OSC32_OUT.

There is 3.3VDC on OPTO_BIAS and 0.58V on OPTO_IN.

The IMP003 pulls 24mA with green LED off and up to 40mA with the green LED on.

So to my questions:
Why is the green LED only flashing when the IMP003 is powered up?

What is the meaning of the 1.25 sec on/0.5 sec off green LED sequence?

Any ideas why I might be getting these kinds of results?

Is there anything else I should look at that might indicate why these IMP003 aren’t working?

Cheers,

Franc

This sounds like the device is flashing another code, but the red LED is not connected; the imp does not flash green codes under any circumstance aside from when it is either connected (slow green flash) or upgrading (solid green, or long/short green pre release 32).

A cycle time of ~1.75s is consistent with a SPI flash error code (see https://electricimp.com/docs/hardware/imp/imp003_hardware_guide/ ).

These codes repeat at 1.75s, but are red & amber - if you are seeing green on for 1.25s and then off for 0.5s then it sounds like it has mis-detected the LED polarity (so it is driving green high to turn it off). This is very likely to happen if the RED led line isn’t connected to anything due to a soldering issue.

The code red/amber/off (flash error) is red for 0.5s, amber for 0.25s, and off for 1s so inverting this you’d see green for 1.5s and off for 0.25s.

The code amber/red/off (flash not found) is amber for 0.5s, red for 0.25s, and off for 1s so inverting this you’d see green for 1.25s and off for 0.5s… this seems to match.

Your flash is ok (if it’s the one in the schematic) and in your picture both JP2 and JP3 are fitted. If the imp doesn’t find SPI CS high it assumes the flash is in the radio domain and turns the WLAN_POWER_EN on. If that’s not happening then that also sounds like a soldering issue.

Sorry but my armchair diagnosis is a soldering problem :frowning:

Hi Hugo.

I very much appreciate you taking time to analyse my issue from you armchair. :slight_smile:

Yes I guess the inconsistency of test results across both PCBs points to soldering problems but I though it too coincidental that WLAN_POWER_EN wasn’t active on both. We are running a manual process and considering using solder spheres to maintain solder size consistency under the IMP.

I disconnected JP3 on a working IMP003 design to simulate no flash: neither LED lit up when power was applied and WLAN_POWER_EN oscillated high for 0.51 sec then low for 25mS. Hmmm.

I’ve successfully addressed issues like this with a bunch of flux & a heat gun (remove imp, get some solder on the pads, pop the imp back on there, flood with flux and reflow, usually putting the imp on a little skew so you can see when surface tension pops it back straight). Worth a try?

How do you do reflow? We have a cheap amazon-bought reflow oven (T962) and for prototyping use PCBs & stencils from Elecrow, which are decent if not impedance controlled (so RF performance is a way from optimal). Pretty good success rates.

On the other working 003 board / JP3 experiment you may be seeing something else. The 003 expects to populate the external SPI flash on first powerup, but after that point it’s unable to do so and hence it’s just getting all upset that it can’t find the image it had populated previously (the wifi firmware is part of the on-die image at time of shipping, but is then only stored externally to save the on-die flash for higher value things like more squirrel & OS space).

We’re going to give your approach a go with tacky flux and solder spheres. We’re using a 4 layer 1.6mm SEEED PCB which apparently is quite difficult to work with as the component pads without thermal relief on high current paths and the large ground planes wick away heat, making soldering difficult. Do you see any problem with loading just the IMP with flux and reflowing just the IMP to get consistent solder on it’s pads then placing it on a similarly prepared PCB with plenty of flux?

Coincidentally my PCB guy has a T962 too, with mods. Any tips on soldering profile with the SEEED 1.6mm PCB?

Ah, ok. What if the SPI flash dies - the user will be none the wiser?

Balling the 003 should be ok, yes. If you’re doing heat gun reflow I strongly recommend a preheater - we have an OKI PCT-100. This seriously helps with getting the groundplanes (etc) up to nearer reflow temperature so then you don’t need to add much heat with the gun.

I’d only add solder to one side, though, not both.

We use 63/37 leaded in our lab (because these are hand built prototypes - anything MP is done lead free by a CM) and use (I think) profile 2, which matches that mix.

If the SPI flash dies, the device is a return anyway. The LED code will indicate problems with the SPI.