OV5640 相机开发流程

@[TOC]

本文是正点原子vitis开发指南的学习笔记。使用的是ov5640双目相机,但仅用到其中一个摄像头。

配置流程

  • 1 配置zynq
    • UART0 (MIO14,15)
    • DDR3 低电压,RE125
    • PS-PL Configuration->HP Slave AXI Interface->勾选S AXI HP0 Interface
    • Clock Configuration->PL Fabric Clocks->FCLK_CLK0设为100
    • MIO Configuration->【I/O Peripheral/GPIO】->勾选EMIO GPIO(Width),其IO设为2
  • 2 配置VDMA
    • Frame Buffers 3
    • 勾选Enable Write Channel
      • Memory Map Data Width设为Auto(默认)
      • Write Burst Size 64
      • Stream Data Width(Auto) 32
      • Lin Buffer Depth 2048
    • 勾选Enable Read Channel
      • Memory Map Data Width 64
      • Read Burst Size 64
      • Stream Data Width 24
      • Line Buffer Depth 2048
    • Advanced选项卡,写入通道为Dynamic-Master,读取通道为Dyamic-Slave
  • 3 配置Video Timing Controller
    • 勾选Enable Generation,取消勾选Enable Detection
  • 4 配置AXI-Stream to Video Out
    • 选中Independent模式
  • 5 配置Video In to AXI4-Stream
    • 选中Independent模式
  • 6 配置Clocking Wizard
    • 【Clocking Options】选项卡->勾选【Clocking Features/Dynamic Reconfig】
    • 【Output Clocks】选项卡->勾选【clk_out1】,将其Output Freq均设为33.3333
  • 7 配置GPIO IP核
    • GPIO Width设为3
  • 8 添加自定义模块rgb2lcd
    • 【Project Manager/Setting】->【IP/Repository】->【➕】->找到自定义IP文件夹->【OK】
    • 【➕】导入rgb2lcd_0
    • 【➕】导入ov5640_capture_data_0
  • 9 手动连线
    • 【ov5640】-【Video In】
      • 【cmos_rgb】-【vid_io_in】
      • 【cmos_frame_clk】-【vid_io_in_clk】
      • 【cmos_frame_ce】-【vid_io_in_ce】
    • 【Video In/video_out】-【VDMA/S_AXIS_S2MM】
    • 【ov5640/rst_n】-【clk_wiz_0/locked】
    • 【VDMA/M_AXIS_MM2S】-【Video Out/video_in】
    • 【Video Out/video_out】-【rgb2lcd/vid_rgb】
    • 【Video Out/vtiming_in】-【VTC/vtiming_out】
    • 【VTC/clk】-【rgb2lcd/pixel_clk】-【clk_wiz/clk_out1】-【Video Out/vid_io_out_clk】
    • 【clk_wiz/clk_in1】-【GPIO/s_axi_aclk】-【Vid Out/aclk】-【VDMA/s_axi_lite_aclk】-【VDMA/m_axi_mm2s_aclk】-【VDMA/m_axis_mm2s_aclk】-【ZYNQ/FCLK_CLK0】
  • 10 Run Block Automation->Run Connection Automation
  • 11 引出引脚

约束文件

本文使用的是双目OV5640摄像头,但只用了其中的一个,其引脚约束为

xdc 复制代码
#72M
create_clock -period 13.888 -name cam_pclk [get_ports cam_pclk]
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets cam_pclk_IBUF]


set_property -dict {PACKAGE_PIN W18 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[0]}]
set_property -dict {PACKAGE_PIN W19 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[1]}]
set_property -dict {PACKAGE_PIN R16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[2]}]
set_property -dict {PACKAGE_PIN R17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[3]}]
set_property -dict {PACKAGE_PIN W20 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[4]}]
set_property -dict {PACKAGE_PIN V20 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[5]}]
set_property -dict {PACKAGE_PIN P18 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[6]}]
set_property -dict {PACKAGE_PIN N17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[7]}]
set_property -dict {PACKAGE_PIN V17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[8]}]
set_property -dict {PACKAGE_PIN V18 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[9]}]
set_property -dict {PACKAGE_PIN T17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[10]}]
set_property -dict {PACKAGE_PIN R18 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[11]}]
set_property -dict {PACKAGE_PIN Y18 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[12]}]
set_property -dict {PACKAGE_PIN Y19 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[13]}]
set_property -dict {PACKAGE_PIN P15 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[14]}]
set_property -dict {PACKAGE_PIN P16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[15]}]
set_property -dict {PACKAGE_PIN V16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[16]}]
set_property -dict {PACKAGE_PIN W16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[17]}]
set_property -dict {PACKAGE_PIN T14 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[18]}]
set_property -dict {PACKAGE_PIN T15 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[19]}]
set_property -dict {PACKAGE_PIN Y17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[20]}]
set_property -dict {PACKAGE_PIN Y16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[21]}]
set_property -dict {PACKAGE_PIN T16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[22]}]
set_property -dict {PACKAGE_PIN U17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb_tri_io[23]}]
set_property -dict {PACKAGE_PIN N18  IOSTANDARD LVCMOS33} [get_ports lcd_hs]
set_property -dict {PACKAGE_PIN T20  IOSTANDARD LVCMOS33} [get_ports lcd_vs]
set_property -dict {PACKAGE_PIN U20  IOSTANDARD LVCMOS33} [get_ports lcd_de]
set_property -dict {PACKAGE_PIN M20  IOSTANDARD LVCMOS33} [get_ports lcd_bl]
set_property -dict {PACKAGE_PIN P19  IOSTANDARD LVCMOS33} [get_ports lcd_clk]
set_property -dict {PACKAGE_PIN L17  IOSTANDARD LVCMOS33} [get_ports lcd_rst]

