HDMI输入转MIPI接口

云深之无迹 2022-01-08 22:21


先说这个东西有什么用,可以把市面上支持输出HDMI的运动相机转成树莓派的CSI接口,然后可以借助Linux强大的生态来捕获视频。至于应用,那可太多了。


官方点的说法是:


HDMI 到 CSI 摄像头端口适配器,HDMI 输入支持高达1080p@30fps ,向后兼容。它允许您使用 HDMI 摄像头,就像标准的 Raspberry Pi CSI 摄像头一样,支持所有版本的 Raspberry Pi 系列板。


4B

Capturesudo raspistill -o image-01.jpgRecordsudo raspivid -o video-01.h264 -t 10000

有图有真相,就像下面这样:



这是狗5?




自然相机也少不了啊



就像这样



放大一点看



正面



背面



在这个TM的物价飞涨的世界里面,幸亏以前有买板子


其实为了文章的完整性,我这里想插一些关于这个相机接口的定义的内容。



就是这个相机的接口,其实我们知道,上面的东西就是模拟了相机的视频信号,遵循了固定的协议。



前面是V1的相机,后面是V2的。



一模一样,一共15个



中文接口



英文接口





因为Zero的小巧,所以单独的说说



确实是这样的


另外我想写一下关于这个树莓派捕获视频的应用。


关于树莓派新系统二三事(Bullseye)我前几天也写过这个,新的OS都是把里面换成了开源的实现,SO,我们就用以前的版本。


raspistill 是用于使用 Raspberry Pi 相机模块捕获静态照片的命令行工具。


用法:RaspiStill [选项]

图像参数命令

-?, --help :此帮助信息

-w, --width : 设置图片宽度

-h, --height : 设置图片高度

-q, --quality : 设置 jpeg 质量 <0 到 100>

-r, --raw :将原始拜耳数据添加到 jpeg 元数据

-o, --output : 输出文件名 (要写入标准输出,请使用'-o -')。如果未指定,则不保存文件

-v, --verbose : 运行时输出详细信息

-t, --timeout : 拍照和关机前的时间(以毫秒为单位)(如果没有指定,设置为 5s)

-th, --thumb : 设置缩略图参数 (x:y:quality)

-d, --demo : 运行演示模式(循环通过一系列相机选项,不捕获)

-e, --encoding : 用于输出文件的编码 (jpg, bmp, gif, png)

-x, --exif : 应用于捕获的 EXIF 标记(格式为 'key=value')

-tl, --timelapse :延时摄影模式。每拍一张多发性硬化症

预览参数命令

-p, --preview : 预览窗口设置

-f, --fullscreen :全屏预览模式

-n, --nopreview : 不显示预览窗口

图像参数命令

-sh, --sharpness :设置图像清晰度(-100 到 100)

-co, --contrast :设置图像对比度(-100 到 100)

-br, --brightness :设置图像亮度(0 到 100)

-sa, --saturation :设置图像饱和度(-100 到 100)

-ISO, --ISO : 设置捕获 ISO

-vs, --vstab : 开启视频稳定

-ev, --ev : 设置 EV 补偿

-ex, --exposure :设置曝光模式(见注释)

-awb, --awb : 设置 AWB 模式(见注释)

-ifx, --imxfx :设置图像效果(见注释)

-cfx, --colfx : 设置颜色效果 (U:V)

-mm, --metering :设置测光模式(见注释)

-rot, --rotation : 设置图像旋转 (0-359)

-hf, --hflip : 设置水平翻转

-vf, --vflip : 设置垂直翻转

注意!

曝光模式选项:

关闭,自动,夜,夜景,背光,聚光灯,体育,雪景,海滩,很长,固定fps,防抖,烟花

AWB 模式选项:

关闭,自动,太阳,云,灯罩,钨丝灯,荧光灯,白炽灯,闪光,地平线

图像效果模式选项:

无,负数,日光,素描,去噪,浮雕,油画,影线,gpen,粉彩,水彩,电影,模糊,饱和度,颜色交换,褪色,海报,色点,色彩平衡,卡通

测光模式选项:

平均,点,背光,矩阵


raspivid 是用于使用 Raspberry Pi 摄像头模块捕获视频的命令行工具。


