常见的摄像头接口一般有MIPI、USB、DVP等等,但是MIPI摄像头受限于高速信号的传输距离问题,导致走线不能太长,这样在安防监控领域、车载等领域,使用就很受限,因此会引入一些技术延长摄像头的数据传输距离,例如之前文章所提到的serdes,或者采用模拟摄像头的方式。
模拟摄像头一般是通过模拟信号的方式来实现,模拟信号的传输距离远,一般可以达到100米左右,但是模拟信号的传输速度较慢,一般只能达到100kbps左右,因此在安防监控领域、车载等领域,使用就很受限。
AHD摄像头简介
AHD 是 Analog High Definition 的缩写,意为模拟高清。AHD 摄像头是一种采用模拟信号传输的高清摄像头,传输信号为高清模拟信号。其画面垂直解析度通常为 1080i、720p 或 1080p,最高清晰度可等同于网络高清 1080P 的全高清级别。
技术特点
高清画质:采用先进的亮色分离、信号滤波、3D降噪技术,能够有效减少高频区的色噪声,使图像清晰度更高,还原性更好,细节表现更加丰富。
传输距离远:利用同轴电缆传输,普通75-5线可达500米,在长距离传输过程中,图像质量仍然能够保持相对清晰。
零延时:前端数据未经过编码压缩直接传输到后端,实现全实时、高保真传输,保证了画面的及时性和流畅性,不存在延迟带来的误判风险。
兼容性好:可以兼容普通D1/960H以及模拟外围设备,如分配器、矩阵等,便于接入现有系统,适用于旧系统的升级改造。
易操作:支持OSD菜单设计,用户可以根据自己的需求轻松对摄像头的各项参数进行调整,如亮度、对比度、色彩饱和度等。
成本效益高:其价格与普通模拟摄像头相近,但却能提供高清品质的图像,具有较高的性价比,在民用及工业级市场中都拥有非常大的发展空间。
高集成:AHD前端芯片集成度高,使得摄像头的体积可以更小,同时也降低了生产成本。
开放标准:遵循第三方开放标准,兼容其他厂家的AHD产品,有利于市场的推广和应用,加速了整个行业的发展。
工作原理
AHD摄像头通过将模拟信号转换为数字信号,然后再将数字信号转换回模拟信号来实现高清图像的传输。它使用了一种特殊的编码技术,能够在已有的模拟传输线上实现高清视频信号的可靠传输。
应用领域
安防监控:在家庭、商业场所、公共设施、工业生产等领域广泛应用,可用于监控室内和室外环境,帮助人们更清晰地观察监控画面,及时发现异常情况,提高安全性和监控效果。
车载领域:AHD倒车影像摄像头是现代汽车安全辅助系统的重要组成部分,能够让驾驶员在倒车时通过车内显示屏清晰地看到车后的情况,避免因看不到车后情况而发生车祸,提高驾驶的安全性。
其他领域:在一些对图像质量有一定要求,但又不需要太高成本的网络高清设备的场景中,AHD摄像头也能发挥其优势,如小型店铺的监控、停车场的管理等。
AHD 摄像头转接芯片
AHD是模拟摄像头,因此需要AD转换芯片来转换,输出数字信号给到主控进行接收。一般AHD摄像头的AD转换芯片有两种:
- AHD转MIPI:将AHD摄像头的模拟信号转换为MIPI信号,然后再通过MIPI转接口将MIPI信号传输到主控。
- AHD转BT1120:将AHD摄像头的模拟信号转换为BT1120并口,然后再通过BT1120转接口将BT1120信号传输到主控。
常见的AHD转MIPI芯片有:
NVP系列:NVP6188/NVP6324/NVP6158C等
TP系列:TP2815/TP9950/TP9930/TP2825等
RN系列:RN6854/RN6752等
AHD转MIPI调试
以NVP6188为例
硬件确认
确保 NVP6188 供电电压(如 3.3V、1.8V)稳定,通过万用表测量电源引脚电压
检查外部时钟源(如 24MHz 晶振)是否正常起振,可通过示波器测量时钟信号幅度和频率
NVP6188 通过 I²C 接口与 RK3588 通信(需确认 I²C 总线引脚,如 SCL/SDA),需确保上拉电阻(通常 4.7kΩ)正确焊接,避免通信失败
模拟视频输入(如 CVBS 信号)通过电容耦合至 NVP6188 的 AIN 引脚,注意阻抗匹配(75Ω)
如复位引脚(RESET)需正确连接至 RK3588 的 GPIO,确保上电时完成复位操作
内核配置
内核启用如下配置项:
V4L2 子系统(CONFIG_VIDEO_V4L2=y)
I²C 核心及设备驱动(CONFIG_I2C=y、CONFIG_I2C_GPIO=y)
NVP6188 驱动模块(CONFIG_VIDEO_NVP6188=y)
DTS配置
&csi2_dphy0_hw {
status = "okay";
};
&csi2_dphy0 {
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
mipi_dphy0_in_nvp6188: endpoint@1 {
reg = <1>;
remote-endpoint = <&nvp6188_out>;
data-lanes = <1 2 3 4>;
};
};
port@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
csidphy0_out: endpoint@0 {
reg = <0>;
remote-endpoint = <&mipi2_csi2_input>;
};
};
};
};
&i2c7 {
status = "okay";
nvp6188: nvp6188@31 {
compatible = "nvp6188";
status = "okay";
reg = <0x31>;
clocks = <&cru CLK_MIPI_CAMARAOUT_M2>;
clock-names = "xvclk";
power-domains = <&power RK3588_PD_VI>;
pinctrl-names = "default";
pinctrl-0 = <&mipim1_camera1_clk>;
rockchip,grf = <&sys_grf>;
/*power-gpios = <&gpio3 RK_PC6 GPIO_ACTIVE_HIGH>;*/
reset-gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_HIGH>;
rockchip,camera-module-index = <0>;
rockchip,camera-module-facing = "back";
rockchip,camera-module-name = "nvp6188";
rockchip,camera-module-lens-name = "nvp6188";
port {
nvp6188_out: endpoint {
remote-endpoint = <&mipi_dphy0_in_nvp6188>;
data-lanes = <1 2 3 4>;
};
};
};
};
&mipi2_csi2 {
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
mipi2_csi2_input: endpoint@1 {
reg = <1>;
remote-endpoint = <&csidphy0_out>;
};
};
port@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
mipi2_csi2_output: endpoint@0 {
reg = <0>;
remote-endpoint = <&cif_mipi2_in>;
};
};
};
};
&rkcif_mipi_lvds2 {
status = "okay";
/* parameters for do cif reset detecting:
* index0: monitor mode,
0 for idle,
1 for continue,
2 for trigger,
3 for hotplug (for nextchip)
* index1: the frame id to start timer,
min is 2
* index2: frame num of monitoring cycle
* index3: err time for keep monitoring
after finding out err (ms)
* index4: csi2 err reference val for resetting
*/
rockchip,cif-monitor = <3 2 1 1000 5>;
port {
cif_mipi2_in: endpoint {
remote-endpoint = <&mipi2_csi2_output>;
};
};
};
&rkcif {
status = "okay";
rockchip,android-usb-camerahal-enable;
// memory-region = <&cif_reserved>;
};
&rkcif_mmu {
status = "okay";
};
注解
rockchip,android-usb-camerahal-enable;该配置是在多路摄像头的时候使用,可以让应用注册4路摄像头,从而apk可以同时预览4路。如果是自行开发应用,使用v4l2从video节点直接取数据流的话,那么可以不用。
编译烧录
./build.sh lunch #选择板级配置文件
./build.sh kernel #编译内核
编译完成后烧录内核镜像boot.img即可。
调试
1、查看内核日志
dmesg | grep nvp6188
2、检查I2C设备是否识别
i2cdetect -y 7 #假设NVP6188连接在I2C7上
3、查看摄像头设备设备节点
ls /dev/video* # 应出现NVP6188对应的视频设备(如/video0)
v4l2-ctl --list-devices # 检查设备名称是否为“nvp6188”
4、查看摄像头信息
v4l2-ctl -d /dev/video0 --list-formats-ext
5、配置摄像头参数
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat=NV12
6、启动摄像头预览
./rockchip-test/camera/camera_rkaiq_test.sh #如果无法启动请检查脚本内对应设备节点是否正确
5026

被折叠的 条评论
为什么被折叠?



