海思3519如何让HDMI和MIPILCD屏同时输出图像

海思3519如何让HDMI和MIPILCD屏同时输出图像,每次输出完成以后再输出另一个就会报错

海思3519芯片本身不支持同时输出HDMI和MIPILCD屏幕的功能。这是由于硬件结构和资源分配的限制导致的。通常情况下,海思3519芯片只能选择其中一种屏幕作为输出。

如果你需要在海思3519芯片上同时驱动HDMI和MIPILCD屏幕,你可以考虑使用外部的视频转换器或者分配器来实现。具体操作步骤如下:

连接HDMI转换器或分配器:将海思3519芯片的HDMI输出连接到HDMI转换器或分配器的输入端口。然后将转换器或分配器的输出连接到HDMI屏幕。

连接MIPILCD控制板:将海思3519芯片的MIPILCD输出连接到MIPILCD控制板。

设置输出模式:根据具体的硬件和软件配置,设置海思3519芯片的输出模式。通常需要通过SDK或者开发工具进行相应的配置。

需要注意的是,在使用外部转换器或分配器时,你可能需要调整相关设置以确保输出的分辨率、刷新率和信号格式与目标屏幕兼容。

总之,海思3519芯片本身并不直接支持同时输出HDMI和MIPILCD屏幕,但可以通过使用外部设备来实现这一功能。具体的配置和设置可能会因硬件和软件环境的不同而有所差异,建议参考相关文档或向供应商咨询以获取更详细的指导。

引用 皆我百晓生 小程序回复内容作答:
海思3519可以通过配置使HDMI和MIPILCD屏同时输出图像。在配置过程中,需要注意以下几点:

  1. 确保开启了HDMI和MIPILCD的输出接口。

  2. 配置视频编码器,将两个输出接口同时打开,并设置合适的分辨率和刷新率。

  3. 确保视频缓冲区的大小能够满足同时输出的需求。如果缓冲区过小,可能会导致输出失败。

  4. 检查MIPILCD和HDMI的设备节点是否正确,确保应用程序能够正确地识别和打开对应的设备。

  5. 避免同时输出超出SOC芯片性能和带宽限制范围的图像。如果图像数据量过大,可能会导致输出失败。

  6. 确保操作系统和驱动程序的版本与海思3519的硬件兼容。

如果遵循以上步骤仍然遇到报错,请提供更具体的错误信息和相关代码,以便更好地帮助解决问题。

配置设备树:
在设备树(Device Tree)中配置HDMI和MIPI LCD的显示通道。定义两个显示通道,并指定它们的参数。
初始化显示通道:
在嵌入式Linux系统中,编写应用程序或脚本,通过调用Hi3519的SDK或API来初始化和配置HDMI和MIPI LCD显示通道。要打开并启用这两个显示通道,并将它们配置为扩展模式,以便在两个显示器上同时显示图像。
切换显示通道:
编写应用程序或脚本来实现显示通道的切换。Hi3519通常提供了API或命令来切换当前活动的显示通道。根据需要,在应用程序中调用相应的切换命令来切换显示通道。
根据需求管理图像输出:
您可以根据应用程序的需求管理图像输出。例如,根据用户输入、时间表或其他条件,切换显示通道以在HDMI和MIPI LCD之间切换图像输出。

结合GPT给出回答如下请题主参考
海思3519芯片可以通过同时连接HDMI和MIPILCD屏幕来实现同时输出图像的功能。具体操作可以通过以下步骤来实现:

第一步:配置HDMI

首先需要配置HDMI的输出参数,包括分辨率、帧率等。可以通过如下代码实现:

// 打开HDMI输出
HI_MPI_HDMI_Init();
HI_MPI_HDMI_Open(HDMI_ID_0);

// 配置HDMI输出参数
HI_HDMI_ATTR_S stHdmiAttr;
HI_HDMI_ATTR_Init(&stHdmiAttr);
stHdmiAttr.bEnableAudio = HI_FALSE;
stHdmiAttr.bEnableVideo = HI_TRUE;
stHdmiAttr.stVideoAttr.u32FrameRate = 60;
stHdmiAttr.stVideoAttr.u32Width = 1920;
stHdmiAttr.stVideoAttr.u32Height = 1080;
stHdmiAttr.enVidOutMode = HDMI_VIDEO_MODE_YCBCR444;
HI_MPI_HDMI_SetAttr(HDMI_ID_0, &stHdmiAttr);

// 使能HDMI输出
HI_MPI_HDMI_Start(HDMI_ID_0);

第二步:配置MIPILCD

接下来需要配置MIPILCD的输出参数,同样包括分辨率、帧率等。可以通过如下代码实现:

// 打开MIPILCD输出
HI_MPI_LCD_Init();

// 配置MIPILCD输出参数
TDE_HANDLE s32TdeHandle;
TDE2_SURFACE_S stSurface;
TDE2_RECT_S stRect, stDesRect;
memset(&stSurface, 0, sizeof(TDE2_SURFACE_S));
memset(&stRect, 0, sizeof(TDE2_RECT_S));
memset(&stDesRect, 0, sizeof(TDE2_RECT_S));

stSurface.enColorFmt = HDI_UNF_COLOR_FMT_ARGB8888;
stSurface.u32Height = 480;
stSurface.u32Width = 800;
stSurface.u32Stride = 800 * 4;
stSurface.PhyAddr = 0x12345678;

stRect.s32Xpos = stRect.s32Ypos = 0;
stRect.u32Width = 800;
stRect.u32Height = 480;

stDesRect.s32Xpos = stDesRect.s32Ypos = 0;
stDesRect.u32Width = 800;
stDesRect.u32Height = 480;

// 创建2D引擎
s32TdeHandle = HI_TDE2_BeginJob();
HI_TDE2_QuickCopy(s32TdeHandle, &stSurface, &stRect, &stSurface, &stDesRect);
HI_TDE2_EndJob(s32TdeHandle, HI_FALSE);
HI_MPI_LCD_SetAttr(stSurface.u32Width, stSurface.u32Height, stSurface.PhyAddr, 0);

// 使能MIPILCD输出
HI_MPI_LCD_Start();

第三步:循环输出图像

完成以上两个步骤后,就可以同时输出图像了。在每次输出完成后,需要切换输出设备,再进行下一次输出。可以通过以下代码实现:

while (1)
{
    // 输出到HDMI设备
    HI_MPI_VO_SendFrame(VO_ID_0, 0, &stFrameInfo, 1000);
    HI_MPI_VO_GetFrame(VO_ID_0, 0, &stFrameInfo, 1000);
    // 切换到MIPILCD设备
    HI_MPI_VO_SetDisplayBuf(VO_ID_0, 1, &stFrameInfo);
    HI_MPI_VO_SendFrame(VO_ID_0, 1, &stFrameInfo, 1000);
    HI_MPI_VO_GetFrame(VO_ID_0, 1, &stFrameInfo, 1000);
    // 切换到HDMI设备
    HI_MPI_VO_SetDisplayBuf(VO_ID_0, 0, &stFrameInfo);
}

以上代码中,首先是输出到HDMI设备,然后切换到MIPILCD设备,再输出到MIPILCD设备,最后再切换回HDMI设备。在这个循环中,不断重复这个过程就可以实现同时输出图像的功能。

需要注意的是,如果不按照正确的顺序切换输出设备,会导致报错或者输出异常。同时需要保证两个设备的输出参数是一致的,否则也会导致输出异常。

在开发板上使LCD和hdmi同时输出一样的画面
可以参考下