csi.c

来自「凌阳SPCE3200多媒体开发板自带源程序。共安排了32个子目录」· C语言 代码 · 共 54 行

C
54
字号
#include "Csi.h"
#include "SPCE3200_Constant.h"
#include "SPCE3200_Register.h"
#include "I2C.h"
#include "..\init_ov7720.h"

//============================================//
// 函数名称:InitSensor ()
// 功能描述:初始化CMOS SENSOR 控制器
// 语法格式:void InitSensor(int MODE, int ColorMode, int SensorFps, 
//							 unsigned int FB1_Addr, unsigned int FB2_Addr, unsigned int FB3_Addr)
// 入口参数:分辨率、颜色模式、帧速率、CSI BUFFER 1 地址、CSI BUFFER 2 地址、CSI BUFFER 3 地址
// 返回值  :无
//============================================//

void InitSensor(int MODE, int ColorMode, int SensorFps, unsigned int FB1_Addr, unsigned int FB2_Addr, unsigned int FB3_Addr)
{
	unsigned int cr_set = 0;
	*P_CSI_INTERFACE_SEL |= C_CSI_PORT_CCIR656;	//选择CSI的接口格式为:CCIR656
	*P_CSI_CLK_CONF = C_CSI_CLK_EN				//使能时钟
					 |C_CSI_RST_DIS;			//时钟不复位
	*P_CSI_CLK_SEL = C_CSI_PIXELCLK_SRC;		//选择CMOS传感器的时钟作为象素时钟

	*P_CSI_BUFFER_SA1 = FB1_Addr;				//设置缓冲区1首地址
	*P_CSI_BUFFER_SA2 = FB2_Addr;				//设置缓冲区2首地址
	*P_CSI_BUFFER_SA3 = FB3_Addr;				//设置缓冲区3首地址		

	cr_set = cr_set | C_CSI_CSI_EN 				//使能CSI模块
					| C_CSI_TG_CCIR656 			//选择CSI的CCIR656接口格式
					| C_CSI_CLKINV_INV ;		//CSI时钟方式选择反向输入
	
	if(SensorFps == 30)							//根据不同帧速率进行设置
	{
		cr_set |= C_CSI_QVGA27_EN | C_CSI_DATA_TYPE2;
	}
	else if(SensorFps == 15)
	{
		cr_set |= C_CSI_DATA_TYPE1;
		*P_CSI_CLK_SEL |= C_CSI_CLK_24M;
		*P_CLK_PLLAU_CONF = 0x04;
	}
	if(ColorMode == YUVIN)						//根据颜色模式进行设置
	{
		cr_set = cr_set | C_CSI_IN_YUV | C_CSI_YUV_YUYV;
	}
	else if(ColorMode == RGB565IN)
	{
		cr_set = cr_set | C_CSI_IN_RGB565;
	}
	*P_CSI_TG_CTRL = cr_set;					//使配置生效
	
	init_ov7720(MODE, ColorMode, SensorFps);	//初始化摄像头
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?