高级会员 
  
	- 积分
 - 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需要做的处理是类似的。 
 
 
 
 
 
 
 |