Raspberry Pi 系列上使用的 SoC 都有两个摄像头接口,支持 CSI-2 D-PHY 1.1 或 CCP2(紧凑型摄像头端口 2)源。该接口的代号为“Unicam”。Unicam 的第一个实例支持 2 个 CSI-2 数据通道,而第二个支持 4 个。每个通道可以以高达 1Gbit/s(DDR,因此最大链路频率为 500MHz)运行。

但是,Raspberry Pi 的普通变体仅公开第二个实例,并且仅将2 个数据通道路由到相机连接器。计算模块范围从两个外围设备路由出所有通道。

接下来就是说,为什么可以用这个东芝的芯片就可以捕捉HDMI。因为是内核有支持!

有个模块叫C779,这里要说一下。


关于这个接口,我看板子是公版的。


HDMI to CSI - 2



是我们的板子,然后是I2C控制的芯片。



Linux的内核折腾指南



这是目前已经测试通过的驱动程序,其实看源码。。。密密麻麻的驱动啊,可能还没有测试。


Raspberry Pi Linux 内核目前支持 2 个桥接芯片,用于模拟视频源的 Analog Devices ADV728x-M 和用于 HDMI 源的 Toshiba TC358743。





这是基本的作用



处理视频的能力



CSI-2 TX(发送)


芯片的整个控制都是使用的IIC控制


芯片还不咋省电。。。



说看看MIPI的标准。。。hhhh,还看不了,有兄弟有的,给我看看



系统框图



对了这个东西还支持EDID



WIKI的说法


关于具体这个芯片的控制,后面会给资料,300多页的寄存器。


上面的图像格式频繁的出现,这里就说说


YCbCr颜色空间是YUV颜色空间的缩放和偏移版本。Y定义为8bit,标称颜色范围为16-235;Cb和Cr标称颜色表示范围为16-240。YCbCr的采样格式一般有4:4:4、4:2:2、4:1:1、和4:2:0。


这里给段MATLAB的转换代码:


close allclear allclc I=imread('1.bmp'); [H ,W ,D]=size(I); R=double(I(:,:,1));G=double(I(:,:,2));B=double(I(:,:,3));  Y0= double(zeros(H,W));Cb0 =double(zeros(H,W));Cr0 = double(zeros(H,W)); Cb1 =double(zeros(H,W/2));Cr1 = double(zeros(H,W/2));CbCr = double(zeros(H,W)); %RGB转YCbCr444 for i = 1:H     for j = 1:W         Y0(i, j) = 0.299*R(i, j) + 0.587*G(i, j) + 0.114*B(i, j);         Cb0(i, j) = -0.172*R(i, j) - 0.339*G(i, j) + 0.511*B(i, j) + 128;         Cr0(i, j) = 0.511*R(i, j) - 0.428*G(i, j) - 0.083*B(i, j) + 128;     end end   for i=1:1:H    for j=2:2:W        Cb1(i,j/2)=(Cb0(i,j-1)+Cb0(i,j))/2;    endend for i=1:1:H    for j=2:2:W        Cr1(i,j/2)=(Cr0(i,j-1)+Cr0(i,j))/2;    endend for i=1:1:H    for j=1:1:W        if rem(j,2)==0         CbCr(i,j)=Cr1(i,j/2);        else         CbCr(i,j)=Cb1(i,(j+1)/2);        end    endend Iycbcr(:,:,1)=Y0;Iycbcr(:,:,2)=Cb0;Iycbcr(:,:,3)=Cr0; Iycbcr=uint8(Iycbcr);Y0=uint8(Y0);Cb0=uint8(Cb0);Cr0=uint8(Cr0); Cb1=uint8(Cb1);Cr1=uint8(Cr1);CbCr=uint8(CbCr); figure(1),subplot(211),imshow(I),title('RGB');subplot(212),imshow(Iycbcr),title('YCbCr444'); figure(2),subplot(221),imshow(Cb1),title('Cb1');subplot(222),imshow(Cr1),title('Cr1');subplot(223),imshow(Cb0),title('Cb0');subplot(224),imshow(Cr0),title('Cr0'); figure(3),subplot(211),imshow(Y0),title('Y0');subplot(212),imshow(CbCr),title('CbCr');

