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.

The Arduino 2560 controls DLPC350 to software reset via the I2C interface

Other Parts Discussed in Thread: DLPC350

    I want to use the Arduino 2560 to control the DLPC350 to realize software reset. I know the I2C transaction is  just a I2C write transaction sequence, and the I2C register address is 0x13 and the data needed is 0x01( dlpu010c( P16-17 ) ). I write the command by "S 0x34 0x93( for write functions, bit 7 is set to 1) 0x01 P", but the DLPC350 is not reseted. By the way I use a chip NLSX4373(2-bit 20 Mb/s dual_dupply level translator) to translate the 5V SDA and SCL pins of Arduino to 3.3V SDA and SCL of J17 (I2C1) interface of DLPC350. At last, the version of firmware is v2.0.0.

best wishes

  • Hello,

    The I2C write transaction looks proper to me. W 0x34 0x93 0x01 should reset the controller.

    Please configure the I2C Clock = 100KHz. Now check if it works.

    If not, then connect common GND from signal from your board to the Pin #4 of J17. Check if it works.

    If not then take 3.3V signal from to to Pin#3 of J17. If it is still not working,


    I suggest you to probe the bus oscilloscope and look for ACK / NACK response from DLPC350 when it is addressed 0x34.

    Regards,
    Sanjeev
  • Hello Sanjeev,
    Thanks for your reply. I want to ask you the meaning of the “W” you mentioned in your reply. Is it the start condition (a high-to-low transition on SDA, while SCL is HIGH)? How many byte in this command in total? Whether is it 3 byte or not? (S(Start condition) 0x34 0x93 0x01 P(stop condition)). I know that the I2C bus frequence is up to 400kHz (dlpu010c (P6)), are you sure the master I2C frequence can impact the communication between Arduino 2560 and DLPC350? By the way, the Arduino code ":Wire.beginTransimission(addr)" is to search the slave device, If the "S 0x34" can be replaced by the code "Wire.beginTranmission(0x34)"?
  • Hi,

    W - I meant a write transaction, I am not familiar with Arduino 2560 programming, it should be like S 0x34 0x93 0x01 P. To really see why it is not working, looking at the bus signal on the oscilloscope is easier and quicker.

    Yes, we suggest to run at 100KHz, in the text Rev on DLPC350 PG we are changing the specification, I2C1 slave can work upto 100KHz. DLPC350 not respond at 400KHz.

    Regards,
  • Dear All,

    There was problem in the hardware setup when we tested the controller that prevented device responding upto 100KHz only.
    We now confirm that the device is capable of running beyond normal speed > 100KHz. For this it is very important the right pull-up resistors are selected to operate at this speed. For the pull-up resistors calculation you can refer to general I2C bus-specification.

    Regards,
    Sanjeev