3 图像采集的工作过程
1)通过SCCB总线设置OV7640的帧频
系统上电后需要对CMOS图像传感器进行初始化,以确定采集图像的开窗位置、开窗大小和黑白工作模式等。这些参数是受OV7640内部相应寄存器的值控制的,可通过SCCB总线对其进行设置。SCCB的接口有SCCE、SIO_C、SIO_D(SCCE是串行总线使能信号,SIO_C是串行总线时钟信号,SIO_D是串行总线数据信号)三条引脚。OV7640芯片上没有SCCE引脚,但也可实现单主对单从方式的通讯,控制总线规定的条件如下:当 SIO_C为高电平时,如SIO_D产生一个下降沿表明数据传输的开始,如SIO_D产生一个上升沿表明数据传输的结束;为了避免传送无用的信息位,分别在传输开始之前、传输结束之后将SIO_D设置为高电平。在数据传输期间,SIO_D上数据的传输受SIO_C的控制,当SIO_C为低电平时,SIO_D上数据有效,SIO_D为稳定数据状态,SIO_C每出现一正脉冲,将传送一位数据。其中两根线的上升和下降时延、高低电平的维持时间都有较严格的要求,软件的延时时间要根据CPU速度和GPIO口的速度精确的计算后才能使通讯保持顺畅。如图2所示:
配置的具体方法如下:采用三相写数据的方式,即在写寄存器过程中要先发送OV7640的ID地址,然后发送数据的目的寄存器地址,接着为要写的数据。如果给连续的寄存器写数据,写完一个寄存器后,OV7640会自动把寄存器地址加1,程序可继续向下写,而不需要再次输入地址,从而三相写数据变为了两相写数据,由于本系统中只需要对有限个不连续寄存器的数据进行更改,如果采用对全部寄存器都加以配置这一方法的话,会浪费很多时间和资源,所以我们只对需要更改数据的寄存器进行写数据。对于每一个变化的寄存器,都采用三相写数据的方法。三相写数据的传输周期如图3所示。