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.

Block Read on I2C bus of CDCE913

Other Parts Discussed in Thread: CDCE913

Hello Everyone,

If anyone has tried out block read for register readout of CDCE913 PLL chip.

I cannot get it work.

My situation is: the byte write, byte read and block write are OK, meaning i2c works fine (SCL 11kHz).

I take the programing sequence suggested by Datasheet (page12) also for block read

but whatever byte offset i set, the data i read out is always FF.

The diagnostic showed that CDCE913 in the 4th step of the sequence -readout of byte count- gives the correct block count as set previously in BCOUNT register. This means the block read command is correctly interpreted by CDCE913, but the data read out always gives FF.

If it is a software problem, the only possiblilty is that  the byte offset (in CommandCode) is wrong, but i'm sure the code for CommandCode setting is identical to byte write, byte read and block write.

So my guess is that there is an error in data sheet (revised oct 2009) or  in silicon.

Although it is harmlos to use byte read instead of block read, but i still appreciate any answer.

 

Thanks in advance

 

  • Prior to a block read, the BCOUNT has to be set to the number of bytes to be read back. It might be possible that the BCOUNT is not set correctly or that the BCOUNT is set to a greater value than the bytes available form the offset set on the command code.

     

    On the top of page 8 of the application note Troubleshooting I2C protocol, http://www.ti.com/litv/pdf/scaa106, you can find a typical comment on why a block read might not work correctly.

    “BCOUNT located in the register's address 08xh bits 7:1 sets the number of bytes that are read when

    performing a block read. A missing acknowledgment or misunderstood message can occur while

    performing a block read if the BCOUNT is set to a greater value than the bytes available from the offset

    set on the command code.”