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.

FDC2214: register read speed

Part Number: FDC2214
Other Parts Discussed in Thread: FDC1004, FDC2112

Hi Team,

Supporting a customer with FDC2214 designed in.

Looking at the datasheet Figure 16 and 17, these parts seem to only support a write-read style transfer rather than a direct read, which is unfortunate since the extra two bytes of the transfer seem to limit practical performance a bit. And it also seems to contradict the documentation for the 211x chips. They also do not seem to allow for multi-register reads.

The FDC2214 datasheet claims the following,

 That would not possible, since for an I2C write-read, a 5 byte transfer in this case, at 400KHz we could get: 


400[1/s]*(1/9)[b/B]*(1/5)[B/transfer]*(1/1)*[transfers/sample] = 8.8 ksamples/second.

However, the documentation claims 13.3 kSPS is possible.

Is there another way to read data from the chip? Attempting a multi-register read just yields a NACK, but perhaps a simple read after issuing the register address once works?

In the case of the 221x chips, it would be great if there was a more efficient way to do this than a write-read for both the MSB and LSB of every sample. In theory, that yields a sample rate of:
400[1/s]*(1/9)[b/B]*(1/5)[B/transfer]*(1/2)*[transfers/sample] = 4.4 ksamples/second.

But that is assuming perfect timing. The customers firmware has a 43-microsecond gap between I2C transfers, and is also servicing both the FDC1004 and FDC2214 on the same bus, which is limiting the sample rate to around a kilohertz. This isn’t terrible, but especially as we use more than one channel, theywould  like to get things working as good as possible.

Can feedback to get around this?

Thanks, Joey

  • Let me look at this and I will get back to you early next week.
  • Joey,

    For the FDC2112, only one register needs to be read. The device supports repeated start, so the math becomes:

    -Three frames per read command (9 bits each, serial bus address byte from master + data MSP from slave + data LSB from slave)
    - Extra bits: 1 start bit at the beginning, 1 stop bit and 1 bus free bit at the end after the NACK
    - This means there are 30 bits total

    400ksps/30 = 13.3ksps

    Unfortunately, there is no way to get around the 5 frame for each register read limitation of the FDC221x family. In this case:

    - 5 frames per register read (9 bits each for 45 total)
    - Two start bits, stop bit, and bus free bit (an extra 4 bits, bringing us to 49 total)
    - 2 registers to read per measurement (49*2 = 98 bits)

    400sps/98 = 4.08 ksps