Replies: 17
Views: 210
Part Number: DLP4710EVM-LC
Hi TI,
I have some questions regarding DLP4710EVM-LC, could you please give me a hand?
I want to project a series of 2D images (not vertical or horizontal lines) and want to know my option is with 4710EVM-LC.
(1) Can 4710 EVM-LC store more than 4 splash images (GUI only shows 4 but how many images or size can it store)?
(2) If I project a series of images (single color, I think I can set bit depth to 1, frame by frame from PC), using external pattern mode (via HDMI). Will projector detect the image (frame) change and set trigger 1 to high at the beginning of each new frame? How many frames can I project in 1s?
Thanks!
Derlin
Derlin,
The DLPC3479 chipset can store any number of splash screens so long as the flash memory implemented in the system is large enough. In the case of the 4710-LC EVM, however, it is set up to only accept four splash screens. If you were to design a custom board you could use a larger flash memory with more splash screens.
As for the frame rate, the DLPC3479 chipset supports high-speed pattern rates up to 1440 Hz (1- bit) and 180 Hz (8-bit) in external video mode. This is accomplished by inputting standard 60 Hz frames over the HDMI input with the 24 bits of RGB data packed with encoded patterns. For example, with 8-bit pattern mode you would have each color (R,G,B) present an 8-bit pattern during the 60 Hz frame, which is decoded by the DLPC3479 to result in an effective pattern rate of 180 Hz on the DMD output.
I hope this helps.
Regards,
Philippe Dollo
--------------------------------------------------------------------------------------------------------
If a post answers your question, please click the "Verify Answer" button.
Have questions about DLP Pico Chipsets? Check out the DLP Pico Universal FAQ for quick answers: https://e2e.ti.com/support/dlp/f/94/t/946506
In reply to Philippe Dollo:
Hi Philippe,
Thanks for your answer.
I know the patterns will be fed from HDMI port, however I don't understand how to compress several patterns in one frame? How can projector know when to send out trigger 1 (between frame) or trigger 2 (between pattern) as below.
We are using OpenCV "imshow", is that correct tool to do it?
In reply to Derlin Chow:
Hi Derlin,
Thank you for your patience on the coming support.
Your inquiry on pattern compression is important to us, but our team will likely be unable to reply until the new year.
Kind regards,
Austin
In reply to Austin Snyder:
I recommend you start by looking at section 8.3.1.1 of the DLPC3479 datasheet for discussion on this topic:
https://www.ti.com/lit/ds/symlink/dlpc3479.pdf
Next, you should look at our FAQ on Light Control EVMs:
https://e2e.ti.com/support/dlp/f/94/t/729968
Each of the 24 bits in an RGB888 video signal in your case are being repurposed to encode/represent the 24 individual patterns being displayed. Instead of displaying each bit for a different amount of time, the DLPC3479 chipset will present each bit as an individual pattern for the set exposure time. By encoding the patterns as individual its (from R[0] to R[8], G[0] to G[8], B[0] to B[8]) it becomes easy to transmit the patterns over a standard HDMI transceiver.
The DLPC3479 knows the timing it needs to provide for each bit, so it thus knows (based on your GUI configuration) when to issue each trigger out signal.
Let me know if you want to go into any depth on the above topic. I hope this helps.
Thanks for your reply.
I still don't have any clue on how to project external 2-D patterns via HDMI . Do you have an example on how you do it?
We usually send out pictures to projector using OpenCV imshow() function, but I don't think it is correct. How do you encode 3 patterns in one frame?
Hello Derlin,
Thank you for your patience. We will respond to your questions by the end of the week.
Having 3 8-bit patterns (or 24 1-bit patterns) per 60 Hz frame is feasible because with a DLP Light Control system, each of the 24 bits are displayed on the DMD as individual bit planes discretely. For example, the entirely of the DMD will at a point in time be displaying the contents of Green Bit 0, and another time will display Red Bit 7.
In order to send your 8-bit patterns through the HDMI interface (with OpenCV or whatever video source you choose to use) you will essentially be encoding each of the three patterns as one of the three RGB LED colors. You would generate an image with an 8-bit Red pattern, 8-bit Green pattern, and 8-bit Blue pattern within the same image frame and sent it all at once as a single RGB888 24-bit packet to the DLPC3479 system.
Thank you for your reply, I tried the following code but nothing happen, could you please take a time to look it?
CY_I2C_CONFIG cyI2CConfig; CY_DATA_BUFFER cyDataBuffer; CY_I2C_DATA_CONFIG cyI2CDataConfig; unsigned char readBuffer[4096], writeBuffer[4096]; // TI projector address cyI2CDataConfig.slaveAddress = 0x1B; memset(writeBuffer, 0x00, 4096); cyDataBuffer.buffer = writeBuffer; cyDataBuffer.buffer[0] = 0x52; // LED disable cyDataBuffer.buffer[1] = 0x00; // cyDataBuffer.length = 2; rStatus = CyI2cWrite(handle, &cyI2CDataConfig, &cyDataBuffer, timeout); if (rStatus != CY_SUCCESS) { printf("LED Diable fail \n"); } sleep(0.5);
// Load image to code cv::Mat test_1 = cv::imread("1.png"); memset(writeBuffer, 0x00, 4096); cyDataBuffer.buffer = writeBuffer; cyDataBuffer.buffer[0] = 0x96; // cyDataBuffer.buffer[1] = 0x00; // 1 bit mono cyDataBuffer.buffer[2] = 0x01; // One patten cyDataBuffer.buffer[3] = 0x01; // Red cyDataBuffer.buffer[4] = 0x10; // Illuminatiom time 1st byte 10ms cyDataBuffer.buffer[5] = 0x27; // Illuminatiom time 2nd byte cyDataBuffer.buffer[6] = 0x00; // Illuminatiom time 3rd byte cyDataBuffer.buffer[7] = 0x00; // Illuminatiom time 4th byte cyDataBuffer.buffer[8] = 0xB8; // Pre-Dark 1st byte 3ms cyDataBuffer.buffer[9] = 0x0B; // Pre-Dark 2nd byte cyDataBuffer.buffer[10] = 0x00; // Pre-Dark 3rd byte cyDataBuffer.buffer[11] = 0x00; // Pre-Dark 4th byte cyDataBuffer.buffer[12] = 0x03; // Post-Dark 1st byte 3ms cyDataBuffer.buffer[13] = 0x96; // Post-Dark 2nd byte cyDataBuffer.buffer[14] = 0x03; // Post-Dark 3rd byte cyDataBuffer.buffer[15] = 0x03; // Post-Dark 4th byte cyDataBuffer.length = 16; rStatus = CyI2cWrite(handle, &cyI2CDataConfig, &cyDataBuffer, timeout); if (rStatus != CY_SUCCESS) { printf("Write Fail \n"); } sleep(0.5); memset(writeBuffer, 0x00, 4096); cyDataBuffer.buffer = writeBuffer; cyDataBuffer.buffer[0] = 0x05; // light control-external pattern cyDataBuffer.buffer[1] = 0x03; // cyDataBuffer.length = 2; rStatus = CyI2cWrite(handle, &cyI2CDataConfig, &cyDataBuffer, timeout); if (rStatus != CY_SUCCESS) { printf("External pattern setting fail \n"); } sleep(0.5); memset(writeBuffer, 0x00, 4096); cyDataBuffer.buffer = writeBuffer; cyDataBuffer.buffer[0] = 0x92; // trigger out setting cyDataBuffer.buffer[1] = 0x03; // selete trigger 2 (bit0=1) enable (bit1=1) Not inverted (bit2=0) 00000-011 cyDataBuffer.buffer[2] = 0x00; // Not delay 4 bytes cyDataBuffer.buffer[3] = 0x00; cyDataBuffer.buffer[4] = 0x00; cyDataBuffer.buffer[5] = 0x00; cyDataBuffer.length = 6; rStatus = CyI2cWrite(handle, &cyI2CDataConfig, &cyDataBuffer, timeout); sleep(0.5);
cyDataBuffer.buffer[0] = 0x52; // LED Enable cyDataBuffer.buffer[1] = 0x07; // cyDataBuffer.length = 2; rStatus = CyI2cWrite(handle, &cyI2CDataConfig, &cyDataBuffer, timeout); if (rStatus != CY_SUCCESS) { printf("LED Enable fail \n"); }
//Project pattern cv::imshow("1",test_1);
The pattern is as below, I tried 1bit mono (on or off) in red.
Is there anything I need to add?