General Category > Discussion - Software

FT260 - Pauses in I2C comunication.

(1/3) > >>

HI_type:
Hello

Hope this is the right place to ask.

Problem: Using LibFT260 (form here: https://ftdichip.com/products/ft260q/) we can successfully read from our slave device, but at an effective speed lower than the clock speed would allow. The issue is pauses in between frames:

X -> Byte + ACK
_ -> Clock held low by FT260 (Pause)

XX_X_X_X_X....

See attached images. The slave device is not clock stretching as it has a weak driver and it is clearly visible by the low level of the clock when that happens. The duration of the pause at 2Mbit clock is shorter than at 400kbit.

The pauses occur during read and write.

Questions:
- Is the FT260 capable of communicating without these pauses?
- If so, how, and can it be done with the dll provided in LibFT260?

Our software Engineer has provided c++ pseudo code to illustrate what he is doing:

##############################################################
FT260_HANDLE FFT260Handle;
FT260_STATUS status;
...
uint32 kbps = 400;
int dwBytesToWrite = 7;
uint8 writeBuffer[dwBytesToWrite] = (0x01, 0x81, 0x80, 0x00, 0x00, 0xA0, 0x15);
DWORD dwBytesToRead = 14;
uint8 deviceAddress = 0x60;
uint8 readBuffer[dwBytesToRead];
DWORD dwBytesReturned;
...
    status = FT260_I2CMaster_Init(FFT260Handle, kbps);
    if (status== FT260_OK)
    {
       status= FT260_I2CMaster_Write(FFT260Handle, deviceAddress,
          FT260_I2C_START, writeBuffer, dwBytesToWrite, dwBytesWritten);
       if (status== FT260_OK)
       {
           status= FT260_I2CMaster_Read(FFT260Handle, deviceAddress,
              FT260_I2C_START_AND_STOP, readBuffer, dwBytesToRead, dwBytesReturned);     
       }
...   
    }
##############################################################

HI_type:
So, nobody has seen the FT260 communicate without those pauses? Is this a chip design issue?

FTDI Community:
Hi,

We can try this out to see if we can see the same thing,

What timebase was your scope on and so what kind of pause duration were you seeing in each case?

One thing to note is that the FT260 uses interrupt transfers which support 64Kbytes/sec (for each IN or out pipe) and so the throughput will be limited by this, this may be one factor in the delay you see. 

Best Regards, FTDI Community

HI_type:
Hello and thank you for the support :)

The time base in the 400 kBit case was 10us/div, the cursors measure the pause to be approximately 28.4us.

The pause in the 2 Mbit test is shorter: 3.8 us.

HI_type:
Hello FTDI Community

Any updates on the issue? Shall I open a service ticket somewhere?

Navigation

[0] Message Index

[#] Next page

Go to full version