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.

ONET8501V - Inoperable pullup resistor on SDA?

Other Parts Discussed in Thread: ONET8501V

According to the datasheet for the ONET8501V there are supposed to be internal pullup resistors on both SCK and SDA.

Is there a chance that there is a datasheet error?  Five out of five installed devices have exhibited what appears to be a lack of pullup on SDA.

I've tried an external resistor but still haven't had a successful register write and read-back test.

I've got scope capture images here:
http://imgur.com/GXsvJ2n,lIi7aOP

The first image is a write and the second image is a read.  Channel 1 is SDA and channel 2 is SCK.

I'm using an MSP430 to bit-bang i2c.  There high with exponential decay on the SDA happens when I change the port (in two operations) from a zero output to a floating input (P4OUT = 1 followed by P4DIR = 0).

  • Hello,

    The internal pullups on the SDA and SCK are high value (100kohms) and external pullups should be used for proper I2C communicaton.

    I have attached a screen shot of a correct I2C transfer to the device for reference.

    Regards,

    Alex.

    ONET8501V I2C Transfer.pdf
  • Alex,

    Thanks for the response.  I was originally using external pullup resistors on these signals.  I was unable to get a write and read-back transactions to agree.  When I noticed the internal pullups in the datasheet I disabled my external pullup resistors for troubleshooting purposes.

    It was in this stage that I noticed the inconsistency between the SDA and SCK signals.  They are both two pin nets (MCU & ONET) with similar trace characteristics.  I would expect similar pullup performance between the two signals and I am certainly not seeing that.

    I'm trying to track down why these signals are behaving differently as I think it may shed light on why I cannot get a register read-back to agree with the previous write.

    It seems all the world like the SDA is an open or intermittent connection.  I have trouble with that theory as this is the same behavior between five different devices on two different boards.

    Thanks!

  • George,

    I'm not sure where the issue is. The part should respond given the correct I2C transfer as I have shown. Maybe something is not setup correctly with the I2C master. The 8501V is a slave device only.

    Regards,

    Alex.

  • Alex, All,

    I've verified operation of the I2C interface using a different I2C slave (an TI temperature sensor).

    I've also "dead-bugged" an ONET8501V on to a piece of prototype board.
    I connected VCC, GND, SDA, SCK, and DIS to my MSP430 micro-controller.

    I confirmed that the bus-weirdness follows the SDA pin of the ONET device and not the micro-controller by swapping the SDA and SCK pins to the MCU.

    With external pull-ups on the bus I still cannot get consistent ACK/NACK from the ONET device nor can I read back register contents.

    Any other ideas?

    Thanks!

  • George,

    I'm sorry but I am not sure what the issue may be. The interface uses the standard I2C protocol and I have not had any reports about an inability to communicate with the device. Is it possible the SDA lines got damaged?

    Regards,

    Alex.

  • Alex,

    I wouldn't think it would, but would the VCSEL need to be applied for the I2C to work?   I have dropped off new samples to see if the SDA lines were damaged.   We have also checked out the layout and MSP430 code that talks to it via I2C.   All seemed to work correctly.   It's only the I2C on the ONET8501V that doesn't seem to work.  

    Regards,

    Aaron  

  • Aaron,

    You should be able to write to certain registers without a VCSEL applied but some things will not work such as the bias current beacuse there is no current to sink. They should just try yo write to a particular register such as the equalizer (Reg3). when the IC is powered up the bias and modulation currents will be zero and the chip will be disabled. The typical supply current should be around 25mA. If they write 1 to bit 1 of Reg0 then the supply current should increase by about 5mA.

    Regards,

    Alex.

  • Alex,

    I think I may have write operations to the ONET device working but I am still unable to read the registers back.

    From the datasheet I gather the following sequence for a register read

    1. START condition
    2. Write 7 address bits followed by a 1
    3. ONET should assert ACK by pulling SDA low
    4. Write 8 register address bits
    5. ONET should assert ACK
    6. Read 8 data bits
    7. Generate NAK indicating no continuing data transfer
    8. STOP condition

    My question comes as some of the I2C devices I've read about require a the following sequence for a register read:

    1. START condition
    2. Write 7 address bits followed by a 0
    3. Slave asserts ACK
    4. Write 8 register address bits
    5. Slave asserts ACK
    6. RESTART condition
    7. Write 7 address bits followed by a 1
    8. Slave asserts ACK
    9. Read 8 data bits
    10. Master asserts NAK
    11. STOP condition

    Could you clarify the sequence of operations for a register read for this device?

    Thanks!

  • George,

    You are correct about the read condition. It is not clear in tha datasheet. The correct sequence as you have described is shown in the attached file.

     

     

  • That works!

    Amazing how much time can be wasted with ambiguous documentation.

    Thanks for your assistance!