IMX8MQ 摄像机 mipi 问题 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
您好, 我正在 imx8mq-EVK 板上开发摄像头 mipi 驱动程序,我的摄像机输出数据是 RAW-10 位。 当我参考 ov5640 驱动程序代码时,我遇到了以下问题。 1. 在 “驱动程序/媒体/平台//mxc/捕获/mx6s_捕获.c” 中,有一些寄存器如下所示,但我无法在参考手册中找到有关以下寄存器的任何线索。(来自查看代码,我知道这些寄存器的基地址是0x0x30A90000) #define CSI_CSICR1 0x0 #define CSI_CSICR2 0x4 #define CSI_CSICR3 0x8 #define CSI_STATFIFO 0xC #define CSI_CSIRXFIFO 0x10 #define CSI_CSIRXCNT 0x14 #define CSI_CSISR 0x18 #define CSI_CSIDBG 0x1C #define CSI_CSIDMASA_STATFIFO 0x20 #define CSI_CSIDMATS_STATFIFO 0x24 #defineCSI_CSIDMASA_FB1 0x28 #define CSI_CSIDMASA_FB2 0x2C #define CSI_CSIFBUF_PARA 0x30 #define CSI_CSIIMAG_PARA 0x34 #define CSI_CSICR18 0x48 #define CSI_CSICR19 0x4c 2. 同样的问题,在参考手册中找不到有关以下寄存器(0x180~0x198)的任何介绍。(基地地址为 0x30A70000)。 in"driver/media/platform/imx8/mxc-mipi-csi2_yav.c" 、 printk("MIPI CSI2 HC IGNORE_VC 0x180 = 0x%x\n", readl(csi2dev->base_regs + 0x180)); printk("MIPI CSI2 HC VID_VC 0x184 = 0x%x\n", readl(csi2dev->base_regs + 0x184)); printk("MIPI CSI2 HC FIFO_SEND_LEVEL 0x188 = 0x%x\n", readl(csi2dev->base_regs + 0x188)); printk("MIPI CSI2 HC VID_VSYNC 0x18C = 0x%x\n", r eadl(csi2dev->base_regs + 0x18C)); printk("MIPI CSI2 HC VID_SYNC_FP 0x190 = 0x%x\n", readl(csi2dev->base_regs + 0x190)); printk("MIPI CSI2 HC VID_HSYNC 0x194 = 0x%x\n", readl(csi2dev->base_regs + 0x194)); printk("MIPI CSI2 HC VID_HSYNC_BP 0x198 = 0x%x\n", readl(csi2dev-base_regs + 0x198)); 3. 在参考手册中,提到了一些 " 数据类型 ",如下所示, " 13.6.3.6.4 RAW10(数据类型 = 0x2B)" 如何将值 0x2B 设置为数据类型? 我的参考手册版本是: 名称:i.MX 8M 双/8M 四极管/8M 四核应用处理器参考手册 文件编号:IMX8MDQLQRM 修订版 0, 01/2018 i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: IMX8MQ Camera mipi Question 我曾在多个 i.MX8MQ MIPI-CSI 启动器上看到过这种确切的行为--驱动程序通常看起来很好,但当显示/HDMI 端启动时,由于 CSI-2 通道映射、数据类型或时钟树中的细微问题而发生故障。 在 i.MX8MQ 上,CSI-2 接收器的要求极为严格: 正确的数据类型匹配(RAW10 vs RAW8 vs YUV422) 正确的车道极性 + 映射 DISP/HDMI PLL 切换后,传感器时钟保持稳定 正确的 pinctrl(许多板在 GPIO 模式下意外离开了数据通道) 如果出现上述任何一种不匹配情况,CSIS 块会保持 "流 "状态,但会静默地丢弃所有数据包--看起来与您描述的情况非常相似。 作为参考,以下是我们开发的一些上游 MIPI/CSI 摄像头驱动程序,它们显示了在 i.MX8 级 SoC 上通常可以解决这个问题的确切的 DT 模式和 CSI 设置顺序: Linux-next https://web.git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=fa9e6df636fb8b3b27570f38c53640c9e2b02f79中的 MIPI 传感器驱动程序示例 Zephyr 中的另一个传感器(用于比较 MIPI/时钟序列) https://github.com/zephyrproject-rtos/zephyr/commit/c784481ca039ccd606a192ee07bc83f6b0117e59 媒体管道更新示例(CSI 路由 + 格式协商) https://web.git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=9d382f6a9978916317b3fb4ef07b5fec684adde0 如果您正在设计完整的相机流水线(传感器 → MIPI → CSI-2 → ISP/显示屏),本深入探讨可能会对您有所帮助: https://siliconsignals.io/blog/v4l2-camera-stack-step-by-step-guide-for-custom-devices/ https://www.kernel.org/doc/html/v4.9/media/kapi/v4l2-intro.html Re: IMX8MQ Camera mipi Question <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
你好
[email protected]、 您能详细说明需要做哪些更改才能解决这些问题吗? 对我来说,每个像素都缺少 4 位。我已经为我的问题启动了一个主题。请看一看。 https://community.nxp.com/message/1195672 提前感谢! 瓦西姆 Re: IMX8MQ Camera mipi Question <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
您好, 我也遇到了同样的问题。 有人在接收 10 位系统时解决了这个问题吗? 此致, 雅各 Re: IMX8MQ Camera mipi Question <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
你好
[email protected]、 您能分享一些关于如何解决该问题的信息吗?我问这个问题是因为我们也面临着类似的问题,如果能了解更多关于你们如何解决问题的信息就更好了。是平台方面的问题还是传感器方面的问题? 提前感谢! 锡瓦拉姆 Re: IMX8MQ Camera mipi Question <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
你好,伦卡、 感谢您的答复。 我已经解决了这个问题。 还有一个问题令我困惑 、 我一直认为 MIPI CSI 驱动程序每帧应该接收 1280000 字节(1280*800*10 位/8),但实际上是 1024000 字节(1280x800)。我不知道原因。 根据 RM (imx6) 如下所示,对于 RAW10,数据大小应为 (n * 像素 * 5/4) 字节。 Re: IMX8MQ Camera mipi Question <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
嗨,杨、 我不建议你在设备树中更改 MIPI PHY 时钟。你写道,你的摄像机是 1280x800,60fps,灰色 10 位。双通道,我想电路板支持包。不直接支持这个配置。你还写道,一段时间后图像就错位了。根据我的经验,如果没有为给定的分辨率正确设置摄像机寄存器,如果相机时钟不稳定,就会发生这种情况。尽管如此,你不需要使用 iMX6 文档/源代码来获得 iMX8 系列微控制器。你能不能提供 0x3800 ~ 0x3815 和 0x3035 ~ 0x3037 范围内的寄存器设置? 我在将 720p 分辨率设置为 60fps 时也遇到了问题。我将尝试联系相机所有者,寻求有关此类配置的帮助。 亲切的问候, Lenka Re: IMX8MQ Camera mipi Question <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
你好,伦卡、 感谢您的帮助。 目前,我能收到一张完整的图像,但图像并不稳定。1 分钟后,图像将错位。相机传感器供应商建议修改 MIPI-CSI 像素时钟,如您所知,RM 中没有关于 MIPI CSI 的有用信息。我在恩智浦网站上找到了一些文件,如下所示,但我仍然很困惑,因为这些文件是针对 iMX6 的。 https://www.nxp.com/files-static/32bit/doc/app_note/AN5305.pdf 根据该文件、 我尝试修改 "IMX8MQ_CLK_CSI1_PHY_REF_DIV "为<178560000> ,但在 linux 系统文件中验证后发现并不匹配。 我的问题是 、 1.IMX8MQ_CLK_CSI1_PHY_REF_DIV " 是 MIPI 时钟,对吗? 2 'IMX8MQ_CLK_CSI1_CORE_DIV' 和'IMX8MQ_CLK_CSI1_ESC_DIV' , 用途是什么? 3.如何修改 'IMX8MQ_CLK_CSI1_PHY_REF_DIV' 的值,使其完全符合我的要求? 我的相机是 1280x800、60fps、灰色 10 位。双车道 我还评论了 "基地址切换 "功能,否则内核将打印"基地址切换更改错误" 。我不确定这种行为是否必要。 谢谢。 杨青 Re: IMX8MQ Camera mipi Question <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
嗨,杨、 1.这些寄存器与 iMX8 上实现的任何寄存器都不匹配。 2.iMX8 尚不支持这些寄存器。 3.数据类型禁用寄存器(偏移量0x38)用于输入数据类型重设,但可以忽略。如果将摄像头和 ISI 寄存器正确设置为目标数据类型,那么也应该可以正常工作。 如果您还有其他问题,请随时提出。 祝你好运 伦卡 Re: IMX8MQ Camera mipi Question <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
嗨,杨 关于 1. iMX8M MIPI-CSI 4 通道配置 对于其他问题(未在参考手册中描述),可能建议 向 NXP 当地营销办事处申请。注意,将有新的参考手册修订版 提供最新信息。 问候 igor ----------------------------------------------------------------------------------------------------------------------- 注:如果本帖回答了您的问题,请点击 "正确答案 "按钮。Thank you! -----------------------------------------------------------------------------------------------------------------------