⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csi.c

📁 采用32位嵌入式芯片SPCE3200(凌阳)设计的开发板,具有多媒体功能。其中包含了网络、SD卡、TV、UART等是全部十个C程序。
💻 C
字号:
//=============================================================
//文件名称:CSI.c
//功能描述: CSI设置
//维护记录: 2007-8-14 by liuxue modify
//=============================================================

#include "SPCE3200_Register.h"
#include "SPCE3200_Constant.h"
#include "CSI.h"

//=============================================================
// 语法格式:	void CSI_Init(unsigned int FB1_Addr, unsigned int FB2_Addr, unsigned int FB3_Addr);
// 实现功能:	初始化CSI,并设置CSI buffer
// 参数:		CSI buffer地址
// 返回值:		无
//=============================================================

void CSI_Init(unsigned int FB1_Addr, unsigned int FB2_Addr, unsigned int FB3_Addr)
{
	*P_CSI_INTERFACE_SEL |= C_CSI_PORT_CCIR656;	// 选择CSI的接口格式为:CCIR656
	*P_CSI_CLK_CONF = C_CSI_CLK_EN				// 使能CSI模块时钟
					 | 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首地址
}

void CSI_UnInit(void)
{
	*P_CSI_INTERFACE_SEL &= ~C_CSI_PORT_CCIR656;	// 选择CSI的接口格式为:CCIR656
	*P_CSI_CLK_CONF = 0;			// 时钟不复位
}


//=============================================================
// 语法格式:	void CSI_Ctrl_Set(unsigned int MODE, unsigned int SensorFps);
// 实现功能:	CSI控制寄存器的设置
// 参数:		MODE:VGA or QVGA;SensorFps:帧速
// 返回值:		无
//=============================================================

void CSI_Ctrl_Set(unsigned int MODE, unsigned int ColorMode, unsigned int SensorFps)
{
	unsigned int cr_set;

	cr_set = C_CSI_CSI_EN 				//使能CSI模块
					| C_CSI_TG_CCIR656 			//选择CSI的CCIR656接口格式
					| C_CSI_CLKINV_INV ;		//CSI时钟方式选择反向输入
	
	if(MODE == VGA)							// VGA or QVGA
	{
		cr_set |= C_CSI_TG_VGA;				// b4
	}
	else
	{
		cr_set &= ~C_CSI_TG_VGA;
	}
	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;					//使配置生效
}

void CSI_Cut(unsigned int Enable, unsigned int HStart, unsigned int VStart, unsigned int HEnd, unsigned int VEnd)
{
	if(Enable == 1)
	{
		*P_CSI_TG_CTRL |= 0x20000000;
		*P_CSI_CUT_SETUP = (HStart << 24) | (VStart << 16) | ((HEnd - HStart) << 8) | (VEnd - VStart);
	}
	else
		*P_CSI_TG_CTRL &= ~0x20000000;
}

⌨️ 快捷键说明

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