搜索
bottom↓
回复: 6

调试摄像头的时候,显示总是闪屏画面跳

[复制链接]

出0入0汤圆

发表于 2022-6-12 12:35:09 | 显示全部楼层 |阅读模式
请问一下,我在调试摄像头HDMI 显示的时候,显示器上的结果一闪一闪的,这是哪里出的问题呢。摄像头通过bayer 转RGB模块后通过vdma 缓存,交给HDMI 模块显示,我在vdma里面把视频4000x3000裁剪成1080p。显示的时候感觉采集不到同一幅画面一样,一直在跳。。请问一下是VDMA 的问题 还是摄像头的问题呢。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入442汤圆

发表于 2022-6-12 12:53:22 来自手机 | 显示全部楼层
用vdma的上一帧缓冲区去显示。

出0入0汤圆

 楼主| 发表于 2022-6-12 17:54:19 | 显示全部楼层
wye11083 发表于 2022-6-12 12:53
用vdma的上一帧缓冲区去显示。
(引用自2楼)

这个应该配置哪个寄存器呢,我不管怎么配置寄存器都还是这样跳动,而且我用Xilinx 的TPG 模块能够稳定显示测试图案。用摄像头经过的去马赛克视频就跳。。
  1.     Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x30, 0x83);
  2.     //S2MM Start Address 1
  3.     Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0xAC, FRAME_BASE);
  4.     //S2MM Start Address 2
  5.     Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0xB0, FRAME_BASE+(4000*3000*3));
  6.     //S2MM Start Address 3
  7.     Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0xB4,  FRAME_BASE+(4000*3000*3*2));
  8.     //S2MM Frame delay / Stride register
  9.     Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0xA8, 4000*3);
  10.     // S2MM HSIZE register
  11.     Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0xA4, 4000*3);
  12.     // S2MM VSIZE register
  13.     Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0xA0, 3000);

  14.     /* Configure the Read interface (MM2S)*/
  15.     // MM2S Control Register
  16.     Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x00, 0x03);
  17.     // MM2S Start Address 1
  18.     Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x5C, FRAME_BASE);
  19.     // MM2S Start Address 2
  20.     Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x60, FRAME_BASE+(4000*3000*3));
  21.     // MM2S Start Address 3
  22.     Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x64, FRAME_BASE+(4000*3000*3*2));
  23.     // MM2S Frame delay / Stride register
  24.     Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x58, 4000*3);
  25.     // MM2S HSIZE register
  26.     Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x54, 1920*3);
  27.     // MM2S VSIZE register
  28.     Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x50, 1080);
复制代码


出0入442汤圆

发表于 2022-6-12 18:21:09 来自手机 | 显示全部楼层
本帖最后由 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。

出0入0汤圆

 楼主| 发表于 2022-6-12 19:17:40 | 显示全部楼层
wye11083 发表于 2022-6-12 18:21
你改那个bd文件,把那个frame pointer寄存器改出来,xilinx把这个东西给调试信号了。。

然后开vdma完成中 ...
(引用自4楼)

好的,我试一下,另外我想问一下为什么vdma 显示这个摄像头的时候这么麻烦呢,之前用ov5640 这样驱动就直接能正常显示视频了。。

出0入0汤圆

 楼主| 发表于 2022-6-12 20:44:11 | 显示全部楼层
wye11083 发表于 2022-6-12 18:21
你改那个bd文件,把那个frame pointer寄存器改出来,xilinx把这个东西给调试信号了。。

然后开vdma完成中 ...
(引用自4楼)

还有一个问题就是,我的摄像头也没动,为什么VDMA 三帧存储的数据会差这么多呢..我把视频放慢了看这三帧的画面完全不一样啊。。。帧缓存不是为了防止帧撕裂的么。。

出0入442汤圆

发表于 2022-6-12 20:51:15 来自手机 | 显示全部楼层
yimengxiaoyao 发表于 2022-6-12 20:44
还有一个问题就是,我的摄像头也没动,为什么VDMA 三帧存储的数据会差这么多呢..我把视频放慢了看这三帧 ...
(引用自6楼)

那你检查是不是数据溢出了?或者哪个信号没处理好。我没有遇到过图像撕裂有情况。只有ddr不稳时会出错。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-24 04:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表