高级会员

- 积分
- 524
- 金钱
- 524
- 注册时间
- 2020-5-9
- 在线时间
- 79 小时
|
10金钱
最近搞这个SCCB数据读取有点头昏了,我看例程(ov7725_rgb565_640x480_vga)上也有读取的程序,但是怎么也读不对。头只留了锁相环、I2C配置模块和I2C驱动模块,另外我加了串口定时输出程序, 我改的不对麻烦大佬指点一番:
//锁相环
pll_clk u_pll_clk(
.areset (~sys_rst_n),
.inclk0 (sys_clk),
.c0 (clk_100m),
.c1 (clk_100m_shift),
.c2 (clk_25m),
.locked (locked)
);
//I2C配置模块
i2c_ov7725_rgb565_cfg u_i2c_cfg(
.clk (i2c_dri_clk),
.rst_n (rst_n),
.i2c_done (i2c_done),
.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 (clk_25m ),
.rst_n (rst_n ),
.i2c_exec (i2c_exec ),
.bit_ctrl (BIT_CTRL ),
.i2c_rh_wl (i2c_rh_wl), //固定为0,只用到了IIC驱动的写操作 ;1为读操作?
.i2c_addr (i2c_data[15:8]),
.i2c_data_w (i2c_data[7:0]),
.i2c_data_r (uart_data_w), //数据串口定时输出
.i2c_done (i2c_done ),
.scl (cam_scl ),
.sda (cam_sda ),
.i2c_over_rd (i2c_rd_over),
.dri_clk (i2c_dri_clk) //I2C操作时钟
);
然后I2C配置模块添加了一段程序:
//配置I2C读写控制信号
always @(posedge clk or negedge rst_n) begin
if(!rst_n)
i2c_rh_wl <= 1'b0;
else if(init_reg_cnt >= 8'd52)
i2c_rh_wl <= 1'b1;
end
结果串口输出的8位数据只有00 ,哪位大佬有空解救一波啊 感激不尽
|
最佳答案
查看完整内容[请看2#楼]
首先要把摄像头SCCB这两根引脚做弱上拉,因为硬件上没有接上拉电阻;
其次i2c_dri模块是针对I2C协议的,SCCB协议的读和I2C驱动里的读,有些许区别,需要修改下。
开拓者的Nios II GUI综合实验,有OV5640的读,可以参考下,文档里面针对OV5640这块也有做说明,和7725需要做的处理是类似的。
|