Connect with us

this evil I2C monster scoffing at me from its minute package

Discussion in 'Microcontrollers, Programming and IoT' started by kellogs, Sep 4, 2021.

Scroll to continue with content
  1. kellogs

    kellogs

    62
    0
    Jan 7, 2014
    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:

    [​IMG]

    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...
     
  2. Bluejets

    Bluejets

    4,991
    1,048
    Oct 5, 2014
    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.
     
  3. Harald Kapp

    Harald Kapp Moderator Moderator

    11,662
    2,697
    Nov 17, 2011
    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.

    Maybe the inverters drive HV to < 0.2 V for a logic low?
     
  4. kellogs

    kellogs

    62
    0
    Jan 7, 2014
    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...

    https://www.raypcb.com/a-define-bga-components-and-bga-soldering-process/

    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...
     
  5. Harald Kapp

    Harald Kapp Moderator Moderator

    11,662
    2,697
    Nov 17, 2011
    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 likes this.
  6. kellogs

    kellogs

    62
    0
    Jan 7, 2014
    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!
     
  7. kellogs

    kellogs

    62
    0
    Jan 7, 2014
    Has anyone had any interaction with the supplier from the link above ? Mine was not the greatest, I tend to think they are only a .ca facade for the Chinese warehouses...
     
Ask a Question
Want to reply to this thread or ask your own question?
You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.
Electronics Point Logo
Continue to site
Quote of the day

-