?? csi.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 + -