Post Go back to editing

AduM2250 not working

I am communicating over I2C between two PIC24FJ microcontrollers (one as master, one as slave) with the AduM2250 in between them.  My schematic is attached.  My software works fine when i communicate between the two microcontrollers without the AduM2250 between them.  I have the master sending the slave some data and then the master requests a response from the slave.  The problem I am having is that communication from the master to the slave works ok (most of the time all the bytes are transferred correctly, but sometimes the slave misses the interrupt or gets hung up).  The main problem is that the master is not receiving the correct data back from the slave.  I will get the first 2-4 bytes back correctly and then the rest is just garbage (and sometimes I only get garbage).  Also sometimes the slave seems to hang up on the TBF flag not being cleared and then it seems to holding the bus low.  Any ideas on what is going on?  I have side 1 as the master and side 2 as the slave.  

IsolatedI2Ccircuit.pdf
  • So I had an idea to switch sides of the master and slave, so I wrote a little code to make side 2 the master and side 1 the slave and just send a read and a few characters from side 1 to side 2 and the signals are now looking correct, but I am getting this weird negative going clock on every other transmission.  So basically every 200ms I am sending a read command and 3 bytes of data, and on every other send the clock flips between +3.3V and -3.3V.   Scope shots are attached.  What is causing this??

  • Also here is the scope screen shot from my original  post - for some reason the message board wouldn't let me edit my original post to add this.

  • Please review this post for information on the different logic levels for Side 1 and Side 2 - it may explain what you're seeing.

    ADUM2250 problems 

  • Yes, I had seen that post, but it never had a conclusion from any of the people as to what they actually changed to get their circuits working.  I have tried different pull-up resistors and different configurations, changing parts for weeks and am completely out of ideas.

  • Hi Kathryn,

    It looks like channel 2 has AC coupling on. See the ~ symbol on the bottom line. This should be set to DC coupled for looking at these signals. Also, the gnd alligator clip or reference point has to be attached to the local gnd. For example, when looking at the ADuM2250 SCL2 pin, make sure the probe gnd is connected to GND2 (and not GND1). This may explain the strange clock signal. 

    Can you do a capture of both SDA1 and SDA2 pins at once? And SCL1 and SCL2 pins at once? 

    Regards,

    Jason

  • Yes, that was the issues - the scope channel I was using for the SCL was on AC coupling... i figured that out later on.  I am still not able to get this darn chip working though.  I removed the chip and tied SCL1 to SCL2 and SDA1 to SDA2 (and tied the ground together) and my I2C communications works beautifully - so I think the software is right.  I have also tried all kind of pull-up resistor values, and the signals look really good.  With the isolator chip I am getting problems where 1) the slave misses the interrupt or 2) the slave either doesn't receive bytes correctly or will receive 2 bytes then latches up (i think the slave is trying to ACK and somehow is holding the data line) or 3) the master sees a bus collission and sets the bus collision bit in my SFR (and transmission stops).  I have tried manipulating the software to do data holding, clock stretching etc retries, etc, and still no luck.  I have attached a picture where the master sends the slave an address byte, then tries to send 3 data bytes but latches up after 2 data bytes.  Any ideas??

  • Hi Kathryn,

    It does look like the slave is hanging on the ACK bit. It could be a level issue. 

    It looks like the master is connected to side 2 of the ADuM2250, and the slave is connected to side 1 of the ADuM2250. If that is the case, verify the slave device has a VIL of 900mV or greater. If the slave has a VIL of 800mV, its possible that its not seeing some of the low levels from SDA1 or SCL1.  

    If it is a level compatibility issue, try to turn the ADuM2250 device around. Face the side 1 SDA1 and SCL1 pins to the master instead, provided the master has a VIL of 900mV.

    Regards,

    Jason

  • Hi Kathryn, 

    I'm not familiar with Microchip's PIC24FJ processor, but I do see in the PIC24FJ datasheet that there is an SMBus level enable bit (SMEN). This would be the 800mV VIL that is incompatible with the ADuM2250 VOL. It looks like it may be possible to also program the VIL level to 0.3*VDD, which would be compatible with the ADuM2250. 

     

    Regards,

    Jason

  • This question has been assumed as answered either offline via email or with a multi-part answer. This question has now been closed out. If you have an inquiry related to this topic please post a new question in the applicable product forum.

    Thank you,
    EZ Admin