📄 346reg.c
字号:
/*************************************************************************/
/* FILE NAME : 346app.c */
/* VERSION : 0.9 */
/* DATE : 2003. 05. 13 */
/* DESCRIPTION */
/* Basic Library Functions for CLC346 */
/* */
/* DATA STRUCTURES */
/* */
/* FUNCTIONS : Basic Library Functions for CLC346 Register Handling. */
/* Refer to clc346i.h */
/* DEPENDENCIES */
/* */
/* Revision History : */
/* 2003.05.13 kbs : First Revised */
/* */
/*************************************************************************/
#include "portab_new.h"
#include "346reg.h"
#include "camconfig.h"
/*****************************************************/
/* */
/* CLC346 CMD Register Write/Read */
/* */
/*****************************************************/
void WriteAsicCommand_Escape(U16 RegAddress, U16 RegData)
{
U16 temp = 0;
temp = (ESCAEXPADDR) << CPU16BITDATA;
*(volatile U16*)(LCD_Base + temp) = RegAddress;
temp = (ESCAEXPDATA) << CPU16BITDATA;
*(volatile U16*)(LCD_Base + temp) = RegData;
}
void WriteAsic_Escape_Cmd(U16 RegAddress)
{
U16 temp;
temp = (ESCAEXPADDR) << CPU16BITDATA;
*(volatile U16*)((LCD_Base) + temp) = RegAddress;
}
void WriteAsic_Escape_Data(U16 RegData)
{
U16 temp;
temp = (ESCAEXPDATA) << CPU16BITDATA;
*(volatile U16*)((LCD_Base) + temp) = RegData;
}
void ReadAsicCommand_Escape(U16 RegAddress, U16 *RegData)
{
U16 temp = 0;
temp = (ESCAEXPADDR) << CPU16BITDATA;
*(volatile U16*)(LCD_Base + temp) = RegAddress;
temp = (ESCAEXPDATA) << CPU16BITDATA;
*RegData = *(volatile U16*)(LCD_Base + temp);
}
void ReadAsic_Escape_Cmd(U16 RegAddress)
{
U16 temp = 0;
temp = (ESCAEXPADDR) << CPU16BITDATA;
*(volatile U16*)(LCD_Base + temp) = RegAddress;
}
void ReadAsic_Escape_Data(U16 *RegData)
{
U16 temp = 0;
temp = (ESCAEXPDATA) << CPU16BITDATA;
*RegData = *(volatile U16*)(LCD_Base + temp);
}
//=====================================================================================
// Register Address: 0x00
// Bit[0] -> BMP Capture with LCD size in BMP
// Bit[1] -> Preview
// Bit[2] -> Still Capture
// Bit[3] -> Multi-shot Capture
// Bit[4] -> Movie Capture
// Bit[5] -> ASIC internal Buffer狼 still image甫 LCD俊 棵副版快
// Bit[6] -> ASIC internal Buffer狼 movie甫 LCD俊 棵副 版快
// Bit[7] -> Still image甫 迄狼 flash俊 历厘且版快
// Bit[8] -> Movie甫 迄狼 flash俊 历厘且版快
// Bit[9] -> flash俊 历厘等 still image甫 LCD俊 棵副版快
// Bit[10] -> flash俊 历厘等 movie甫 LCD俊 棵副版快
// Bit[11] -> OSD image甫 Capture with LCD size in JPEG
// Bit[12] -> 泅犁 LCD惑狼 image甫 capture窍咯 jpeg肺 历厘
// Bit[13] -> JPEG甫 decoding茄饶 SRAM buffer俊 SIF 农扁肺 历厘
// Bit[15] -> SRAM加狼 YCbCr Data甫 jpeg肺 拘绵.
//=====================================================================================
//=====================================================================================
//=====================================================================================
void DoCameraOperation(U16 Function)
{
WriteAsicCommand_Escape(OPMODE, Function);
}
//=====================================================================================
// Current LCD Display Image Capture in BMP......
//
//
// Register 0x00狼 Bit[0]阑 Set茄促.
// -. BMP Capture(泅犁 display登绊 乐绰 LCD农扁客 鞍篮 捞固瘤甫 BMP肺 历厘茄促.
// Modem CPU啊 捞 Bit甫 set矫虐搁, ASIC篮 促澜 拳搁阑 皋葛府俊
// 历厘饶 捞 bit甫 clear矫虐绊, 促澜 拳搁阑 拌加利栏肺 display茄促.
//=====================================================================================
void CamCurrentLCDImageCaptureWithBMP(void)
{
WriteAsicCommand_Escape(OPMODE, 0x01);
}
//=====================================================================================
// Image Display On......
//
// Register 0x00狼 Bit[1]阑 Set茄促.
// -. Preview On(ASIC篮 LCD俊 image甫 display茄促.)
//
//=====================================================================================
void CamPreview_On(void)
{
WriteAsicCommand_Escape(OPMODE, 0x02);
}
//=====================================================================================
// Image Display Off......
//
// Register 0x00狼 Bit[1]阑 clear茄促.
// -. Preview On(ASIC篮 LCD俊 image甫 吝瘤茄促.)
//
//=====================================================================================
void CamPreview_Off(void)
{
WriteAsicCommand_Escape(OPMODE, 0x00);
}
//=====================================================================================
// One Image Capture......
//
// Register 0x00狼 Bit[2]阑 Set茄促.
// -. One Image Capture饶 ASIC篮 捞 Bit甫 Clear茄促.
//
//=====================================================================================
void CamStillImageCapture(void)
{
WriteAsicCommand_Escape(OPMODE, 0x0004);
}
//=====================================================================================
// Multi-Shot Image Capture......
//
// Register 0x00狼 Bit[3]阑 Set茄促.
// -. 楷荤狼 埃拜苞 概荐绰 Register甫 烹秦辑 汲沥 啊瓷.
// -. ASIC篮 楷荤饶 捞 厚飘甫 努府绢 茄促.
//
//
//=====================================================================================
void CamMultiShotImageCapture(void)
{
WriteAsicCommand_Escape(OPMODE, 0x0008); //0000 0000 0000 1000
}
//=====================================================================================
// Movie Capture......
//
// Register 0x00狼 Bit[4]阑 Set茄促.
// -. Movie Capture客 包访等 Register甫 烹秦辑 汲沥 啊瓷.
// -. ASIC篮 悼康惑 Capture饶 捞 厚飘甫 努府绢 茄促.
//=====================================================================================
void CamMovieCapture(void)
{
WriteAsicCommand_Escape(OPMODE, 0x0010); //0000 0000 0001 0000
}
//=====================================================================================
// Still Image Display from ASIC internal Buffer......
//
// Register 0x00狼 Bit[5]阑 Set茄促.
// -. ASIC狼 郴何俊 历厘登绢 乐绰 still image甫 LCD俊 棵妨辑 display茄促.
// -. ASIC篮 decode窍咯 Display饶 捞 厚飘甫 努府绢茄促.
//
//=====================================================================================
void CamSRAMStillImageView(void)
{
WriteAsicCommand_Escape(OPMODE, 0x0020); // 0000 0000 0010 0000 3.
}
//=====================================================================================
// Movie Display from ASIC internal Buffer......
//
// Register 0x00狼 Bit[6]阑 Set茄促.
// -. ASIC狼 郴何俊 历厘登绢 乐绰 悼康惑阑 LCD俊 棵妨辑 display茄促.
// -. ASIC篮 decode窍咯 Display饶 捞 厚飘甫 努府绢茄促.
//
//=====================================================================================
void CamSRAMMovieView(void)
{
WriteAsicCommand_Escape(OPMODE, 0x0040); //0000 0000 0100 0000
}
//=====================================================================================
// Still Image Save......
//
// Register 0x00狼 Bit[7]阑 Set茄促.
// -. ASIC狼 郴何俊 历厘登绢 乐绰 still image甫 迄狼 flash memory俊 历厘窍绊磊 窍绰
// 版快.
// -. ASIC篮 葛电 捞固瘤俊 措茄 傈价捞 场抄饶 牢磐反飘甫 烹秦辑 Modem CPU俊霸 舅赴促.
//
//=====================================================================================
void CamStillImageSave(void)
{
WriteAsicCommand_Escape(OPMODE, 0x0080);
}
//=====================================================================================
// Movie Save......
//
// Register 0x00狼 Bit[8]阑 Set茄促.
// -. ASIC狼 郴何俊 历厘登绢 乐绰 movie甫 迄狼 flash memory俊 历厘窍绊磊 窍绰 版快.
// -. ASIC篮 葛电 捞固瘤俊 措茄 傈价捞 场抄饶 牢磐反飘甫 烹秦辑 Modem CPU俊霸 舅赴促.
//
//=====================================================================================
void CamMovieSave(void)
{
WriteAsicCommand_Escape(OPMODE, 0x0100); //0000 0001 0000 0000
}
//=====================================================================================
// Still Image Display......
//
// Register 0x00狼 Bit[9]阑 Set茄促.
// -. Modem CPU狼 flash memory俊 历厘登绢 乐绰 still image甫 LCD惑俊 display窍扁 困秦辑
// ASIC狼 郴何 buffer肺 单捞鸥甫 颗扁绰 版快.
// 葛电 单捞鸥狼 傈价捞 场抄饶, Modem CPU啊 捞 厚飘甫 clear茄促.
//
//=====================================================================================
void CamStillImageDownload(void)
{
WriteAsicCommand_Escape(OPMODE, 0x0200); //0000 0010 0000 0000
}
//=====================================================================================
// Movie Display......
//
// Register 0x00狼 Bit[10]阑 Set茄促.
// -. Modem CPU狼 flash memory俊 历厘登绢 乐绰 movie甫 LCD惑俊 display窍扁 困秦辑
// ASIC狼 郴何 buffer肺 单捞鸥甫 颗扁绰 版快.
// 葛电 单捞鸥狼 傈价捞 场抄饶, Modem CPU啊 捞 厚飘甫 clear茄促.
//
//=====================================================================================
void CamCaptureMovieDisplay(void)
{
WriteAsicCommand_Escape(OPMODE, 0x0400); //0000 0100 0000 0000
}
//=====================================================================================
// Current LCD Display Image Capture in JPEG......
//
// Register 0x00狼 Bit[11]阑 Set茄促.
// -. OSD 捞固瘤唱 泅犁 display登绊 乐绰 捞固瘤甫 LCD农扁 父怒 JPEG栏肺 拘绵茄促.
// -. ASIC篮 Capture饶 捞 厚飘甫 努府绢茄促.
//
//=====================================================================================
void CamCurrentLCDImageCapturewithJPEG(void)
{
WriteAsicCommand_Escape(OPMODE, 0x0800); //0000 1000 0000 0000
}
//=====================================================================================
// Current LCD Display Image Save in JPEG......
//
// Register 0x00狼 Bit[12]阑 Set茄促.
// -. OSD 捞固瘤唱 泅犁 display登绊 乐绰 捞固瘤甫 JPEG栏肺 拘绵茄促.
// -. ASIC篮 Capture饶 捞 厚飘甫 努府绢茄促.
//
//=====================================================================================
void CamCurrentLCDImageSavewithJPEG(void)
{
WriteAsicCommand_Escape(OPMODE, 0x1000); //0001 0000 0000 0000
}
//=====================================================================================
// Jpeg Image decoding饶 SRAM Buffer俊 历厘......
//
// Register 0x00狼 Bit[13]阑 Set茄促.
// -. OSD 捞固瘤唱 泅犁 display登绊 乐绰 捞固瘤甫 JPEG栏肺 拘绵茄促.
// -. ASIC篮 Capture饶 捞 厚飘甫 努府绢茄促.
//
//=====================================================================================
void CamImageSRAMSaveAfterJPEGDecoding(void)
{
WriteAsicCommand_Escape(OPMODE, 0x2000); //0010 0000 0000 0000
}
//=====================================================================================
// YCBCR Image Data in SRAM with JPEG Compression
//
// Register 0x00狼 Bit[15]阑 Set茄促.
//
//=====================================================================================
void CamYCBCRInSRAMJPEGCompression(void)
{
WriteAsicCommand_Escape(OPMODE, 0x8000); //1000 0000 0000 0000
}
//=======================================================================================
// Register Address: 0x01
// Bit[1:0] -> reserved
// Bit[4:2] -> 000:弊措肺 display
// 001:矫拌规氢栏肺 90档 雀傈
// 010:矫拌规氢栏肺 180档 雀傈
// 011:矫拌规氢栏肺 270档 雀傈
// 100: X绵栏肺 Flip
// 101: Y绵栏肺 Flip
//
// FrameSkip Register俊 setting阑 窍扁甫 夸备窃.
//=======================================================================================
void CamPreviewImageRotation_Skip(U16 rotationflag)
{
U16 value = (rotationflag << 2);
WriteAsicCommand_Escape(PIRIS, value);
}
//=======================================================================================
// Register Address: 0x02
// Bit[7:0] -> warm, cool, and fog汲沥俊 包访等 Parameter.
// Bit[10:8] -> 000:normal
// 001:warm
// 010:cool
// 011:fog
// 100:negation
// 101:summation ;other register 0x6D, 0x6E, 0x6F曼炼
// 110:ANDing ;other register 0x6D, 0x6E, 0x6F曼炼
// 111:ORing ;other register 0x6D, 0x6E, 0x6F曼炼
// Bit[11] -> 0:color
// 1:gray-scale
// Bit[12] -> 0:Color-Key蔼阑 炼例(弊措肺 荤侩)
// 1:Color-Key蔼阑 炼例(1/2肺 荤侩)
// Bit[13] -> 0:image蔼阑 炼例(弊措肺 荤侩)
// 1:image蔼阑 炼例(1/2肺 荤侩)
//=======================================================================================
void CamImageEffect(U16 parameter, U16 effectmode, U16 color, U16 colorkey, U16 imagevalue)
{
U16 value = (parameter) | (effectmode << 8) | (color << 11) | (colorkey << 12) | (imagevalue << 13);
WriteAsicCommand_Escape(IMEFF, value);
}
//=======================================================================================
// Register Address: 0x03(Upper)
//
// Read Only Register
// 4 Byte Unit
//=======================================================================================
U16 CamJpegFileSizeUpper(void)
{
U16 data;
ReadAsicCommand_Escape(JPGFSH, &data);
return data;
}
//=======================================================================================
// Register Address: 0x04(Lower)
//
// Read Only Register
// 4 Byte Unit
//=======================================================================================
U16 CamJpegFileSizeLower(void)
{
U16 data;
ReadAsicCommand_Escape(JPGFSL, &data);
return data;
}
//=======================================================================================
//
// Register Address: 0x05
//
// Bit[0] -> Modem CPU啊 LCD力绢甫 夸备窍绰 版快 啊瓷窃阑 钎矫
// Bit[1] -> JPEG/MJPEG殿 Capture狼 肯丰惑怕钎矫(0:措扁 1:肯丰)
// Bit[2] -> JPEG/MJPEG殿 Capture狼 惑怕钎矫(0:OK 1:Error)
// Bit[3] -> Multi-Shot俊辑 弥辆拳搁阑 力寇茄 唱赣瘤 拳搁惑怕 钎矫(0:措扁 1:肯丰)
// Bit[4] -> LCD俊辑 墨皋扼俊辑 Capture茄 康惑狼 Display甫 付模 版快(0:措扁 1:肯丰)
// Bit[5] -> Modem CPU啊 结霖 LCD Buffer狼 郴侩阑 盔窍绰 康开俊 Display(0:措扁 1:肯丰)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -