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.

DFI write flow can't complete

Other Parts Discussed in Thread: BQ27541

I am writing software for DFI programming of  bq27541 and am following the document SLUA504A and figures 8, 9, and 10.  Everything works fine until I get to programming back the IF rows in figure 10.  I write row 1 and then row 0, calculate checksum and try to do the following two checksum commands:

CMD (0x64)  DATA (LSB of checksum)

CMD (0x65)  DATA (MSB of checksum)

When I send these commands I get an error 6 for the first line and error 772 for the second.  These steps are also done earlier in the procedure and are fine.

What might be the problem?

Thanks.

  • Here is more information about the above problem..

    I try to program the two rows of IF data (96 bytes each) after writing the DFI file. I try to write a block of 96 bytes as described in Figure 10 of SLUA504A.   I get the above error when I try to do the checksum commands.  The error is not the checksum value in register 0x66 but an error from communication attempt.  However, if I try to only program the first 32 byte part of the block it is fine and no error is generated.  How can I program the IF in 32 byte blocks?

  • Can you indicate if you are developing your programming to be used with the EV2300 module from TI? I need to know to see what the error codes you mention mean.

  • Are you getting the errors at the last writes to 0x64 and 0x65 just before leaving ROM mode?

  • Yes I am developing software around the EV2300 drivers.  I am using the I2CReadBlock and I2CWriteBlock functions.  When I read the IF (96 bytes) I get all the data fine, but at the end when I try to write back the two IF rows using the I2CWriteBlock function, setting the length argument to 96 bytes it does not seem to work.  The error I see is during writing of the checksum values right after writing the two IF rows.  It is not during ROM exit sequence.  I think it has to do with a problem during programing of the IF blocks.  According to the EV2300 documentation error 772 has to do with communication.  But this problem does not lock up the device.  After this I can keep reading and writing to/from the chip.

    Also, when I use this method but set the block length to 32 it works fine and I don't get these errors. 

    Can you suggest a way to write the two 96 byte IF rows that would work?

    Thanks for the response.