STM32学习笔记----OV摄像头

SCCB协议

在学习摄像头之前首先要了解的就是SCCB总线
1、SCCB协议简述
  SCCB是串行摄像机控制总线协议的英文名简称,SCCB协议有两线也有三线,两线为SIO_C与SIO_D,三线为SIO_E、SIO_C与SIO_D。2线的SCCB总线只能是一个主器件对一个从器件控制,但3线SCCB接口可以对多个从器件控制。
  其中SIO_C只能由主机配置(FPGA),SIO_D是一个三态门,双向数据线,既可以由主机控制,也可以由从机控制。

2、数据传输
  完整的数据传输包括两个或三个阶段,每一个阶段包含9位数据,其中高8位为所要传输的数据,最低位根据器件所处情况有不同的取值:
每一个阶段的数据=8位数据+don’t care/NA
如果是主机发送数据,即进行写操作,第九位就为don’t care
如果是从机发送数据,即为读操作,第九位就为NA.

3、SCCB的读写操作
  在读写操作中每一次读写都必须有起始信号和结束信号。
  写操作由三个阶段构成,每一阶段都是9位,具体如下: start + ID地址(7位ID地址+1位读写控制+don’t care)+ 寄存器地址(8位寄存器地址+don’t care) + 数据(8位数据+don’t care) + stop
  读操作由4个阶段构成,每一阶段都是9位,4个阶段分两步完成,第一步由主机发出读取指令,而后从机返回指定数据,具体如下: 为: start1+ ID地址(7位ID地址+1位读写控制+don’t care)+ 寄存器地址(8位寄存器地址+don’t care) +stop1+start 2 +ID地址(7位ID地址+1位读写控制+don’t care)+ 数据(8位数据+don’t care) + stop2

4、时序
1)起始信号start
STM32学习笔记----OV摄像头_第1张图片
2)停止信号stop
STM32学习笔记----OV摄像头_第2张图片
3)总体时序
STM32学习笔记----OV摄像头_第3张图片
5、软件引脚初始化
  任意挑选两个IO口作为时钟线和数据线,将时钟线设置为推挽输出模式,数据线在输出时为推挽输出模式;在输入时是上拉输入模式。
   软件延时是SCCB协议中的关键所在,如若其他配置都已正确而无法读写数据,那么简易通过示波器查看SIO_C和SIO_D两根线查看波形,调整其时序。

更多关于SCCB协议的内容,需要参看Omni Vision公司的SCCB协议说明,文章名为:OmniVision Technologies Seril Camera Control Bus(SCCB) Specification

软件代码说明

1)摄像头图像数据端口初始化
2)摄像头SCCB协议端口初始化
3)复位SCCB
4)读取摄像头ID,判断摄像头是否在位
5)初始化摄像头序列
6)利用SCCB与摄像头通信,设置摄像头的白平衡、色度、亮度、对比度、特效、窗口
7)使能摄像头
8)利用FIFO读取摄像头图像数据,送入LCD

//更新LCD显示
void camera_refresh(void)
{
	u32 j;
 	u16 color;	 
	if(ov_sta==2)
	{
		LCD_Scan_Dir(U2D_L2R);		//LCD显示顺序从上到下,从左到右
		LCD_SetCursor(0x00,0x0000);	//设置光标位置
		LCD_WriteRAM_Prepare();     //开始写入GRAM	
		OV7670_RRST=0;				//开始复位读指针
		OV7670_RCK=0;
		OV7670_RCK=1;
		OV7670_RCK=0;
		OV7670_RRST=1;				//复位读指针结束
		OV7670_RCK=1;  
		for(j=0;j<76800;j++)
		{
			OV7670_RCK=0;
			color=GPIOC->IDR&0XFF;	//读数据
			OV7670_RCK=1; 
			color<<=8;  
			OV7670_RCK=0;
			color|=GPIOC->IDR&0XFF;	//读数据
			OV7670_RCK=1; 
			LCD->LCD_RAM=color;    //一个摄像头数据应为16位,但是只能一次读8位,两次读取后拼成16位
		}   							 
		EXTI->PR=1<<8;     			//清除LINE8上的中断标志
		ov_sta=0;					//开始下一次采集
 		ov_frame++; 
		LCD_Scan_Dir(DFT_SCAN_DIR);	//恢复默认扫描方向
	} 
}	 

硬件连接

VSYNC —FIFO同步信号检测IO
WRST ----FIFO写指针复位
WREN----写入FIFO使能
RCK-------FIFO读数据时钟
RRST-----FIFO读指针复位
OE---------片选信号
SCL-------SCCB时钟线
SDA-------SCCB数据线
D0~D7----FIFO输出数据线

首先通过OV开头的端口使用SCCB对OV7670(摄像头芯片)进行设置,而后OV7670(摄像头芯片)的图像采集数据输出与AL422B(FIFO芯片)的输入连接,图像数据输入FIFO中,单片机通过FIFO调用数据。
STM32学习笔记----OV摄像头_第4张图片
STM32学习笔记----OV摄像头_第5张图片
STM32学习笔记----OV摄像头_第6张图片
STM32学习笔记----OV摄像头_第7张图片

你可能感兴趣的:(STM32笔记)