调试摄像头的时候,显示总是闪屏画面跳
请问一下,我在调试摄像头HDMI 显示的时候,显示器上的结果一闪一闪的,这是哪里出的问题呢。摄像头通过bayer 转RGB模块后通过vdma 缓存,交给HDMI 模块显示,我在vdma里面把视频4000x3000裁剪成1080p。显示的时候感觉采集不到同一幅画面一样,一直在跳。。请问一下是VDMA 的问题 还是摄像头的问题呢。用vdma的上一帧缓冲区去显示。 wye11083 发表于 2022-6-12 12:53
用vdma的上一帧缓冲区去显示。
(引用自2楼)
这个应该配置哪个寄存器呢,我不管怎么配置寄存器都还是这样跳动,而且我用Xilinx 的TPG 模块能够稳定显示测试图案。用摄像头经过的去马赛克视频就跳。。
Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x30, 0x83);
//S2MM Start Address 1
Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0xAC, FRAME_BASE);
//S2MM Start Address 2
Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0xB0, FRAME_BASE+(4000*3000*3));
//S2MM Start Address 3
Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0xB4,FRAME_BASE+(4000*3000*3*2));
//S2MM Frame delay / Stride register
Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0xA8, 4000*3);
// S2MM HSIZE register
Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0xA4, 4000*3);
// S2MM VSIZE register
Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0xA0, 3000);
/* Configure the Read interface (MM2S)*/
// MM2S Control Register
Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x00, 0x03);
// MM2S Start Address 1
Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x5C, FRAME_BASE);
// MM2S Start Address 2
Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x60, FRAME_BASE+(4000*3000*3));
// MM2S Start Address 3
Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x64, FRAME_BASE+(4000*3000*3*2));
// MM2S Frame delay / Stride register
Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x58, 4000*3);
// MM2S HSIZE register
Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x54, 1920*3);
// MM2S VSIZE register
Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x50, 1080);
本帖最后由 wye11083 于 2022-6-12 18:28 编辑
你改那个bd文件,把那个frame pointer寄存器改出来,xilinx把这个东西给调试信号了。。
然后开vdma完成中断,把那个pointer寄存器抓出来,即每次中断保存下一帧地址。剩下的就是直接读上一帧的内容了。
这块确实比较费劲。主要是那个寄存器默认没有,还只能改bd文件手动添加。
"c_enable_s2mm_sts_reg": {
"value": "1"
},
应该是这个STS寄存器,读pointer的。VDMA内部用的是gray code。 wye11083 发表于 2022-6-12 18:21
你改那个bd文件,把那个frame pointer寄存器改出来,xilinx把这个东西给调试信号了。。
然后开vdma完成中 ...
(引用自4楼)
好的,我试一下,另外我想问一下为什么vdma 显示这个摄像头的时候这么麻烦呢,之前用ov5640 这样驱动就直接能正常显示视频了。。 wye11083 发表于 2022-6-12 18:21
你改那个bd文件,把那个frame pointer寄存器改出来,xilinx把这个东西给调试信号了。。
然后开vdma完成中 ...
(引用自4楼)
还有一个问题就是,我的摄像头也没动,为什么VDMA 三帧存储的数据会差这么多呢..我把视频放慢了看这三帧的画面完全不一样啊。。。帧缓存不是为了防止帧撕裂的么。。 yimengxiaoyao 发表于 2022-6-12 20:44
还有一个问题就是,我的摄像头也没动,为什么VDMA 三帧存储的数据会差这么多呢..我把视频放慢了看这三帧 ...
(引用自6楼)
那你检查是不是数据溢出了?或者哪个信号没处理好。我没有遇到过图像撕裂有情况。只有ddr不稳时会出错。
页:
[1]