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.

DLPC3479: DLPC-API-1.10 Sample program problem

Part Number: DLPC3479
Other Parts Discussed in Thread: DLP4710, DLPC-API

Hi everyone!

I use the Sample in DLPC-API-1.10 to run the program, namely dlpc347x_dual_samples.

As a result, the projected pattern is not a preset pattern, that is, each pattern is different from the preset pattern.

The code is shown in the figure:

The result is shown in the figure:

Is there any problem with this part of the code?

How can I make a normal pattern?

Thanks!

  • Hello,

    Welcome to TI e2e forums and thanks for showing interest in DLP technology. I would recommend you to start exploring internal pattern display functionality via GUI (https://www.ti.com/tool/DLPDLC-GUI) and then compare the flow with the API. 

    Also, kindly refer to the Light Control section of https://e2e.ti.com/support/dlp-products-group/dlp/f/dlp-products-forum/946506/faq-dlp-pico-universal-faq to find some useful information about the LC modes of DLPC347X chipsets.

    Regards,

    Mayank 

  • Thanks Reply!

    I am familiar with DLP technology and the functions of the LV EVM GUI,

    and it is normal for my projector to use internal patterns in the GUI.

    I just want to be able to use the API code to generate or change the 1D patterns ,

    instead of downloading the pattern using the GUI.

    But when I run the AIP sample program, the result is not what I want.

    I think the program has a bug, I don’t know how to deal with it

  • Hello User,

    Ultimately, the DLPC API uses the same channel (I2C) to communicate with the EVM as the GUI does. If you are encountering issues, a good first step may be to compare the I2C bus behavior with a logic analyzer to determine which commands are being sent differently in each setup. This may help determine if there is a problem with the code or not.

    Do you have a logic analyzer you can use for the same?

    Regards,
    Philippe

  • Hi,

    I think there is no problem with GUI I2C instructions.

    The API internal pattern writing function is different from the GUI pattern writing function.

    To write a pattern using GUI, it is necessary to load a picture with GUI and generate a pattern data, this data is named PatternDataFile_Dual.bin, and then GUI will write this file into FLASH.
    But I hope that without using GUI to write patterns, I directly use API functions to generate the pattern data I want, and then write it into FLASH.

    But when I use this API function to generate a pattern, the pattern produced by the projector is inconsistent with my preset pattern.

  • User,

    Thanks for the explanation. Can you share your pattern configuration scheme?

    Regards,

    Philippe

  • Hi,

    The pattern configuration scheme is from API samples,and I did not make changes.

    As follows :

    void main()
    {
    InitConnectionAndCommandLayer();

    /* TI DLP Pico EVMs use a GPIO handshake scheme for the controller I2C bus
    * arbitration. Call this method if using a TI EVM, remove otherwise
    */
    bool Status = CYPRESS_I2C_RequestI2CBusAccess();
    if (Status != true)
    {
    //printf("Error Request I2C Bus ACCESS!!!");
    return;
    }

    uint16_t PixelsPerLine, LinesPerFrame;
    DLPC34XX_DUAL_ReadInputImageSize(&PixelsPerLine, &LinesPerFrame);
    //printf("Input Image Size = 0x%x, 0x%x \n", PixelsPerLine, LinesPerFrame);

    /* ***** Change to look 0 ***** */
    WriteLookSelect(0);

    /* ***** Write Test Pattern - GridLines ***** */
    WriteTestPatternGridLines();

    /* ***** Test Internal Pattern Sensing ***** */
    bool LoadFromFile = false; // Switch to load pattern from saved file or generated

    if (LoadFromFile)
    {
    /* Load pre-build Pattern Table and Sets */
    LoadPreBuildPatternData();
    LoadPatternOrderTableEntryfromFlash();
    DLPC34XX_DUAL_WriteOperatingModeSelect(DLPC34XX_DUAL_OM_SENS_INTERNAL_PATTERN);
    DLPC34XX_DUAL_WriteInternalPatternControl(DLPC34XX_DUAL_PC_START, 0xFF);
    }
    else
    {
    bool EastWestFlip = true;
    bool LongAxisFlip = true;

    /* Prepare the data for pattern data block generation */
    PopulatePatternSetData(DLP4710_WIDTH, DLP4710_HEIGHT);
    PopulatePatternTableData();

    /* Stop pattern display */
    DLPC34XX_DUAL_WriteInternalPatternControl(DLPC34XX_DUAL_PC_STOP, 0);

    /* Generate and program the pattern data to the controller flash */
    GenerateAndProgramPatternData(DLPC34XX_INT_PAT_DMD_DLP4710, EastWestFlip, LongAxisFlip);

    /* Load Pattern Order Table Entry from Flash */
    LoadPatternOrderTableEntryfromFlash();

    /* Generate and write pattern data to a file */
    GenerateAndWritePatternDataToFile(DLPC34XX_INT_PAT_DMD_DLP4710, "pattern_data_dual.bin", EastWestFlip, LongAxisFlip);
    }

    bool StepPatterns = false;

  • User,

    Thanks for sharing. We will need a couple of days to review and will try to get back to you ASAP on the same.

    Regards,

    Philippe

  • Thank you for your reply, how is the progress?

  • User,

    No updates yet. The team is heavily backlogged at the moment. It may be a few weeks before we can do a review of your code. I apologize in advance for the inconvenience.

    Regards,

    Philippe

  • There are several ways to display test patterns from the DLPC-API. You can:

    • Load the patterns from a file by setting the LoadFromFile boolean to `true`
      • This will cause it to look for the file "pattern_data_dual_gui.bin" in the working directory
    • Display the existing patterns from the flash
      • Look at StepAllPatterns for this
    • Generate and display new test patterns (when LoadFromFile is false)
      • This calls PopulatePatternSetData to generate new pattern data. This is what you are currently doing

    It looks like PopulatePatternSetData is either creating bad test pattern data or something isn't configured correctly; your picture doesn't look like any of the test patterns that I recall. If you're wanting to generate test patterns then this is the function to change.

    What is the end result that you're looking for? Which EVM are you using?

    Thanks,

    Andrew