s3c2440的摄像接口应用
时间:11-19
来源:互联网
点击:
uartISR(void)
{
unsigned char ch;
rSUBSRCPND |= 0x3;
rSRCPND = 0x1<28;
rINTPND = 0x1<28;
ch = rURXH0; //接收字节数据
switch(ch)
{
case 0x11://正常显示视频
com=1;
break;
case 0x22://定格图像
com=2;
break;
case 0x33://放大尺寸
com=3;
break;
case 0x44://缩小尺寸
com =4;
break;
}
rUTXH0 = ch;
}
void Main(void)
{
int HOffset,VOffset;
//初始化UPLL,以得到OV9650的系统时钟
rUPLLCON = (56<12) | (2<4) | 1;//UPLL为96MHz
rCLKdivN |= (1<3);//UCLK = UPLL/2=48MHz
rCAMdivN = (rCAMdivN & ~(0xf))|(1<4)|(2);//设置摄像接口时钟分频
…………
LCD_Init();//初始化LCD,其中LCD的显示格式为24位RGB格式
rLCDCON1|=1;//开启LCD
//配置摄像接口引脚
rGPJCON = 0x2aaaaaa;
rGPJDAT = 0;
rGPJUP = 0;//上拉使能
//硬件复位摄像头
rGPJDAT |= 1<12;
delay(100);
rGPJDAT &= ~(1<12);
//软件复位摄像接口
rCIGCTRL |= (1<31);
delay(100);
rCIGCTRL &= ~(1<31);
delay(100);
//软件复位摄像头
rCIGCTRL |= (1<30);
delay(300);
rCIGCTRL &= ~(1<30);
delay(20000);
config_ov9650();//配置OV9650寄存器
HOffset=0;
VOffset=0;
//初始化摄像接口
CamInit(320,240,HOffset,VOffset);
//开启摄像接口中断,
rSUBSRCPND |= 1<12;
rSRCPND |= 1<6;
rINTPND |= 1<6;
rINTSUBMSK &= ~(1<12);
rINTMSK &= ~(1<6);
pISR_CAM = (U32)CamIsr;
rCIPRSCCTRL|=(1<15);//预览缩放开启
rCIIMGCPT =(1<31)|(1<29);//预览缩放捕捉使能
com=0;
while(1)
{
switch(com)
{
case 1://正常显示
com=0;
rCIPRSCCTRL|=(1<15);
rCIIMGCPT =(1<31)|(1<29);
break;
case 2://定格图像
com=0;
rCIPRSCCTRL&=~(1<15);
rCIIMGCPT &=~((1<31)|(1<29));
break;
case 3://放大视频
com=0;
if(HOffset==160)
break;
HOffset += 8;
VOffset += 8;
rCIPRSCCTRL&=~(1<15);
rCIIMGCPT &=~((1<31)|(1<29));
CamInit(320,240,HOffset,VOffset);
rCIPRSCCTRL|=(1<15);
rCIIMGCPT =(1<31)|(1<29);
break;
case 4://缩小视频
com=0;
if(HOffset==0)
break;
HOffset -= 8;
VOffset -= 8;
rCIPRSCCTRL&=~(1<15);
rCIIMGCPT &=~((1<31)|(1<29));
CamInit(320,240,HOffset,VOffset);
rCIPRSCCTRL|=(1<15);
rCIIMGCPT =(1<31)|(1<29);
break;
}
}
}
{
unsigned char ch;
rSUBSRCPND |= 0x3;
rSRCPND = 0x1<28;
rINTPND = 0x1<28;
ch = rURXH0; //接收字节数据
switch(ch)
{
case 0x11://正常显示视频
com=1;
break;
case 0x22://定格图像
com=2;
break;
case 0x33://放大尺寸
com=3;
break;
case 0x44://缩小尺寸
com =4;
break;
}
rUTXH0 = ch;
}
void Main(void)
{
int HOffset,VOffset;
//初始化UPLL,以得到OV9650的系统时钟
rUPLLCON = (56<12) | (2<4) | 1;//UPLL为96MHz
rCLKdivN |= (1<3);//UCLK = UPLL/2=48MHz
rCAMdivN = (rCAMdivN & ~(0xf))|(1<4)|(2);//设置摄像接口时钟分频
…………
LCD_Init();//初始化LCD,其中LCD的显示格式为24位RGB格式
rLCDCON1|=1;//开启LCD
//配置摄像接口引脚
rGPJCON = 0x2aaaaaa;
rGPJDAT = 0;
rGPJUP = 0;//上拉使能
//硬件复位摄像头
rGPJDAT |= 1<12;
delay(100);
rGPJDAT &= ~(1<12);
//软件复位摄像接口
rCIGCTRL |= (1<31);
delay(100);
rCIGCTRL &= ~(1<31);
delay(100);
//软件复位摄像头
rCIGCTRL |= (1<30);
delay(300);
rCIGCTRL &= ~(1<30);
delay(20000);
config_ov9650();//配置OV9650寄存器
HOffset=0;
VOffset=0;
//初始化摄像接口
CamInit(320,240,HOffset,VOffset);
//开启摄像接口中断,
rSUBSRCPND |= 1<12;
rSRCPND |= 1<6;
rINTPND |= 1<6;
rINTSUBMSK &= ~(1<12);
rINTMSK &= ~(1<6);
pISR_CAM = (U32)CamIsr;
rCIPRSCCTRL|=(1<15);//预览缩放开启
rCIIMGCPT =(1<31)|(1<29);//预览缩放捕捉使能
com=0;
while(1)
{
switch(com)
{
case 1://正常显示
com=0;
rCIPRSCCTRL|=(1<15);
rCIIMGCPT =(1<31)|(1<29);
break;
case 2://定格图像
com=0;
rCIPRSCCTRL&=~(1<15);
rCIIMGCPT &=~((1<31)|(1<29));
break;
case 3://放大视频
com=0;
if(HOffset==160)
break;
HOffset += 8;
VOffset += 8;
rCIPRSCCTRL&=~(1<15);
rCIIMGCPT &=~((1<31)|(1<29));
CamInit(320,240,HOffset,VOffset);
rCIPRSCCTRL|=(1<15);
rCIIMGCPT =(1<31)|(1<29);
break;
case 4://缩小视频
com=0;
if(HOffset==0)
break;
HOffset -= 8;
VOffset -= 8;
rCIPRSCCTRL&=~(1<15);
rCIIMGCPT &=~((1<31)|(1<29));
CamInit(320,240,HOffset,VOffset);
rCIPRSCCTRL|=(1<15);
rCIIMGCPT =(1<31)|(1<29);
break;
}
}
}
s3c2440摄像接 相关文章:
- s3c2440的摄像接口拍照应用(11-26)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)