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.

[参考译文] DLP2000:如何删除/隐藏 DLP 闪屏?

Guru**** 2577385 points
Other Parts Discussed in Thread: DLPA1000, DLP2000, DLPC2607, DLPDLCR2000EVM

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/dlp-products-group/dlp/f/dlp-products-forum/1378440/dlp2000-how-to-remove-hide-dlp-splash-screen

器件型号:DLP2000
主题中讨论的其他器件:DLPA1000、、 DLPC2607

工具与软件:

大家好!
我与您联系是因为我最近使用了 DLP2000投影了一条绿线。 我还在定制 PCB 中使用了 DLPC2607和 DLPA1000模块(以及其他模块)、并在代码中使用了 STM32CubeIDE 下的 STM32微控制器。 我确实成功投影了我的行、但在投影之前会短暂显示启动界面和红色屏幕。


以下是我如何显示我的图像:
-我计算我的线的位置,并存储在存储器上的 QSPI PSRAM。
-我用"HAL_GPIO_WritePin (PROJ_EXT_GPIO_Port、PROJ_EXT_Pin、GPIO_PIN_SET)"激活投影仪1ms。
-我做一个驻车镜像(1ms)然后软件重置(250ms)。 (PS:我认为这是投影期间最常显示启动界面的地方)。
-我设置分辨率(1ms)和像素格式(1ms)。
-选择并行输入源(1ms)。 这是出现红色屏幕的位置。
-最后,我在内存中显示我的行的图像。


实时操作的结果如下(视频):

e2e.ti.com/.../Bug_5F00_projector.mov

我在阅读 DLP2607的软件编程人员指南后发现可以关闭投影仪 LED (第23页)。 我对它进行了尝试、它确实会关闭图像、但在执行下一条命令后、启动界面会重新打开。
我还能够在这个论坛"DLPDLCR2000EVM:更改或删除启动界面"上读到、为了在它上面显示一个黑色图像、需要更改 DLP2000的固件。 但是、这并不能解决红屏问题、我需要对方法进行说明。

如需了解更多详细信息,下面是我用来显示该行的代码片段(FreeRTOS ):

HAL_GPIO_WritePin(PROJ_EXT_GPIO_Port,PROJ_EXT_Pin, GPIO_PIN_RESET);
stopDisplayImg();
DisableOctoSPI();

EnterQuadMode();
osDelay(5);
EraseAllPixel();

DrawLine(piezo_nb, green);
DrawCross(piezo_nb, green);

osDelay(1);
EnableMemMappedQuadMode();
osDelay(1);
HAL_GPIO_WritePin(PROJ_EXT_GPIO_Port,PROJ_EXT_Pin, GPIO_PIN_SET);
osDelay(1);

transmit_I2C(0x2D,0x01);
//sendMessage("Park Mirror\n\r", sizeof("Park Mirror\n\r"));
osDelay(1);

transmit_I2C(0x1F,0x01);
//sendMessage("Software Reset\n\r", sizeof("Software Reset\n\r"));
osDelay(250);

//freeze (doesn't work)
//	transmit_I2C(0xA6, 0x01); //black screen
//	osDelay(20);
//	transmit_I2C(0xA3, 0x01); //freeze on black screen
//	osDelay(1);

transmit_I2C(0x0C,0x13);
//sendMessage("Resolution  840 * 480\n\r", sizeof("Resolution  840 * 480\n\r"));
osDelay(1);

transmit_I2C(0x0D,0x00);
//sendMessage("DataPixel\n\r", sizeof("DataPixel\n\r"));
osDelay(1);

transmit_I2C(0x0B,0x00);
//sendMessage("Select Input Parrallele\n\r", sizeof("Select Input Parrallele\n\r"));
osDelay(1);

// unfreeze (doesn't work)
//	transmit_I2C(0xA6, 0x00);
//	osDelay(20);
//	transmit_I2C(0xA3, 0x00);
//	osDelay(1);

displayImg(QSPI_BASE_ADDR);

我希望你能帮我。
此致
——
Brieuc CLAQUIN

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、用户:

    欢迎回到 E2E 论坛、我们希望能帮助您解决您的问题。  

    请给我们的团队更多时间来调查此问题。  

    此致、

    Alex Chan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Brieuc:

    感谢您的耐心。  

    请尝试按照以下顺序倒转、即在切换输入源之前先显示输出

    [报价 userid="593927" url="~/support/dlp-products-group/dlp/f/dlp-products-forum/1378440/dlp2000-how-to-remove-hide-dlp-splash-screen ]选择并行输入源(1ms)。 这是出现红色屏幕的位置。
    -最后,我在内存中显示我的行的图像。[/报价]

    在打开 LED 之前、尝试选择并行或内部测试图形(黑屏)。

    [引用 userid="593927" url="~/support/dlp-products-group/dlp/f/dlp-products-forum/1378440/dlp2000-how-to-remove-hide-dlp-splash-screen ]我在 DLP2607的软件程序员指南上读到一篇关于可以关闭投影仪 LED 的文字(第23页)。 我试过它,事实上,它确实关闭了图像,但启动屏幕在下一个命令后重新打开。

    此致、

    Vivek

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Vivek!

    我试着做你说的,但没有成功。 投影仪仅在打开时考虑输入的命令。

    然而,我终于设法隐藏红色屏幕和闪屏与此代码:

    HAL_GPIO_WritePin(PROJ_EXT_GPIO_Port,PROJ_EXT_Pin, GPIO_PIN_RESET); // Shut down projector
    stopDisplayImg();
    DisableOctoSPI();
    
    //'0002'
    EnterQuadMode();
    osDelay(5);
    
    //'0019'
    EraseAllPixel();
    
    DrawLine(piezo_nb, green);
    DrawCross(piezo_nb, green);
    
    osDelay(1);
    EnableMemMappedQuadMode();
    osDelay(1);
    HAL_GPIO_WritePin(PROJ_EXT_GPIO_Port,PROJ_EXT_Pin, GPIO_PIN_SET); // Power up projector
    osDelay(200);
    
    //freeze
    transmit_I2C(0xA6, 0x01); //black screen
    osDelay(1);
    transmit_I2C(0xA3, 0x01); //freeze on black screen
    osDelay(1);
    
    //'0011'
    transmit_I2C(0x0C,0x13); //Resolution 840 * 480
    osDelay(1);
    
    //'0012'
    transmit_I2C(0x0D,0x00); //Pixel format RGB565 16bits
    osDelay(1);
    
    //'0013'
    transmit_I2C(0x0B,0x00); //Select Input Parrallele
    osDelay(60);
    
    displayImg(QSPI_BASE_ADDR); //Complete image
    
    // unfreeze
    transmit_I2C(0xA3, 0x00);
    osDelay(80);
    transmit_I2C(0xA6, 0x00);
    osDelay(1);


    我不知道是什么原因,但我还是不知道该怎么办了。 这种代码工作,但让我感到困惑。 事实上,我不得不在调用聚焦功能时至少留出200毫秒的时间。 为什么,当我过去只留下1ms 时,这似乎不是一个问题? 此外、使用200ms 计时器时、人眼应该会注意到并仍然看到短暂的启动界面、但事实并非如此。
    很多未回答的问题...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Brieuc:

    对于更高延迟的一种解释是、显示需要几个视频帧才能与输入端口的变化同步。 如果以30Hz 的频率运行、则帧时间约为32ms、可能需要2-3帧才能显示正确的内容。

    此致、

    Vivek