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.

How to control delay time after I2C controller’s START condition?

Anonymous
Anonymous
Guru 17045 points
Other Parts Discussed in Thread: DM3725, DM3730

Hi,

 

How to control the delay between START condition and the first word in an I2C controller’s write operation?

 

 

In the figure above, the upper part was the waveform captured by oscilloscope for a “driving board” that could successfully communicate with an OV sensor, and the below is the waveform when I am communicating with an OV sensor of the same type soldered on my customized board using DM6437’s I2C controller.

 

The most prominent difference is the delay time:

1.    In the “good" waveform, there is a 60 µs delay between the START condition and the slave address (0x42 for OV sensor).

2.    In DM6437’s I2C controller waveform, there is no such delay, and the START condition is immediately followed by the 0x42 device address.

 

The I2C clock speeds in both cases are 200K bits/s, which has been proven to be working by the “driving board”. It is also within the 100K (standard mode) – 400K (fast mode) bits/s range.

 

Since the “driving board” could make the sensor work (video can be seen), its waveform thus is guaranteed to be correct and I am attempting to mimic the waveform using DM6437’s I2C controller. So the problem is: How should I add the 60 µs delay between START condition and the slave address?

 

Does I2C controller allow such tuning? Could anyone help on this?

 

    

 

Zheng

  • Hi,

    There is no capability of inserting a delay between a START condition and 1st data bit. Both are valid implementations of the I2C specs. The spec does not define any wait time and this time could vary from device to device, as you have witnessed.

    Since the master device is the device that is generating the Start condition, if your target is unable to detect the Start condition, you probably would like to slow down the bit clock of the master device, indirectly increasing the gap.

    Best regards, Zegeye

  • Anonymous
    0 Anonymous in reply to Zegeye Alemu

    Zegeye,

     

    First, I have to apologize that I made a duplicate post of this in C6000 single core forum. The problem puzzled me for over one week, and I even borrowed a test machine from a camera module factory to test the waveform.

     

    Second, I have actually tried to slow down the clock to even as 20 Kbits/s, but this “indirect delay” didn’t solve the problem. Expect for scaling of the waveform, I noticed no other change.

     

    The confirmation from you that there is no provision for inserting the delay is the same as I got from Tai Nguyen yesterday, and I would basically ask the same further questions:

    http://e2e.ti.com/support/dsp/tms320c6000_high_performance_dsps/f/112/p/121379/433219.aspx#433219 said:
    I have several further questions regarding your answer.

    1.    According to your knowledge, does the 60 µs delay exist in SCCB waveform? Is it necessary? Although I have captured this waveform on a driving device that is working properly, it is perhaps just one implementation that happened to work. I cannot rule out the possibility that some other problem caused my SCCB OV sensor not to respond. Could you consult TI employee with experience with SCCB on this?

    2.    I regard your answer as a confirmation that DM6437’s I2C controller cannot insert this arbitrary delay after the START condition. If not, and if such delay is necessary, this means DM6437’s I2C controller cannot be used to drive this particular SCCB device (there are many OV SCCB sensors and some are just more “I2C compatible” than others, according to MattLipsey). I therefore need another confirmation here: Are you aware of any instance that customers uses DM6437’s I2C controller to successfully communicate with an OV sensor, or not?

    3.    I googled SCCB within TI domain (SCCB site:ti.com) and there are several information suggesting some TI devices natively support SCCB protocol in their I2C controller:

    a.     DM3730, DM3725 Digital Media Processors Silicon Errata contain information about SCCB

    b.    AM/DM37x Overview - Texas Instruments Embedded Processors Wiki contain information about SCCB

    c.     AM35x Overview - Texas Instruments Embedded Processors Wiki contain information about SCCB

    For example, in (c) one can find such description
     AM35x Overview - Texas Instruments Embedded Processors Wiki:
    Each multimaster HS I2C controller can be configured to act like a slave or master I2C-compatible device. Moreover, each multimaster HS I2C controller can be configured in serial camera control bus (SCCB) mode (the SCCB is a serial bus developed by Omnivision Technologies, Inc.) to act as a master on a 2-wire SCCB bus. Only multimaster HS I2C controllers I2C2 and I2C3 can be configured in SCCB mode to act as a master device on a 3-wire SCCB bus.
     
    This basically means that SCCB are supported in these devices. Regarding this, could you help me to confirm this with experts on DM3730, DM3725, AM/DM37x and AM35x? Most importantly, could you show the waveform I posted above and ask about the 60 µs delay to them? I believe they should have the authority to answer question 1 above (of this reply, not the whole thread).

    Could you help me to consult experts of DM3730, DM3725, AM/DM37x and AM35x on these questions?

     

     

     

    Zheng

  • Hi Zheng,

    Thanks. No pb about the multiple posting. Sorry, that the I2C issue you are working on has still not been resolved.

    I am not aware of SCCB device and have never worked with it. For that reason, I can not help with specifics on the SCCB. It might be a good idea to contacting them directly.

    That said, if you ask if our device is compatible with the I2C specifications, my answer to that is Yes. I do not know about the SCCB.

    Best regards, Zegeye

  • Anonymous
    0 Anonymous in reply to Zegeye Alemu

    Zegeye,

    Are you aware of any instance that DM6437's I2C controller successfully worked with SCCB?

     

    Zheng

  • Hi Zheng,

     

    No, I am not. Let me ask around and will let you know.

     

    Best regards, Zegeye

  • Anonymous
    0 Anonymous in reply to Zegeye Alemu

    Zegeye,

     

    Thanks. I am looking forward to updates on this.

     

    Zheng