📄 346reg.c
字号:
// Bit[6] -> Watch-Dog Timer Interrupt(0:措扁 1:辆丰)
// Bit[7] -> Still Image/Movie狼 Modem CPU肺 傈价肯丰惑怕 钎矫(0:措扁 1:肯丰)
// Bit[8] -> Still Image/Movie狼 Modem CPU肺狼 傈价惑怕 钎矫(0:OK 1:Error)
// Bit[9] -> reserved
// Bit[10] -> reserved
// Bit[11] -> Still/Movie Image狼 Decoding肯丰 惑怕 钎矫(0:措扁 1:肯丰)
// Bit[12] -> Still/Movie Image狼 Decoding惑怕 钎矫(0:OK 1:Error)
// Bit[13] -> reserved
// Bit[14] -> reserved
// Bit[15] -> BMP Save肯丰
//=======================================================================================
U16 CamCommandStatus(void)
{
U16 data;
ReadAsicCommand_Escape(CMSR, &data);
return data;
}
//=======================================================================================
//
// Register Address: 0x06
//
// Bit[0] -> Sensor狼 Reset Pin狼 必己阑 钎矫
// Bit[1] -> Interrupt 巧狼 己拜阑 钎矫
// Bit[5:2] -> edge interrupt狼 版快 interrupt pin阑 clear矫虐绰单 吧府绰 clock辨捞
// Bit[8] -> Preview Interrupt狼 惯积 器牢飘甫 函券矫挪促.
// Bit[9] -> LCD Preview甫 力绢茄促.
// Bit[10] -> 墨皋扼 悼累 吝 Video Buffer狼 康开阑 佬阑荐 乐绰 path甫 control茄促.
//
//=======================================================================================
void CamInterrupt_ResetMode(U16 polarity, U16 edgeOrfall, U16 clocknum, U16 point, U16 previewflag, U16 readflag)
{
U16 value;
value = (polarity) | (edgeOrfall << 1) | (clocknum << 2) | (point << 8) | (previewflag << 9) | (readflag << 10);
WriteAsicCommand_Escape(IRMR, value);
}
//=======================================================================================
//
// Register Address: 0x07
//
// Bit[6:0] -> X规氢 Thumbnail target size(default 0x28)
// Bit[7] -> reserved(default 0x0)
// Bit[14:8] -> y规氢 Thumbnail target size(default 0x1e)
// Bit[15] -> Thumbnail Support(1:support 0:not support)(default 0x01)
//
// 4 Pixel Unit
//=======================================================================================
void CamThumbnailControl(U16 XThumbsize, U16 YThumbsize, U16 onoffflag)
{
U16 value;
value = (XThumbsize/4) | ((YThumbsize/4) << 8) | (onoffflag << 15);
WriteAsicCommand_Escape(THUMBC, value);
}
//=======================================================================================
//
// Register Address: 0x08
//
// MultiShot Mode俊辑父 狼固啊 乐娇.
//
//=======================================================================================
void CamSetStillImageNumber(U16 data)
{
WriteAsicCommand_Escape(STINUM, data);
}
//=======================================================================================
//
// Register Address: 0x09
//
// Bit[6:0] -> 弥措 64M狼 康开阑 Access啊瓷窃.
//
//=======================================================================================
void CamUpperSRAMStartAddress(U16 Addr)
{
U16 value;
value = Addr & (0x7f); //clear bit 7
WriteAsicCommand_Escape(SRAMSU, Addr);
}
//=======================================================================================
//
// Register Address: 0x0A
//
//=======================================================================================
void CamLowerSRAMStartAddress(U16 Addr)
{
WriteAsicCommand_Escape(SRAMSL, Addr);
}
//=======================================================================================
//
// Register Address: 0x0B
//
// read矫俊绰 SRAM栏肺何磐 佬绢棵 蔼捞 咯扁俊 甸绢 乐栏哥, write矫俊绰 modem CPU啊
// 镜 单捞鸥甫 捞 饭瘤胶磐俊 静搁 等促.
//=======================================================================================
void CamReadSram(U16* ImageBuf, U32 endsize)
{
long i=0;
WriteAsic_Escape_Cmd(0x0b);
for(i=0;i<endsize/2;i++)
{
ReadAsic_Escape_Data(&ImageBuf[i]);
}
}
void CamWriteSram(U16 *ImageBuf, U32 size_word)
{
long i=0;
WriteAsic_Escape_Cmd(0x0b);
for(i=0;i<size_word/2;i++)
{
WriteAsic_Escape_Data(ImageBuf[i]);
}
}
//=======================================================================================
//
// Register Address: 0x0C
//
//
// Description:
// 捞 巧篮 modem CPU啊 漂沥 interrupt啊 惯积窍绰巴阑 盔摹 臼绰 版快俊 荤侩.
// 漂洒, Phone Booting矫俊 interrupt甫 葛滴 masking窍绊 酵篮 版快绰 葛电 厚飘甫
// "1"肺 窍搁 等促.
//
// Register 0x05甫 曼炼.
//=======================================================================================
void CamInterruptMask(U16 data)
{
WriteAsicCommand_Escape(INTMSK, data);
}
//=======================================================================================
//
// Register Address: 0x0D
//
// Bit[9:0] -> ms窜困 replay矫 frame埃狼 埃拜阑 炼沥.
// Bit[10] -> 磊悼 馆汗 葛靛 On/Off
// Bit[11] -> RTC俊 悼扁甫 嘎苗 犁积茄促.
//=======================================================================================
void CamMovieReplayInterval(U16 replaytime, U16 repeatflag, U16 RTCFlag)
{
U16 value;
value = (replaytime) | (repeatflag << 10) | (RTCFlag << 11);
WriteAsicCommand_Escape(MOVRINT, value);
}
//=======================================================================================
//
// Register Address: 0x0E
//
// MultiShot Command甫 焊郴扁傈俊 嘛阑 厘荐甫 急琶茄促.
// VGA狼 版快绰 弥措 3厘, 唱赣瘤绰 9厘鳖瘤.
//
//=======================================================================================
void CamMultiShotImageCount(U16 num)
{
WriteAsicCommand_Escape(MSHOTNUM, num);
}
//=======================================================================================
//
// Register Address: 0x0F
//
// Bit[5:0] -> Frame Sample Interval
// Bit[7:6] -> reserved
// Bit[8] -> skipenableflag
//
//=======================================================================================
void CamFrameSamplingInterval(U16 interval, U16 flag)
{
U16 value = (interval) | (flag << 8);
WriteAsicCommand_Escape(FRMSINT, value);
}
//=======================================================================================
//
// Register Address: 0x10
//
// default : 0x0000
//=======================================================================================
void CamJPEGWindowStartAddress(U16 XAddr, U16 YAddr)
{
U16 value;
value = (XAddr/4) | ((YAddr/4) << 8);
WriteAsicCommand_Escape(JPGWSADDR, value);
}
//=======================================================================================
//
// Register Address: 0x11
//
// default : 0x78A0 (160 By 120)
//=======================================================================================
void CamJPEGWindowEndAddress(U16 XAddr, U16 YAddr)
{
U16 value;
value = (XAddr/4) | ((YAddr/4) << 8);
WriteAsicCommand_Escape(JPEGWIDTH, value);
}
//=======================================================================================
//
// Register Address: 0x12
//
// default: 0x0014 (480 By 480)
//=======================================================================================
void CamDisplayStartAddress(U16 XAddr, U16 YAddr)
{
U16 value;
value = (XAddr/4) | ((YAddr/4) << 8);
WriteAsicCommand_Escape(PRESADDR, value);
}
//=======================================================================================
//
// Register Address: 0x13
//
// default: 0x0x7878(120 By 120)
//=======================================================================================
void CamDisplayEndAddress(U16 XAddr, U16 YAddr)
{
U16 value;
value = (XAddr/4) | ((YAddr/4) << 8);
WriteAsicCommand_Escape(PREWIDTH, value);
}
//=======================================================================================
//
// Register Address: 0x14
//
// default: 0x78a0 (4pixel窜困肺 历厘 啊瓷)(640 By 480)
//=======================================================================================
void CamJPEGTargetSize(U16 XSize, U16 YSize)
{
U16 value;
value = (XSize/4) | ((YSize/4) << 8);
WriteAsicCommand_Escape(JPGTSIZ, value);
}
//=======================================================================================
//
// Register Address: 0x15
//
// default: 0x1e1e(4pixel窜困肺 历厘 啊瓷)(120 By 120)
//=======================================================================================
void CamPreviewTargetSize(U16 XSize, U16 YSize)
{
U16 value;
value = (XSize/4) | ((YSize/4) << 8);
WriteAsicCommand_Escape(PRETSIZ, value);
}
void SetJPEGWindowSize(U16 XStart, U16 YStart, U16 XEnd, U16 YEnd, U16 XTarget, U16 YTarget)
{
CamJPEGWindowStartAddress(XStart, YStart);
CamJPEGWindowEndAddress(XEnd, YEnd);
CamJPEGTargetSize(XTarget, YTarget);
}
void SetViewWindowSize(U16 XStart, U16 YStart, U16 XEnd, U16 YEnd, U16 XTarget, U16 YTarget)
{
CamDisplayStartAddress(XStart, YStart);
CamDisplayEndAddress(XEnd, YEnd);
CamPreviewTargetSize(XTarget, YTarget);
}
//=======================================================================================
//
// Register Address: 0x16
//
// default: 0x18
// 蔼捞 努荐废 颇老 荤捞令绰 累酒瘤绊 拳龙篮 冻绢咙.
//
//=======================================================================================
void CamJPEGQuantizationFactor(U16 scalefactor)
{
WriteAsicCommand_Escape(JPGQFAC, scalefactor);
}
//=======================================================================================
//
// Register Address: 0x17
//
// default: 0x800e
//
//=======================================================================================
void CamABRCLimit(U16 lowlimit, U16 highlimit)
{
U16 value;
value = (lowlimit) | (highlimit << 8);
WriteAsicCommand_Escape(ABRCLIM, value);
}
//=======================================================================================
//
// Register Address: 0x18
//
// Bit[1:0] -> 00:normal mode
// 01:overwrite mode
// 10:overlay mode
// Bit[4:2] -> 000:墨皋扼 捞固瘤客 硅版阑 Exclusive OR
// 001:75% + 25%
// 010:50% + 50%
// 011:25% + 75%
// 100:100%硅版 捞固瘤
// Bit[9:8] -> PIP mode
// 00:Normal Mode
// 01:Overwrite Mode
// 10:Overlay Mode
//
// default: 0x0000
//=======================================================================================
void CamOSDMode(U16 OSDmode, U16 option, U16 PIPmode)
{
U16 value;
value = (OSDmode) | (option << 2) | (PIPmode << 8);
WriteAsicCommand_Escape(OSDMOD, value);
}
//=======================================================================================
//
// Register Address: 0x19
//
// overwrite mode俊辑 硅版措脚俊 墨皋扼 捞固瘤甫 display且巴阑 唱鸥郴绰 color code蔼
//
// default: 0x001f(柳茄 颇尔祸)
//
//=======================================================================================
void CamChromaKey(U16 keyvalue)
{
WriteAsicCommand_Escape(CHROMKEY, keyvalue);
}
//=======================================================================================
//
// Register Address: 0x1A
//
// LCD惑俊 preview登绰 拳搁狼 荐甫 钎矫
//
//=======================================================================================
U16 CamTimeStamp(void)
{
U16 data;
ReadAsicCommand_Escape(TIMESTMP, &data);
return data;
}
//=======================================================================================
//
// Register Address: 0x1B
//
// movie capture time阑 沥窍绰单 荤侩(窜困绰 檬)
//
//=======================================================================================
void CamMovieCaptureTime(U16 time)
{
WriteAsicCommand_Escape(MOVCAPTM, time);
}
//=======================================================================================
//
// Register Address: 0x1C
//
// Bit[0] -> Movie Capture Stop
// Bit[1] -> Movie 祈笼葛靛俊辑 荤侩且 start point甫 汲沥窍绊 酵阑锭
// Bit[2] -> Movie 祈笼葛靛俊辑 荤侩且 end point甫 汲沥窍绊 酵阑锭
// Bit[3] -> Movie 祈笼葛靛俊辑 荤侩且 start point甫 秒家窍绊 酵阑锭
// Bit[4] -> Movie 祈笼葛靛俊辑 荤侩且 end point甫 秒家窍绊 酵阑锭
// Bit[5] -> Movie犁积 肚绰 历厘阑 祈笼葛靛肺 窍绊磊 且锭 set茄促.
//=======================================================================================
void CamStopMovieCapture(U16 stopflag)
{
WriteAsicCommand_Escape(STOPMOVCAP, stopflag);
}
//=======================================================================================
//
// Register Address: 0x1D
//
// Bit[14:0] -> time 1ms窜困
// Bit[15] -> enable flag
//
// default: 0x0020
//=======================================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -