This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LM49251: I2C Data format

Part Number: LM49251

Hi All

I'm having problems communicating with my LM49251. The data sheet seems to have some conflicting information and not fully detailed. 

I would like to know the correct data sequence for I2C communication. I am currently sending the I2C address, followed by the register address (which I assume are the set bits in the data sheet table 3) and then another byte of the data I want set. I don't think this is correct and seems counter intuitive to me

  • Hi, Jack,

    Welcome to E2E and thank you for your interest in our products!

    I have two questions regarding this issue.

    1.- Have you tried to read the different registers values? I mean, is it possible with your actual I2C configuration to read the default values? This is to ensure that you are getting response from the I2C lines.
    2.- Could you share the registers settings that you are trying to configure?

    Thank you!

    Best regards,
    Luis Fernando Rodríguez S.
  • Hi Luis

    Thanks for the reply.

    I have tried reading the registers, but I'm having no luck. I've attached a waveform spy of the read signal. It appears to not correctly set the read bit in the address after the restart and I assume the LM49251 is pulling the data line low, but I'm not sure. I suspect I'm just sending the wrong data here. I've sent 0x10 to read the SHUTDOWN CONTROL register. 

    I'm trying to set most of the registers up, but for example lets look at the SHUTDOWN CONTROL register which I've attached a snippet of the data sheet. Currently I send the bytes {0xF8, 0x10, 0x18}, which I think are the I2C address + write bit, SHUTDOWN CONTROL register and then the data I want to set (Disable unused gain amplifiers GAMP_ON). 

    I've talked to a few people around the office, but I get a different interpretation of how to write to registers from everyone! 

    Kind regards

    Jack Roache

  • Hi, Jack,

    Is it possible to modify the time when the SDA data changes in your application?  I mean, in your capture above, it seems that the SDA data changes when the SCL state changes from HIGH to LOW state. As mentioned in datasheet, you must wait until the SCL data state is modified from HIGH to LOW value before modify any data value:

    Could you also try to read register 0x00, please? What is the value that it throws?

    Thank you.

    Best regards,
    Luis Fernando Rodríguez S.

  • Hi, Jack,

    Excuse me, did you have the chance to try my suggestions above? Do you have any update about this?

    Thank you.

    Best regards,
    Luis Fernando Rodríguez S.
  • Hi, Jack,

    Excuse me again, do you have any update about this issue? Could you successfully get communication with I2C lines?

    Thank you.

    Best regards,
    Luis Fernando Rodríguez S.
  • Hi, Jack,

    I will close this thread for now. But please feel free to ask or comment anything else about this issue if you have new results.

    Best regards,
    Luis Fernando Rodríguez S.
  • Hi Luis,

    Sorry for the delay, but my work closed for Christmas break.

    I've had success in setting up the registers, but am still having difficulties reading from the device. I've set the I2C  clock speed to about 10kHz and checked all the timings are correct for 1.8V operation, which are all about 5 times larger than the minimum, yet still I get the same strange behavior as my post before. Where after sending the address + write bit, data register then restarting the bus, sending the address + read bit I get the LM49251 pulling the data line low. I'm fairly certain it's the LM49251 as I have tried sending this packet, then changing the output pin configuration on the data line are releasing it manually, with no change on the bus line.

    At this point I think I'll just work around not being able to read from the device.

    Cheers

    Jack