📄 346reg.c
字号:
void CamWatchDogTimer(U16 time, U16 onoffflag)
{
U16 value;
value = (time) | (onoffflag << 15);
WriteAsicCommand_Escape(WDT, value);
}
//=======================================================================================
//
// Register Address: 0x1E
//
// Bit[6:0] -> Target file size(default 0x30)
// Bit[7] -> ABRC On/Off(default 0x00)
//
//=======================================================================================
void CamAutomaticBitRateControl(U16 onoffflag, U16 filesize)
{
U16 value = (filesize) | (onoffflag << 7);
WriteAsicCommand_Escape(ABRC, value);
}
//=======================================================================================
// Register Address: 0x20
//
// Bit[0] -> full-chip reset(Hardware Reset).
// Bit[1] -> Partially CLC346 chip reset.
// Bit[2] -> JPEG decoder康开吝 VLD/Parser何盒父阑 檬扁拳 矫挪促.
//
//=======================================================================================
void CamSoftResetControl(U16 flag)
{
WriteAsicCommand_Escape(SWRST, flag);
}
//=======================================================================================
//
// Register Address: 0x21
//
// Bit[2:0] -> 000:OmniVision VGA(OV7635)
// 001:Hynix VGA(HyCa3)
// 010:Sony VGA
// 011:Sanyo CIF
//
//=======================================================================================
U16 CamCISType(void)
{
U16 data;
ReadAsicCommand_Escape(CISTYPE, &data);
return data;
}
//=======================================================================================
//
// Register Addrss: 0x22
//
// Bit[6:0] -> Sensor狼 IIC Device ID
// Bit[7] -> 橇肺弊伐登绰 sensor甫 荤侩(default 1)
//
//=======================================================================================
void CamSensorIICID(U16 idvalue)
{
U16 value = (0x80) | (idvalue);
WriteAsicCommand_Escape(I2CID, value);
}
//=======================================================================================
//
// Register Address: 0x23
//
//
// Description: Clock寸 Sample rate甫 汲沥
// 0: 1 clock寸 sample
// 1: 2 clock寸 sample
// 2: 3 clock寸 sample
//
// Sony & Sanyo绰 1肺 汲沥且巴.
//=======================================================================================
void CamInputPixelRatio(U16 ratio)
{
WriteAsicCommand_Escape(IPR, ratio);
}
//=======================================================================================
//
// Register Address: 0x24
//
// Bit[0] -> 1:Sensor Power On
// 0:Sensor Power Off
//=======================================================================================
void CamSensorPowerSupply(U16 onoffflag)
{
WriteAsicCommand_Escape(CISPWRC, onoffflag);
}
//=======================================================================================
//
// Register Address: 0x25
//
// Bit[1:0] -> CIS Input Clock Frequency
// 00:24MHz 01:12MHz 10:6MHz 11:3MHz
//
// Bit[2] -> 1:困惑 馆傈 0:弊措肺 荤侩
//
//=======================================================================================
void CamInputClockControl(U16 frequency, U16 topology)
{
U16 value = (frequency) | (topology << 2);
WriteAsicCommand_Escape(CISICC, value);
}
//=======================================================================================
//
// Register Address: 0x26
//
// Bit[6:0] -> delay矫懦 矫埃阑 唱鸥晨.
// Bit[7] -> 1捞搁 falling edge甫 第肺 delay矫挪促.
//
//=======================================================================================
void CamVsyncDelayControl(U16 delaytype, U16 delaytime)
{
U16 value = (delaytime) | (delaytype << 7);
WriteAsicCommand_Escape(VSYNCD, value);
}
//=======================================================================================
//
// Register Address: 0x27
//
// Sony狼 版快父 1肺 set茄促.
//
//=======================================================================================
void CamIICClockDirectionRegister(U16 dirflag)
{
WriteAsicCommand_Escape(IICCLKDIR, dirflag);
}
//========================================================================================
//
// Register Address: 0x28
//
// Bit[0] -> IIC滚胶甫 烹秦 竣技胶窍绊磊窍绰 单捞鸥 官捞飘 荐
// 0: 1byte 1: 2byte
// Bit[1] -> IIC滚胶甫 烹秦 竣技胶窍绊磊窍绰 绢靛饭胶 官捞飘 荐
// 0: 1byte 1: 2byte
// Bit[2] -> R/W Control
// 1: read 0: write
//
//=======================================================================================
void CamSensorAccessControl(U16 bytes, U16 address, U16 rwflag)
{
U16 value = (bytes) | (address << 1) | (rwflag << 2);
WriteAsicCommand_Escape(CISACCE, value);
}
//=======================================================================================
//
// Register Address: 0x29
//
//=======================================================================================
void CamSensorAccessAddressPointer(U16 Addr)
{
WriteAsicCommand_Escape(CISACCEADDR, Addr);
}
//=======================================================================================
//
// Register Address: 0x2A
//
//=======================================================================================
void CamSensorAccessDataPointer(U16 Data)
{
WriteAsicCommand_Escape(CISACCEDATA, Data);
}
//=======================================================================================
//
// Register Address: 0x2B
//
// Bit[0] -> 1: 1->valid data 0->blank duration (Sony, Sanyo)
// 0: 1->new frame start 0->valid data (Hynix, Omnivision)
//
// Bit[1] -> 1: VSYNC甫 郴何利栏肺 促矫 惯积
// 0: VSYNC甫 弊措肺 荤侩
//
// Recommand:
// OmniVision, Hynix->0x0000
// Sony, Sanyo->0x0003
//
//=======================================================================================
void CamVsyncShapeRegister(U16 validflag, U16 vsyncsel)
{
U16 value = (validflag) | (vsyncsel << 1);
WriteAsicCommand_Escape(VSYNCS, value);
}
//=======================================================================================
//
// Register Address: 0x2C
//
// Bit[0] -> 1(Modem CPU啊 LCD力绢甫 夸备), 0(沥惑)
// preview矫 Modem CPU啊 LCD狼 力绢甫 爱绊 酵阑 版快.
// Bit[1] -> 1(ASIC篮 LCD甫 檬扁拳茄促)
//
//=======================================================================================
void CamLCDControlFlag(U16 controlflag1, U16 controlflag2)
{
U16 value = (controlflag1) | (controlflag2 << 1);
WriteAsicCommand_Escape(LCDCON, value);
}
//=======================================================================================
//
// Register Address: 0x2D
//
// Bit[0] -> Strobe light瘤盔阑 enable.
// Bit[1] -> Strobe enable pin狼 必己阑 搬沥
// Bit[9:2] -> Strobe enable pin狼 active扁埃阑 搬沥.
//
//=======================================================================================
void CamStrobeControlRegister(U16 onoffflag, U16 polarity, U16 duration)
{
U16 value = (onoffflag) | (polarity << 1) | (duration << 2);
WriteAsicCommand_Escape(STROBC, value);
}
//=======================================================================================
//
// Register Address: 0x2E
//
// Bit[2:0] -> GPIO Pin狼 规氢阑 搬沥(1:input 0:output)
// Bit[3] -> reserved
// Bit[6:4] -> GPIO Pin狼 enable flag
//
//=======================================================================================
void CamGPIOPinConfiguration(U16 inoutflag, U16 enableflag)
{
U16 value = (inoutflag) | (enableflag << 4);
WriteAsicCommand_Escape(GPIOCONFIG, value);
}
//=======================================================================================
//
// Register Address: 0x2F
//
// Bit[2:0] -> 阿 GPIO Pin狼 惑怕甫 唱鸥辰促.
//
//=======================================================================================
U16 CamGPIOPinStatus(void)
{
U16 data;
ReadAsicCommand_Escape(GPIOSTA, &data);
return data;
}
//=======================================================================================
//
// Register Address: 0x30
//
///======================================================================================
void CamMainLCDDisplayX_StartAddress(U16 Addr)
{
WriteAsicCommand_Escape(MLCDXSTADDR, Addr);
}
//=======================================================================================
//
// Register Address: 0x31
//
//=======================================================================================
void CamMainLCDDisplayY_StartAddress(U16 Addr)
{
WriteAsicCommand_Escape(MLCDYSTADDR, Addr);
}
//=======================================================================================
//
// Register Address: 0x32
//
//=======================================================================================
void CamMainLCDDisplayX_EndAddress(U16 Addr)
{
WriteAsicCommand_Escape(MLCDXENDADDR, Addr);
}
//=======================================================================================
//
// Register Address: 0x33
//
//=======================================================================================
void CamMainLCDDisplayY_EndAddress(U16 Addr)
{
WriteAsicCommand_Escape(MLCDYENDADDR, Addr);
}
//=======================================================================================
//
// Register Address: 0x34
//
//=======================================================================================
void CamSubLCDDisplayX_StartAddress(U16 Addr)
{
WriteAsicCommand_Escape(SLCDXSTAADDR, Addr);
}
void MainLCDDisplayRegion(U16 Xstart, U16 Ystart, U16 Xend, U16 Yend)
{
////Set Main LCD Dispaly Area
CamMainLCDDisplayX_StartAddress(Xstart);
CamMainLCDDisplayY_StartAddress(Ystart);
CamMainLCDDisplayX_EndAddress(Xend);
CamMainLCDDisplayY_EndAddress(Yend);
}
//=======================================================================================
//
// Register Address: 0x35
//
//=======================================================================================
void CamSubLCDDisplayY_StartAddress(U16 Addr)
{
WriteAsicCommand_Escape(SLCDYSTAADDR, Addr);
}
//=======================================================================================
//
// Register Address: 0x36
//
//=======================================================================================
void CamSubLCDDisplayX_EndAddress(U16 Addr)
{
WriteAsicCommand_Escape(SLCDXENDADDR, Addr);
}
//=======================================================================================
//
// Register Address: 0x37
//
//=======================================================================================
void CamSubLCDDisplayY_EndAddress(U16 Addr)
{
WriteAsicCommand_Escape(SLCDYENDADDR, Addr);
}
//=======================================================================================
//
// Register Address: 0x38
//
// Bit[1:0] -> Bit[1:0] Data Bus Width
// 00:8bit data bus
// 01:16bit data bus
// 10:18bit data bus
// Bit[4:2] -> 瘤盔窍绰 拿矾荐
// 000:B/W
// 001:4-Gray
// 010:256 color
// 011:4K color
// 100:65K color
// 101:260K color
// Bit[5] -> RGB order
// 0 = R+G+B, 1 = B+G+R
// Bit[6] -> RGB Data俊 措茄 align 规侥
// 0:left-align
// 1:right-align
// Bit[8:7] -> Write low period(cycle荐)
// 0:0cycle
// n:n+1cycle
// Bit[10:9] -> Write high period(cycle荐)
// 0:1cycle
// n:n+1cycle
// Bit[12:11] -> Read cycle狼 low period(cycle荐)
// 0:1cycle
// n:n+1cycle
// Bit[14:13] -> Read cycle狼 high period(cycle荐)
// 0:1cycle
// n=n+1cycle
//
//=======================================================================================
void CamMainLCDType1(U16 set)
{
WriteAsicCommand_Escape(MLCDTYPE1, set);
}
//=======================================================================================
//
// Register Address: 0x39
//
// Bit[2:0] -> 瘤沥等 拿矾客 滚胶 气 荤捞狼 包拌甫 搬沥.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -