基于FPGA的OV摄像头初始化之SCCB协议的实现 SCCB协议是OV系列摄像头的初始化协议,实际上是IIC协议的变体。下面将详细介绍SCCB协议的实现,包括它的时序、数据传输、Verilog程序的编写等方面。 一、SCCB协议时序 SCCB协议2线工作模式只能工作在只有1个从机挂载下,具有接口SIO_C、SIO_D,也就是IIC的i2c_clk和i2c_sdat。SCCB协议的时序有以下几点需要注意和掌握的: (1)时钟频率:和业界标准一致,只能工作在400KHz以内。 (2)数据读/写:数据是从高位D7开始到低位D0进行传输的。数据线SIO_D在时钟SIO_C高电平期间读取,在时钟SIO_C低电平期间写入,最佳采样点就是高、低电平期间的中点。换句话说,也就是数据只能在时钟低电平期间变化,在高电平期间不能发生变化。 (3)开始信号:在时钟SIO_C高电平期间,数据线SIO_D由高电平跳变为低电平即表示开始传输。 (4)结束信号:在时钟SIO_C高电平期间,数据线SIO_D由低电平跳变为高电平即表示开始传输。 (5)应答信号:在主机(FPGA)发送完8bit数据后,等待从机(OV系列摄像头)应答ACK信号,如正常应答,则主机(FPGA)在第九个时钟SIO_C高电平期间能读回SIO_D低电平信号,即从机(OV系列摄像头)在第九个时钟低电平期间拉低数据线SIO_D。 二、OV摄像头的数据传输 OV摄像头的数据传输过程称为一相,一相包含9bit数据。对OV摄像头寄存器进行配置的写操作需要三相,对其进行读取的读操作需要四相。 写操作的三相数据包括: * 第一相:OV摄像头设备ID地址0x42 * 第二相:所要配置的寄存器地址 * 第三相:所要写入的数据 读操作由二相写操作和二相读操作构成。写操作的数据传输时序与三相写操作相同;读操作的数据传输时序与二相读操作相同。 三、Verilog程序的编写 SCCB协议的编写可以划分为2个部分:时钟及使能信号产生和数据的传输。 (1)SCCB协议时钟及使能信号的产生: 时钟信号由计数器分频产生,对主时钟clk = 25MHz进行200分频,时钟i2c_sclk初始为高电平。SCCB协议传输启动信号i2c_config_start非常重要,它的开启与闭合能够让每一次的寄存器配置时序都能精准控制,而不至于处于失控造成时钟偏移的状态。 (2)数据的传输: 写使能信号i2c_wen在时钟低电平中点时刻置1使能进行写数据,读使能信号i2c_ren在时钟高电平中点时刻置1使能进行读数据。 相关代码如下: ```verilog //---------------------------i2c_sclk generator-------------------------- reg [11:0] sclk_cnt; always @(posedge clk or negedge rst_n) begin if (!rst_n) begin sclk_cnt <= 1'b0; i2c_sclk <= 1'b1; // i2c_clk high level start end else if (sclk_cnt == 12'd99) begin sclk_cnt <= 1'b0; i2c_sclk <= ~i2c_sclk; // 200 frequency pision end else if (i2c_config_start) // controll the i2c_sclk work ... ``` SCCB协议是OV系列摄像头的初始化协议,它的实现需要注意时序、数据传输和Verilog程序的编写等方面。
- 粉丝: 4
- 资源: 913
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助