YCbCr444转YCbCr422:首先将rgb图像转为YCbCr444然后再由YCbCr444转为YCbCr422.


还出现一个bpp???其实就是颜色深度,真装逼呢。。。


色彩深度简称色深,在计算机图形学领域表示在位图或者视频帧缓冲区中储存每一像素的颜色所用的位数,常用单位为位/像素(bpp)。色彩深度越高,可用的颜色就越多。

色彩深度是用“n位颜色”(n-bit colour)来说明的。若色彩深度是n位,即有2n种颜色选择,而储存每像素所用的位数目就是n。常见的有:


  • 1位:2种颜色,单色光,黑白二色,用于compact Macintoshes。

  • 2位:4种颜色,CGA,用于gray-scale早期的NeXTstation及color Macintoshes。

  • 3位:8种颜色,用于大部分早期的计算机显示器。

  • 4位:16种颜色,用于EGA及不常见及在更高的分辨率的VGA标准,color Macintoshes。

  • 5位:32种颜色,用于Original Amiga chipset。

  • 6位:64种颜色,用于Original Amiga chipset。

  • 7位:128种颜色。

  • 8位:256种颜色,用于最早期的彩色Unix工作站,低分辨率的VGA,Super VGA,AGA,color Macintoshes。其中红色和绿色各占3位,蓝色占2位。

  • 灰阶,有256种灰色(包括黑白)。若以24位模式来表示,则RGB的数值均一样,例如(200,200,200)。

  • 9位:512种颜色

  • 10位:1,024种颜色。

  • 12位:4,096种颜色,用于部分硅谷图形系统,Neo Geo,彩色NeXTstation及Amiga系统于HAM mode。

  • 16位:65,536种颜色,用于部分color Macintoshes(红色占5个位、蓝色占5个位、绿色占6个位,所以红色、蓝色、绿·色各有32、32、64种明暗度的变化总共可以组合出65,536种颜色)。

  • 24位:16,777,216种颜色,真彩色,能提供比肉眼能识别更多的颜色,用于显示照片。

  • 彩色图像,就是常说的24位真彩,约为1670万色。

  • 32位:基于24位而生,增加8个位(256种)的透明通道,共4,294,967,296种颜色。


  • 24位就是真彩色了。


    好像扯得远了,继续说,树莓派得文档里面说,国外最容易买得就是:



    这个板子。


    我又找到一点东西:



    这个25FPS,是因为树莓派的限制,而且如果有计算模块,可以以60FPS捕获。


    如果相机不支持隔行输出也不行。


    上面的内容是OpenHD,一共基于树莓派构建的数字FPV系统。



    继续说树莓派的事情:


    树莓派因为没有BIOS,所以Raspbian对设备的加载都是依赖在/boot/config.txt中的配置来加载。当Linux内核加载时,会读取/boot/config.txt中的设备配置和设备参数配置来把设备动态加载到Device Tree(DT)中。


    配置语法:


    dtoverlay=dtparam=,,...


    • dtoverlay上配你想要加载设备,这些设备都必须是Raspbian支持的,它们位于/boot/overlays下。这是设备他们的说明位于/boot/overlays/README,可以在这里查看到Raspbian支持的每个设备的具体信息和参数(也可以直接在官方Github查阅最新的设备支持)

    • dtparam是设备的参数,具体信息可根据/boot/overlays/README中的说明来配置


    TC358743 将 HDMI 接口连接到 CSI-2 和 I2S 输出。它由TC358743 内核模块支持

    该芯片支持高达 1080p60 的 RGB888、YUV444 或 YUV422 输入 HDMI 信号。它可以转发RGB888,或者将其转换为YUV444或YUV422,并在YUV444和YUV422之间转换。仅测试了 RGB888 和 YUV422 支持。使用 2 个 CSI-2 通道时,可以支持的最大速率为 1080p30 RGB888 或 1080p50 YUV422。在计算模块上使用 4 个通道时,可以以任一格式接收 1080p60。

    HDMI 通过广播它可以支持的所有模式EDID接收设备来协商分辨率内核驱动程序不知道您希望接收的分辨率、帧速率或格式,因此由用户提供合适的文件。这是通过 VIDIOC_S_EDID ioctl 完成的,(里面都是系统级别的配置,具体使用需要查文档)或者更容易使用v4l2-ctl --fix-edid-checksums --set-edid=file=filename.txt

    如上所述,使用DV_TIMINGSioctl 配置驱动程序以匹配传入的视频。最简单的方法是使用命令v4l2-ctl --set-dv-bt-timings query如果您希望编写应用程序来处理不断变化的源,驱动程序确实支持生成 SOURCE_CHANGED 事件。更改输出像素格式是通过 VIDIOC_S_FMT 设置来实现的,但是只有像素格式字段将被更新,因为分辨率是由 dv 时序配置的。

    此驱动程序使用config.txtdtoverlay加载tc358743


    音频没有这方面的需求,我就不写了



    还找到一个输出YUV的Github库


    https://github.com/circpeoria/raspividYUV


    https://github.com/ylj2000/HDMI_To_MIPI


    https://github.com/ylj2000/MSATA_HDMI_MIPI


    https://github.com/hoglet67/RGBtoHDMI


    另外一个和树莓派有关系的


    https://github.com/peng-zhihui/HDMI-PI


    大佬的项目可不能不写


    以上全为东芝原厂的原理图,最后一共是最简单的系统连线。



    最后这个数据手册。。。送走我。。。




    网上现在就是150的价钱。。。怎么说呢,我也没有用过,不知道这个玩起来怎么样。


    因为OBS在Linux AARCH64下好像不能用,这就算无奈之举了。。。


    至于更多的玩法,我有了再玩,但是哪个时候我可能有了更喜欢玩的东西。


    https://www.arducam.com/raspberry-pi-camera-pinout/#:~:text=Raspberry%20Pi%20Camera%20Pinout%20%2822-Pin%29%20%20%20,%20%20Ground%20%2018%20more%20rows%20
    https://thepihut.com/blogs/raspberry-pi-roundup/raspberry-pi-camera-board-raspistill-command-list
    https://github.com/raspberrypi/linux/blob/rpi-5.4.y/drivers/media/i2c/tc358743.c
    https://www.kernel.org/doc/html/latest/
    https://toshiba.semicon-storage.com/ap-en/semiconductor/product/interface-bridge-ics-for-mobile-peripheral-devices/hdmir-interface-bridge-ics/detail.TC358743XBG.html
    https://en.wikipedia.org/wiki/Extended_Display_Identification_Data
    https://zh.wikipedia.org/wiki/%E8%89%B2%E5%BD%A9%E6%B7%B1%E5%BA%A6
    https://github.com/OpenHD/Open.HD/wiki/General-~-Features
    https://www.raspberrypi.com/documentation/accessories/camera.html#shooting-raw-using-the-camera-modules


