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.

DLPDLCR230NPEVM: single LED firmware needed

Part Number: DLPDLCR230NPEVM
Other Parts Discussed in Thread: DLPC3436, DLP230NP,

Hello,

I read your resolution for the linked problem and I think it would benefit me too.

I am using the DLP Light Crafter 230NP evaluation module and I am trying to disable two LEDs and only use the red LED as a monochromatic light source.

Is there a single-LED version of the firmware for the DLP3436 too? If so where can I find it?

Many thanks,

Valentina

  • Hello Valentina,

    Welcome to DLP forum and thank you for your interest in DLP technology.

    Single LED feature is supported by our Advance Light Control Product line.

    https://www.ti.com/dlp-chip/advanced-light-control/overview.html

    The DLP230NP + DLPC3436 chipset are targeted for video and display application.  Single LED configuration is not supported in this product line.

    regards,

    Vivek

  • Hello Vivek,

    Many thanks for letting me know.

    I have read on the DLPC3436 Programmer's guide  the following commands to disable the blue and green LED and enable only the RED one:

    register 52h

    bit 2 (Write) 0h = Blue LED disabled

    bit 1 (Write) 0h = Green LED disabled

    bit 0 (Write) 1h = Red LED enabled

    Could I just write these commands on a batch file to enable/disable LEDs or do I have to implement it in another way? If so how?

    Many thanks for your help,

    Valentina

  • Hi Valentina,

    Yes this is a feasible approach.

    How are you interfacing with the DLPDLCR230NPEVM ? If using a RaspberryPi (w/ python scripts), then you can write a script to execute on start-up with the following python command:

    # Write Rgb Led Enable
    Summary = WriteRgbLedEnable(True, False, False)

    Similarly, a script can be written to execute the batch file. Please review the python API for this EVM here: https://www.ti.com/tool/DLPDLCR230NPEVM#order-start-development. You will be able to see the list of commands and a sample script to write to the EVM.

    Thank you,

    Chris

  • Hi Chris,

    Many thanks for this, I am using a Raspberry Pi and wrote a script like you suggested, but it seems to produce two vertical red bands instead of a full red screen, do you know why this is?

    I am attaching my full script and a picture (link below) of what comes out of the projector so you can get a better idea.

    ###########################################################################################################################################################################
    # Texas Instruments DLP LightCrafter 230NP EVM Python Support Code - sample00_template.py - Last Updated June 4th, 2020
    # This script is intended to be used with the DLPDLCR230NP EVM on a Raspberry Pi 4 (or compatible)
    # It is recommended to consult the DLPDLCR230NPEVM User's Guide for more detailed information on the operation of this EVM
    # For technical support beyond what is provided in the above documentation, direct inquiries to TI E2E Forums (http://e2e.ti.com/support/dlp)
    # 
    # Copyright (C) 2020 Texas Instruments Incorporated - http://www.ti.com/ 
    # 
    # Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 
    # 
    # Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
    # 
    # Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation 
    # and/or other materials provided with the distribution.
    # 
    # Neither the name of Texas Instruments Incorporated nor the names of its contributors may be used to endorse or promote products derived from this software 
    # without specific prior written permission.
    # 
    # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
    # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 
    # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
    # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    #
    ###########################################################################################################################################################################
    import struct
    import time
    
    from enum import Enum
    
    import sys, os.path
    python_dir = (os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
    sys.path.append(python_dir)
    from api.dlpc343x_xpr4 import *
    from api.dlpc343x_xpr4_evm import *
    from linuxi2c import *
    import i2c
    
    class Set(Enum):
        Disabled = 0
        Enabled = 1
    
    def main():
    
            gpio_init_enable = False         # Set to FALSE to disable default initialization of Raspberry Pi GPIO pinouts. TRUE by default.
            i2c_time_delay_enable = False    # Set to FALSE to prevent I2C commands from waiting. May lead to I2C bus hangups with some commands if FALSE.
            i2c_time_delay = 0.8             # Lowering this value will speed up I2C commands. Too small delay may lead to I2C bus hangups with some commands.
            protocoldata = ProtocolData()
    
            def WriteCommand(writebytes, protocoldata):
                '''
                Issues a command over the software I2C bus to the DLPDLCR230NP EVM.
                Set to write to Bus 7 by default
                Some commands, such as Source Select (splash mode) may perform asynchronous access to the EVM's onboard flash memory.
                If such commands are used, it is recommended to provide appropriate command delay to prevent I2C bus hangups.
                '''
                # print ("Write Command writebytes ", [hex(x) for x in writebytes])
                if(i2c_time_delay_enable): 
                    time.sleep(i2c_time_delay)
                i2c.write(writebytes)       
                return
    
            def ReadCommand(readbytecount, writebytes, protocoldata):
                '''
                Issues a read command over the software I2C bus to the DLPDLCR230NP EVM.
                Set to read from Bus 7 by default
                Some commands, such as Source Select (splash mode) may perform asynchronous access to the EVM's onboard flash memory.
                If such commands are used, it is recommended to provide appropriate command delay to prevent I2C bus hangups.
                '''
                # print ("Read Command writebytes ", [hex(x) for x in writebytes])
                if(i2c_time_delay_enable): 
                    time.sleep(i2c_time_delay)
                i2c.write(writebytes) 
                readbytes = i2c.read(readbytecount)
                return readbytes
    
            # ##### ##### Initialization for I2C ##### #####
            # register the Read/Write Command in the Python library
            DLPC343X_XPR4init(ReadCommand, WriteCommand)
            i2c.initialize()
            if(gpio_init_enable): 
                InitGPIO()
            # ##### ##### Command call(s) start here ##### #####
    
            # Enable red LED and disable blue and green ones
            Summary = WriteRgbLedEnable(True, False, False) 
    
            # ##### ##### Command call(s) end here ##### #####
            i2c.terminate()
    
    
    if __name__ == "__main__" : main()
    
    
    

    vertical red bands picture

  • Hi Valentina,

    There is no issue with the code. I have a few questions:

    1. What test pattern is expected to display ?

    2. What is the input source for the DLPC3436 ? 

    For attaching images, please attach the image directly to the message and not link a google drive.

    Thank you,

    Chris

  • Hi Chris,

    I was expecting an all-red filled screen, as the red LED is the only one enabled.

    What do you mean as the input source for the DLPC3436? I am using the I2C interface if that's what you mean.

    Many thanks for your help,

    Valentina

  • Hi Valentina,

    different patterns will display depending on the input source. If you wish to display an all-red screen, you will need to display Test Pattern solid red field. Please see the programmer's guide for reference: https://www.ti.com/lit/ug/dlpu078/dlpu078.pdf, or use the python API provided. The pseudocode for setting up solid field TPG will be something like this:

    WriteXprTestPatternSelect(SolidField, White, BorderDisable);
    WriteSourceSelect(TestPatternGenerator_fromXprFpga);

    Thank you,

    Chris