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.

Compiler/DLPC900: Uploading images through Matlab inconsistent, TI software inconsistent with programmer's guide on command byte max length

Part Number: DLPC900

Tool/software: TI C/C++ Compiler

Hello! I am currently a graduate research assistant working with the DLPC900 for a research project involving uploading image patterns in sets of ideally 1024 images to the device in pattern-on-the-fly mode. The project is in the field of condensed matter physics and involves a pump-probe experiment, but for the purposes of this issue, the details are not as essential in that regard. I wanted to try and look for help on the TI forums because of some issues I’d been having with trying to send these images to the DLPC900 utilizing Matlab instead of the DLPC Lightcrafter software, as we cannot use the software to receive the proper return measurements we desire.

I have been using the hidapi implementation created by Peter Cooke and the DMD toolbox created by Klaus Hueck to communicate with the device. I’m unsure how best to include that code here on the forum, but I will add a link to a github holding the code at the bottom if anyone is willing to help solve this dilemma and needs more context.

Specifically for this communication, I began by writing a program based on just the Klaus Hueck command module, but found that issues were occurring trying to send more than 24 images at a time to the device, as well as the slowness of compressing the image data and running through the code at the same time. So I decided to write another program converting the command batch files recovered from the DLPC Lightcrafter software and sending those commands directly into the device in a binary format that would operate with the hidapi implementation.

I finished creating this program and found some problems when running it that I wanted to try and get some answers for here. The primary issue is that the pattern displayed on the DMD after sending a batch of 48 images consisted of partially the patterns in the images, but also patterns pre-stored in the device, which I did not ask for and I am unclear as to how these images are being displayed instead of the image data. My thought is that this issue stems from the fact that the Lightcrafter software seems to be able to send commands of up to 256 bytes, whereas in the Matlab code, as well as I believe the Programmer’s Guide, the maximum size of a single command sent is 64 bytes. This forced me to splice up the compressed image data from the original TI software into the proper size for the Matlab code, but unfortunately it did not work out exactly as intended.

I am unclear of how to fix the issue from this point, so I wanted to pose the question towards those who have been working with the device for far longer than I have. To shorten the question, I am wondering why the DLPC Lightcrafter LCR9000 GUI 4.0.1 software is able to send the DLPC900 commands of 256 bytes, whereas according to how I understood the programmer’s guide and is written in the Matlab implementation, the maximum command byte size is 64 bytes. The end goal is to be able to send the DLPC900 a batch of 1024 images all at once, which is another issue as it seems the limit is 400 images to send, but that issue is something that our group hasn’t yet been focusing on, although it would be great if people here knew how to address that as well.

I can answer any other specific questions, and below I have added links to the github directory of the hidapi implementation and Matlab connection module, as well as the code that I have created.

https://github.com/wesdeeg/Hadamard-DMD-Connection/blob/master/TI_matlab_conversion.m#L91

https://github.com/deichrenner/DMDConnect

  • Hi Wesley Deeg,

    Welcome to E2E Forum. Thanks for explaining problem in detail.

    We will look at your query and get back to you.

    Thanks,

    Shivakumar

  • Hi Wesley Deeg,

    Please see my comments below.

    The primary issue is that the pattern displayed on the DMD after sending a batch of 48 images consisted of partially the patterns in the images, but also patterns pre-stored in the device.

    
    

    --> You can clear all the Pre stored patterns in the TI Released firmware and generate firmware without any batch file and Pattern images. Refer to section 3.9.1.1 Deleting Images in DLP® LightCrafter™ 6500 and 9000 Evaluation Module (EVM) User's Guide

    --> Check From the GUI, in Pattern on the Fly or Pre-Stored pattern mode, if you are able to send batch of 48 images and Data are displayed properly on the DMD. Share GUI Screenshots/ Recorded batch file to analyze further.

    My thought is that this issue stems from the fact that the Lightcrafter software seems to be able to send commands of up to 256 bytes, whereas in the Matlab code, as well as I believe the Programmer’s Guide, the maximum size of a single command sent is 64 bytes. 

     --> The DLPC900 internal command buffer has a maximum of 512 bytes and it is shared between the Read and Write commands; refer to section 1.1.1.4 DLPC900 Sub-Address and Data Bytes in DLPC900 Programmers Guide for more details.

    The end goal is to be able to send the DLPC900 a batch of 1024 images all at once, which is another issue as it seems the limit is 400 images to send,

    --> Please Refer to similar thread on this topic. DLPLCR9000EVM: Maximum external input pattern rate

    Thanks,
    Shivakumar