set_property -dict {PACKAGE_PIN P14 IOSTANDARD LVCMOS33} [get_ports cam_rst_n]
set_property -dict {PACKAGE_PIN U10 IOSTANDARD LVCMOS33} [get_ports cam_rst_n]
set_property -dict {PACKAGE_PIN V15 IOSTANDARD LVCMOS33} [get_ports cam_pwdn]
set_property -dict {PACKAGE_PIN V11 IOSTANDARD LVCMOS33} [get_ports cam_pwdn]
set_property -dict {PACKAGE_PIN R14 IOSTANDARD LVCMOS33} [get_ports {cam_data[0]}]
set_property -dict {PACKAGE_PIN T9 IOSTANDARD LVCMOS33} [get_ports {cam_data[0]}]
set_property -dict {PACKAGE_PIN U13 IOSTANDARD LVCMOS33} [get_ports {cam_data[1]}]
set_property -dict {PACKAGE_PIN W6 IOSTANDARD LVCMOS33} [get_ports {cam_data[1]}]
set_property -dict {PACKAGE_PIN V13 IOSTANDARD LVCMOS33} [get_ports {cam_data[2]}]
set_property -dict {PACKAGE_PIN V6 IOSTANDARD LVCMOS33} [get_ports {cam_data[2]}]
set_property -dict {PACKAGE_PIN U15 IOSTANDARD LVCMOS33} [get_ports {cam_data[3]}]
set_property -dict {PACKAGE_PIN Y7 IOSTANDARD LVCMOS33} [get_ports {cam_data[3]}]
set_property -dict {PACKAGE_PIN U14 IOSTANDARD LVCMOS33} [get_ports {cam_data[4]}]
set_property -dict {PACKAGE_PIN Y6 IOSTANDARD LVCMOS33} [get_ports {cam_data[4]}]
set_property -dict {PACKAGE_PIN W13 IOSTANDARD LVCMOS33} [get_ports {cam_data[5]}]
set_property -dict {PACKAGE_PIN Y9 IOSTANDARD LVCMOS33} [get_ports {cam_data[5]}]
set_property -dict {PACKAGE_PIN V12 IOSTANDARD LVCMOS33} [get_ports {cam_data[6]}]
set_property -dict {PACKAGE_PIN Y8 IOSTANDARD LVCMOS33} [get_ports {cam_data[6]}]
set_property -dict {PACKAGE_PIN Y14 IOSTANDARD LVCMOS33} [get_ports {cam_data[7]}]
set_property -dict {PACKAGE_PIN W10 IOSTANDARD LVCMOS33} [get_ports {cam_data[7]}]
set_property -dict {PACKAGE_PIN T12 IOSTANDARD LVCMOS33} [get_ports cam_href]
set_property -dict {PACKAGE_PIN U9 IOSTANDARD LVCMOS33} [get_ports cam_href]
set_property -dict {PACKAGE_PIN W14 IOSTANDARD LVCMOS33} [get_ports cam_pclk]
set_property -dict {PACKAGE_PIN W9 IOSTANDARD LVCMOS33} [get_ports cam_pclk]
set_property -dict {PACKAGE_PIN U12 IOSTANDARD LVCMOS33} [get_ports cam_vsync]
set_property -dict {PACKAGE_PIN W8 IOSTANDARD LVCMOS33} [get_ports cam_vsync]
#cam_scl:
set_property -dict {PACKAGE_PIN T10 IOSTANDARD LVCMOS33} [get_ports {emio_sccb_tri_io[0]}]
set_property -dict {PACKAGE_PIN V8 IOSTANDARD LVCMOS33} [get_ports {emio_sccb_tri_io[0]}]
#cam_sda:
set_property -dict {PACKAGE_PIN U8 IOSTANDARD LVCMOS33} [get_ports {emio_sccb_tri_io[1]}]
set_property PULLUP true [get_ports {emio_sccb_tri_io[1]}]
相关推荐
ShiMetaPi9 小时前
【GM3568JHF】FPGA+ARM异构开发板 使用指南:显示与触摸
arm开发·嵌入式硬件·fpga开发·rk3568
ThreeYear_s12 小时前
基于FPGA+DSP数据采集处理平台的搭建
fpga开发
Js_cold12 小时前
8K4K图像评估平台
图像处理·fpga开发·视频
嵌入式-老费1 天前
Zynq开发实践(FPGA之平台免费IP)
fpga开发
Js_cold1 天前
Notepad++使用技巧1
前端·javascript·fpga开发·notepad++
第二层皮-合肥1 天前
FPGA 实现FOC 无刷电机控制器
fpga开发
晓晓暮雨潇潇2 天前
FPGA开发技能(12)matlab图片处理助力FPGA开发
计算机视觉·matlab·fpga开发
ThreeYear_s2 天前
基于FPGA的正弦波和及滤波(已通过仿真和上板)
fpga开发
Js_cold2 天前
Notepad++常用设置
前端·javascript·fpga开发·notepad++
一丢沙2 天前
Verilog 硬件描述语言自学——重温数电之典型组合逻辑电路
开发语言·算法·fpga开发·verilog