Maker Pro
Maker Pro

this evil I2C monster scoffing at me from its minute package

kellogs

Jan 7, 2014
88
Joined
Jan 7, 2014
Messages
88
It is this little guy - a MEMS sensor in its WLP-4 package.

Setup:

- Arduino Uno R3
- some 30 cm of wires
- home etched breakboards for the culprit sensor (two of them)
- Logic level shifter 5V - 3.3V:

526842ae757b7f1b128b456f.png


My mosfet is 2N7000 with 9k1 pullups. Works just fine for SPI, this being its first go at I2C.

Problem: NACKs on SDA

I have even done an I2C address sweep from 0 ->127 just in case; nothing!
Those 9k1 resistors may seem high, but still, I am attempting I2C at 7.6 kHz (logic analyzed it).
Double checked the footprint for package mismatch, nope.

Some funky stuff: on one of the breakboards, inverting SDA and SCL yields some I2C-ish looking results. I am getting answers from the sensor! Of course, incorrect as to be expected. The second sensor breakboard starts oscillating with the SCL frequency on both lines and never ends (meaning for a few seconds while I logic analyzed)

Forgive my noobness... why is it doing this to me ?? It is even an MSL1 component...
 

Bluejets

Oct 5, 2014
6,855
Joined
Oct 5, 2014
Messages
6,855
Spec calls for 2k7 on each of the sda and scl lines...did you use them?

Circuit diagram of what you have there is usually a good start. Include everything.
Code also a good move.
 

Harald Kapp

Moderator
Moderator
Nov 17, 2011
13,632
Joined
Nov 17, 2011
Messages
13,632
This circuit works well as a level shifter from the LV side to the HV side.

In the other direction the voltage level of a logic "0" from the HV side is increased by the voltage drop across the body diode of the MOSFET. The typical value is 0.8 V for the BSS138.
The max. voltage for a logic "0" on the MMC5603 is 0.3 × VIO = 1 V (assuming a 3.3 V supply).
If the logic "0" voltage from the Arduino (HV side) is higher than 0.2 V the logic "0" voltage level on the LV side may be over 1 V and thus nit be detected as a logic "0". Try a Schottky diode in parallel to the MOSFET, oriented cathode to HV, anode to LV.
Or try a dedicated level shifter such as used on these boards.

on one of the breakboards, inverting SDA and SCL yields some I2C-ish looking results.
Maybe the inverters drive HV to < 0.2 V for a logic low?
 

kellogs

Jan 7, 2014
88
Joined
Jan 7, 2014
Messages
88
Thank you, I suspect it is not the level shifter though. Just tried it with a Nucleo board which can do 3v3 natively, thus I have ditched the level shifter. None of the boards would budge. I have not put 2.7 k's but 3.3 k's. Speed was 9.4 kHz, so , really...

This is the first time I deal with these minute packages. I noticed they came with some solder balls on their pads; no idea what alloy that is. I have just smeared the copper tracks my low-melting-point solder paste, positioned and hot aired it. Also tried the oven and the iron, no joy. Could this be a problem, no electrical contact between the two alloys ?

Hmm...

Also we could have intermittent connections, known as BICs (BGA Intermittent Connections). This will cause a aleatory failure very hard to detect once the PCB is fully assembled
https://www.raypcb.com/a-define-bga-components-and-bga-soldering-process/

In contrast, failures in the intermetallic zone are particularly devilish and hard to recognise.“Head in pillow” and “black pad” are widely known phenomena of that kind.With the first effect, the solder doesn’t fuse with the solder paste, so sort of barrier layer will be build up.The visual appearance of the solder joint, however, normally doesn’t reveal that.This effect is mainly caused by contamination of the ball surface.On the other side, the black pad phenomenon is more related to board issues.Here, the ball reacts with the solder paste, but below it, a layer is build up with reduced or entirely missing conductivity.This phenomenon is mainly caused by quality defects of the surface of the board’s pads.Table 1 gives an overview over the fault categories discussed so far.
https://www.goepel.com/fileadmin/fachartikel/ejs/en/2015-fa-axi-bscan-bga-solder-joints-en.pdf

Good thing my Nucleo won't behave now...
 

Harald Kapp

Moderator
Moderator
Nov 17, 2011
13,632
Joined
Nov 17, 2011
Messages
13,632
Could this be a problem, no electrical contact between the two alloys ?
Yes it could. Also your various heat treatments may have done damage to the chip.
I've seen people soldering stubs of wire to the chip, then the wires to a standard 2.54 mm prototype pcb.

An admittedly rather expensive alternative is the use of a breakout board with pre-soldered chip.
 

kellogs

Jan 7, 2014
88
Joined
Jan 7, 2014
Messages
88
Yes it could. Also your various heat treatments may have done damage to the chip.
I've seen people soldering stubs of wire to the chip, then the wires to a standard 2.54 mm prototype pcb.

Or, perhaps not... the I2C lines are both pulled down by the MEMS I2C slave - as far as my logic analyzer can tell. Leaving the SDA and SCL open show correct operation on the master side. Even more, on both test boards the resistance between VDD and GND pads reads around 640 ohm.

Have I damaged them during soldering ? I don't know, the readings above suggest otherwise. Maybe I have only damaged the I2C circuitry... In the datasheet it says MSL1, which I correlate with good soldering-damage tolerance. Besides, one of the boards was subjected to 180 deg C max in an (inexactly) controlled temperature oven following the recommended soldering profile.

The balls were gone after desoldering one of the chips, and I am getting the lines pulled always down instead of always up - I would expect "always up" to be the case if no electrical contact between the alloys. Gave them 500ms to power-up, went as low as 1 kHz, tried 100 kHz too, all that's left to try is replace the 3k3 with 1k-ish resistors... then give up.

Thanks for the help though!
 
Top