团队编号:CICC2136
团队名称:芯如止水
OV5640 的寄存器配置是通过 FPGA 的 I2C(也称为 SCCB 接口)接口来配置,需要配置正确的寄存器值让 OV5640 输出我们需要的图像格式
OV5640 SCCB 的写传输协议如下图所示:
上图中的 ID ADDRESS 是由 7 位器件地址和 1 位读写控制位构成(0:写 1:读),OV5640 的器件地
址为 7’h3c,所以在写传输协议中,ID Address(W)= 8’h78(器件地址左移 1 位,低位补 0);Sub-address(H)
为高 8 位寄存器地址,Sub-address(L)为低 8 位寄存器地址,在 OV5640 众多寄存器中,有些寄存器是可改
写的,有些是只读的,只有可改写的寄存器才能正确写入;Write Data 为 8 位写数据,每一个寄存器地址对
应 8 位的配置数据。
下表是本程序用到的关键寄存器的配置说明
可以利用下图的PMOD数字接口连接ov5640
值得注意的是,需要注释掉system.v中的gpioB相关语句,同时修改管脚约束文件
//gpioB
//inout wire [31:0] gpioB,//GPIOB00~GPIOB31
output cam_rst_n ,
output cam_pwdn ,
output wire cam_scl ,
inout wire cam_sda
之后可以在顶层添加驱动模块,用于连接ov5640
//I2C配置模块
i2c_ov5640_rgb565_cfg u_i2c_cfg(
.clk (i2c_dri_clk),
.rst_n (ck_rst),
.i2c_done (i2c_done),
.i2c_data_r (i2c_data_r),
.cmos_h_pixel (H_CMOS_DISP),
.cmos_v_pixel (V_CMOS_DISP),
.total_h_pixel (TOTAL_H_PIXEL),
.total_v_pixel (TOTAL_V_PIXEL),
.i2c_exec (i2c_exec),
.i2c_data (i2c_data),
.i2c_rh_wl (i2c_rh_wl),
.init_done (cam_init_done)
);
//I2C驱动模块
i2c_dri
#(
.SLAVE_ADDR (SLAVE_ADDR), //参数传�??
.CLK_FREQ (CLK_FREQ ),
.I2C_FREQ (I2C_FREQ )
)
u_i2c_dri(
.clk (CLK100MHZ ),
.rst_n (ck_rst ),
//i2c interface
.i2c_exec (i2c_exec ),
.bit_ctrl (BIT_CTRL ),
.i2c_rh_wl (i2c_rh_wl ),
.i2c_addr (i2c_data[23:8]),
.i2c_data_w (i2c_data[7:0]),
.i2c_data_r (i2c_data_r),
.i2c_done (i2c_done ),
.i2c_ack (),
.scl (cam_scl ),
.sda (cam_sda ),
//user interface
.dri_clk (i2c_dri_clk) //I2C操作时钟
);
可以配置摄像头的LED等点亮