评论
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 74浏览
  •         在有电流流过的导线周围会感生出磁场,再用霍尔器件检测由电流感生的磁场,即可测出产生这个磁场的电流的量值。由此就可以构成霍尔电流、电压传感器。因为霍尔器件的输出电压与加在它上面的磁感应强度以及流过其中的工作电流的乘积成比例,是一个具有乘法器功能的器件,并且可与各种逻辑电路直接接口,还可以直接驱动各种性质的负载。因为霍尔器件的应用原理简单,信号处理方便,器件本身又具有一系列的du特优点,所以在变频器中也发挥了非常重要的作用。  &nb
    锦正茂科技 2024-12-10 12:57 76浏览
  • 智能汽车可替换LED前照灯控制运行的原理涉及多个方面,包括自适应前照灯系统(AFS)的工作原理、传感器的应用、步进电机的控制以及模糊控制策略等。当下时代的智能汽车灯光控制系统通过车载网关控制单元集中控制,表现特殊点的有特斯拉,仅通过前车身控制器,整个系统就包括了灯光旋转开关、车灯变光开关、左LED前照灯总成、右LED前照灯总成、转向柱电子控制单元、CAN数据总线接口、组合仪表控制单元、车载网关控制单元等器件。变光开关、转向开关和辅助操作系统一般连为一体,开关之间通过内部线束和转向柱装置连接为多,
    lauguo2013 2024-12-10 15:53 81浏览
  •         霍尔传感器是根据霍尔效应制作的一种磁场传感器。霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,1855—1938)于1879年在研究金属的导电机构时发现的。后来发现半导体、导电流体等也有这种效应,而半导体的霍尔效应比金属强得多,利用这现象制成的各种霍尔元件,广泛地应用于工业自动化技术、检测技术及信息处理等方面。霍尔效应是研究半导体材料性能的基本方法。通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子
    锦正茂科技 2024-12-10 11:07 64浏览
  • 【萤火工场CEM5826-M11测评】OLED显示雷达数据本文结合之前关于串口打印雷达监测数据的研究,进一步扩展至 OLED 屏幕显示。该项目整体分为两部分: 一、框架显示; 二、数据采集与填充显示。为了减小 MCU 负担,采用 局部刷新 的方案。1. 显示框架所需库函数 Wire.h 、Adafruit_GFX.h 、Adafruit_SSD1306.h . 代码#include #include #include #include "logo_128x64.h"#include "logo_
    无垠的广袤 2024-12-10 14:03 69浏览
  • 概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些之前系列器件还未遇到的问题,这些问题将在本文中进行详细描述介绍。 在五代Cyclone器件内部系统时钟受限的情况下,意味着大量逻辑资源将被浪费在于实现较大长度的TDL上面。是否可以找到方法可以对此前TDL的长度进行优化呢?本文还将探讨这个问题。TDC前段BIN颗粒堵塞问题分析 将延时链在逻辑中实现后
    coyoo 2024-12-10 13:28 101浏览
  • 全球知名半导体制造商ROHM Co., Ltd.(以下简称“罗姆”)宣布与Taiwan Semiconductor Manufacturing Company Limited(以下简称“台积公司”)就车载氮化镓功率器件的开发和量产事宜建立战略合作伙伴关系。通过该合作关系,双方将致力于将罗姆的氮化镓器件开发技术与台积公司业界先进的GaN-on-Silicon工艺技术优势结合起来,满足市场对高耐压和高频特性优异的功率元器件日益增长的需求。氮化镓功率器件目前主要被用于AC适配器和服务器电源等消费电子和
    电子资讯报 2024-12-10 17:09 84浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 66浏览
  • 近日,搭载紫光展锐W517芯片平台的INMO GO2由影目科技正式推出。作为全球首款专为商务场景设计的智能翻译眼镜,INMO GO2 以“快、准、稳”三大核心优势,突破传统翻译产品局限,为全球商务人士带来高效、自然、稳定的跨语言交流体验。 INMO GO2内置的W517芯片,是紫光展锐4G旗舰级智能穿戴平台,采用四核处理器,具有高性能、低功耗的优势,内置超微高集成技术,采用先进工艺,计算能力相比同档位竞品提升4倍,强大的性能提供更加多样化的应用场景。【视频见P盘链接】 依托“
    紫光展锐 2024-12-11 11:50 47浏览
  • 天问Block和Mixly是两个不同的编程工具,分别在单片机开发和教育编程领域有各自的应用。以下是对它们的详细比较: 基本定义 天问Block:天问Block是一个基于区块链技术的数字身份验证和数据交换平台。它的目标是为用户提供一个安全、去中心化、可信任的数字身份验证和数据交换解决方案。 Mixly:Mixly是一款由北京师范大学教育学部创客教育实验室开发的图形化编程软件,旨在为初学者提供一个易于学习和使用的Arduino编程环境。 主要功能 天问Block:支持STC全系列8位单片机,32位
    丙丁先生 2024-12-11 13:15 49浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-10 16:13 105浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 70浏览
  • 我的一台很多年前人家不要了的九十年代SONY台式组合音响,接手时只有CD功能不行了,因为不需要,也就没修,只使用收音机、磁带机和外接信号功能就够了。最近五年在外地,就断电闲置,没使用了。今年9月回到家里,就一个劲儿地忙着收拾家当,忙了一个多月,太多事啦!修了电气,清理了闲置不用了的电器和电子,就是一个劲儿地扔扔扔!几十年的“工匠式”收留收藏,只能断舍离,拆解不过来的了。一天,忽然感觉室内有股臭味,用鼻子的嗅觉功能朝着臭味重的方向寻找,觉得应该就是这台组合音响?怎么会呢?这无机物的东西不会腐臭吧?
    自做自受 2024-12-10 16:34 136浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