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.

after Initializing dlpc2607,write & read dlpc2607 i2c sequence occured some confused problem

Other Parts Discussed in Thread: DLPC2607

Hi all

    I am using dlpc2607 in my project, I design an application board with dlpc2607 & pad1000.

    I checked the power-on sequence with pad1000, I get the PARKZ & RESETZ signal's sequence conform with the dlpc2607 datasheet. But when I write i2c register like:

    write: (u8)0x36 (u8)0x0F (u32)0x01

     read: (u8)0x36 (u8)0x15 (u8)0x0F (u8)0x37 (u32)&data

    At last I get read data always (u32)0, can any one helps me?

   

  • Hi, Wei,

    The 0x0f command is long image flip. Do you see the image flip on East/Wast side?

    If yes, this means your projector is working properly. Before you do read, you first need to see flip happens with your eyes.

    The read seems to be ok, but I don't know your exact implementation. I don't know if I can tell your read is working or not. I attached a read function below which works with DLPC2607.

    // I2C read 4 bytes from DPP

    void

    read_dpp2600_i2c(uint08 addr, uint08 subaddr, uint32* data)

    {

    uint08 i2c_array[4];

    uint08 status;

    if (data == NULL)

    {

    return;

    }

    // setup the readback

    i2c_array[0] = (uint08) 0x15; //READ_REG_SELECT;

    i2c_array[1] = subaddr;

    status = I2C_PolledMasterWrite(addr, i2c_array, 2);

    // flag an error if necessary

    if (status == I2C_NO_ACK)

    {

    *data = 0;

    return;

    }

    // perform the read

    status = I2C_PolledMasterRead(addr, i2c_array, 4);

    // flag an error if necessary

    if (status == I2C_NO_ACK)

    {

    *data = 0;

    return;

    }

    // concatenate the bytes to make a word

    *data = (uint32)i2c_array[0]<<24 |

    (uint32)i2c_array[1]<<16 |

    (uint32)i2c_array[2]<<8 |

    (uint32)i2c_array[3];

    }