Part Number: DLPC900
System Info
Controller: DLPC900
Firmware:6.3.0
Interface: Linux (ARM), I2C bus 1, slave address 0x1A
Reference: DLPC900 Programmer's Guide (ZHCU950J – OCTOBER 2014 – REVISED JUNE 2024)
Problem Description
We are trying to set the Minimum LED Pulse Width (ns) via I2C, but the written value has no effect on the actual projection exposure time. The same operation works correctly via the official GUI tool over USB.
What We Have Confirmed
-
I2C communication is working
-
I2C bus scan shows device at address 0x1A responds correctly
-
We can successfully read registers via I2C
-
We can read back the value we wrote to 0x67, confirming the I2C write ACK is received
-
USB works correctly
-
The official GUI tool (USB HID) can successfully set LED Pulse Width and the projection changes accordingly
-
USB capture confirms the command sent is CMD2=0x1A, CMD3=0x43, with 4-byte LE payload
- I2C write appears to succeed but has no effect
But by using USB to write and then I2C to read, the shortest exposure time set by USB can be read
So I would like to ask, is there a problem with the register I am writing to? I tried using i2cTransfer to write data to registers 0x62 and 0x67, but when I read the data using i2c, I found that it did not take effect. We have tried the following methods sudo i2ctransfer -y 1 w5@0x1A 0x62 0x88 0x13 0x00 0x00 sudo i2ctransfer -y 1 w5@0x1A 0x67 0x88 0x13 0x00 0x00 sudo i2ctransfer -y 1 w2@0x1A 0x62 0x88 sudo i2ctransfer -y 1 w2@0x1A 0x67 0x88 Then use sudo i2ctransfer -y 1 w1@0x1A 0x63 r16 sudo i2ctransfer -y 1 w1@0x1A 0x65 r16 After completing the USB settings, the above command is also used for reading.