init_dvc.c
来自「一个比较好用的TW2835音视频芯片开发板的程序,」· C语言 代码 · 共 381 行 · 第 1/2 页
C
381 行
#include "hdr.h"
//#include "tbl_othr_dvc.h"
U16 reg_crsr_pos_x;
U16 reg_crsr_pos_y;
//==================================================================================
// Device init function description
//==================================================================================
void InitPg0(void)
{
U8 _t1_;
if(b_cmn_jp_vdo == VDO_NTSC){
for(_t1_=0;_t1_<4;_t1_++){
WriteAsicTable(cmn_dvc,DVC_PG0,0x00+0x10*_t1_,tbl_ntsc_pg0_cmn,15);
WriteAsicByte(cmn_dvc,DVC_PG0,0x0c+0x10*_t1_,(_t1_<<6)|0x06); //... x path ANA_CH mux
WriteAsicTable(cmn_dvc,DVC_PG0,0x80+0x10*_t1_,tbl_ntsc_pg0_scl,16);
#if defined(__4CH__)
WriteAsicByte(cmn_dvc,DVC_PG0,0x80+0x10*_t1_,(_t1_<<6)|0x01); //... x path scale filter : quad
// WriteAsicByte(cmn_dvc,DVC_PG0,0x80+0x10*_t1_,(_t1_<<6)|0x06); //... x path scale filter : 1/3 size
#elif defined(__16CH__)
WriteAsicByte(cmn_dvc,DVC_PG0,0x80+0x10*_t1_,(_t1_<<6)|0x0b); //... x path scale filter : 1/4
#endif
WriteAsicByte(cmn_dvc,DVC_PG0,0x8a+0x10*_t1_,(_t1_<<6)|0x31); //... y path scale filter : quad
}
WriteAsicTable(cmn_dvc,DVC_PG0,0x40,tbl_ntsc_pg0_sfr1,21);
WriteAsicTable(cmn_dvc,DVC_PG0,0x60,tbl_ntsc_pg0_sfr2,21);
WriteAsicTable(cmn_dvc,DVC_PG0,0xc0,tbl_ntsc_pg0_sfr3,11);
}
else{ //... PAL
for(_t1_=0;_t1_<4;_t1_++){
WriteAsicTable(cmn_dvc,DVC_PG0,0x00+0x10*_t1_,tbl_pal_pg0_cmn,15);
WriteAsicByte(cmn_dvc,DVC_PG0,0x0c+0x10*_t1_,(_t1_<<6)|0x06); //... x path ANA_CH mux
WriteAsicTable(cmn_dvc,DVC_PG0,0x80+0x10*_t1_,tbl_pal_pg0_scl,16);
#if defined(__4CH__)
WriteAsicByte(cmn_dvc,DVC_PG0,0x80+0x10*_t1_,(_t1_<<6)|0x01); //... x path scale filter : quad
// WriteAsicByte(cmn_dvc,DVC_PG0,0x80+0x10*_t1_,(_t1_<<6)|0x06); //... x path scale filter : 1/3 size
#elif defined(__16CH__)
WriteAsicByte(cmn_dvc,DVC_PG0,0x80+0x10*_t1_,(_t1_<<6)|0x0b); //... x path scale filter : 1/4
#endif
WriteAsicByte(cmn_dvc,DVC_PG0,0x8a+0x10*_t1_,(_t1_<<6)|0x31); //... y path scale filter : quad
}
WriteAsicTable(cmn_dvc,DVC_PG0,0x40,tbl_pal_pg0_sfr1,21);
WriteAsicTable(cmn_dvc,DVC_PG0,0x60,tbl_pal_pg0_sfr2,21);
WriteAsicTable(cmn_dvc,DVC_PG0,0xc0,tbl_pal_pg0_sfr3,11);
}
}
//==================================================================================
void InitPg1(void)
{
U8 _t1_;//, _t2_=0;
#if defined(__4CH__)
WriteAsicTable(cmn_dvc,DVC_PG1,0x01,tbl_pg1_x_cmn,47);
WriteAsicTable(cmn_dvc,DVC_PG1,0x50,tbl_pg1_y_cmn,80);
if(b_cmn_jp_vdo == VDO_NTSC){
WriteAsicTable(cmn_dvc,DVC_PG1,0x30,tbl_ntsc_pg1_pic_qd,16); //... normal quad
// WriteAsicTable(cmn_dvc,DVC_PG1,0x30,tbl_ntsc_pg1_pic_9_lt,16); //... non-realtime
WriteAsicTable(cmn_dvc,DVC_PG1,0x40,tbl_ntsc_pg1_pic_9_rb,16);
WriteAsicTable(cmn_dvc,DVC_PG1,0xa0,tbl_ntsc_pg1_enc,16);
WriteAsicByte(cmn_dvc,DVC_PG1,0x00,0x00);
}
else{
WriteAsicTable(cmn_dvc,DVC_PG1,0x30,tbl_pal_pg1_pic_qd,16); //... normal quad
// WriteAsicTable(cmn_dvc,DVC_PG1,0x30,tbl_pal_pg1_pic_9_lt,16); //... non-realtime
WriteAsicTable(cmn_dvc,DVC_PG1,0x40,tbl_pal_pg1_pic_9_rb,16);
WriteAsicTable(cmn_dvc,DVC_PG1,0xa0,tbl_pal_pg1_enc,16);
WriteAsicByte(cmn_dvc,DVC_PG1,0x00,0x80);
}
#elif defined(__16CH__)
U8 _dvc_, _ch_;
WriteAsicTable(cmn_dvc,DVC_PG1,0x01,tbl_pg1_x_cmn,47);
WriteAsicTable(cmn_dvc,DVC_PG1,0x50,tbl_pg1_y_cmn,80);
if(b_cmn_jp_vdo == VDO_NTSC){
WriteAsicTable(MASTER,DVC_PG1,0x30,tbl_ntsc_pg1_pic_16_0,16);
WriteAsicTable(SLAVE1,DVC_PG1,0x30,tbl_ntsc_pg1_pic_16_1,16);
WriteAsicTable(SLAVE2,DVC_PG1,0x30,tbl_ntsc_pg1_pic_16_2,16);
WriteAsicTable(SLAVE3,DVC_PG1,0x30,tbl_ntsc_pg1_pic_16_3,16);
// WriteAsicTable(cmn_dvc,DVC_PG1,0x40,tbl_ntsc_pg1_pic_9_rb,16);
// WriteAsicTable(cmn_dvc,DVC_PG1,0xa0,tbl_ntsc_pg1_enc,16);
// WriteAsicByte(SLAVE1|SLAVE2|SLAVE3,DVC_PG1,0xa1,0x88);
WriteAsicTable(MASTER,DVC_PG1,0xa0,tbl_ntsc_pg1_enc_mstr,16);
WriteAsicTable(SLAVE1|SLAVE2|SLAVE3,DVC_PG1,0xa0,tbl_ntsc_pg1_enc_slv,16);
if(cmn_rc_md == RC_MD_120_FPS){
WriteAsicByte(MASTER,DVC_PG1,0x00,0x0c);
WriteAsicByte(MASTER,DVC_PG1,0x7e,0xc9);
WriteAsicByte(SLAVE1,DVC_PG1,0x00,0x0d);
WriteAsicByte(SLAVE1,DVC_PG1,0x7e,0xa9);
WriteAsicByte(SLAVE2,DVC_PG1,0x00,0x0e);
WriteAsicByte(SLAVE2,DVC_PG1,0x7e,0x89);
WriteAsicByte(SLAVE3,DVC_PG1,0x00,0x3f);
WriteAsicByte(SLAVE3,DVC_PG1,0x7e,0x89);
}
else if(cmn_rc_md == RC_MD_240_FPS){
WriteAsicByte(MASTER,DVC_PG1,0x00,0x0c);
WriteAsicByte(MASTER,DVC_PG1,0x7e,0xc9);
WriteAsicByte(SLAVE1,DVC_PG1,0x00,0x1d);
WriteAsicByte(SLAVE1,DVC_PG1,0x7e,0xa9);
WriteAsicByte(SLAVE2,DVC_PG1,0x00,0x0e);
WriteAsicByte(SLAVE2,DVC_PG1,0x7e,0x89);
WriteAsicByte(SLAVE3,DVC_PG1,0x00,0x3f);
WriteAsicByte(SLAVE3,DVC_PG1,0x7e,0x89);
}
else if(cmn_rc_md == RC_MD_480_FPS){
WriteAsicByte(MASTER,DVC_PG1,0x00,0x08);
WriteAsicByte(MASTER,DVC_PG1,0x7e,0xc9);
WriteAsicByte(SLAVE1,DVC_PG1,0x00,0x09);
WriteAsicByte(SLAVE1,DVC_PG1,0x7e,0xa9);
WriteAsicByte(SLAVE2,DVC_PG1,0x00,0x0a);
WriteAsicByte(SLAVE2,DVC_PG1,0x7e,0x89);
WriteAsicByte(SLAVE3,DVC_PG1,0x00,0x3b);
WriteAsicByte(SLAVE3,DVC_PG1,0x7e,0x89);
}
}
else{
WriteAsicTable(MASTER,DVC_PG1,0x30,tbl_pal_pg1_pic_16_0,16);
WriteAsicTable(SLAVE1,DVC_PG1,0x30,tbl_pal_pg1_pic_16_1,16);
WriteAsicTable(SLAVE2,DVC_PG1,0x30,tbl_pal_pg1_pic_16_2,16);
WriteAsicTable(SLAVE3,DVC_PG1,0x30,tbl_pal_pg1_pic_16_3,16);
// WriteAsicTable(cmn_dvc,DVC_PG1,0x40,tbl_pal_pg1_pic_9_rb,16);
// WriteAsicTable(cmn_dvc,DVC_PG1,0xa0,tbl_pal_pg1_enc,16);
// WriteAsicByte(SLAVE1|SLAVE2|SLAVE3,DVC_PG1,0xa1,0x88);
WriteAsicTable(MASTER,DVC_PG1,0xa0,tbl_pal_pg1_enc_mstr,16);
WriteAsicTable(SLAVE1|SLAVE2|SLAVE3,DVC_PG1,0xa0,tbl_pal_pg1_enc_slv,16);
if(cmn_rc_md == RC_MD_120_FPS){
WriteAsicByte(MASTER,DVC_PG1,0x00,0x8c);
WriteAsicByte(MASTER,DVC_PG1,0x7e,0xc9);
WriteAsicByte(SLAVE1,DVC_PG1,0x00,0x8d);
WriteAsicByte(SLAVE1,DVC_PG1,0x7e,0xa9);
WriteAsicByte(SLAVE2,DVC_PG1,0x00,0x8e);
WriteAsicByte(SLAVE2,DVC_PG1,0x7e,0x89);
WriteAsicByte(SLAVE3,DVC_PG1,0x00,0xbf);
WriteAsicByte(SLAVE3,DVC_PG1,0x7e,0x89);
}
else if(cmn_rc_md == RC_MD_240_FPS){
WriteAsicByte(MASTER,DVC_PG1,0x00,0x8c);
WriteAsicByte(MASTER,DVC_PG1,0x7e,0xc9);
WriteAsicByte(SLAVE1,DVC_PG1,0x00,0x9d);
WriteAsicByte(SLAVE1,DVC_PG1,0x7e,0xa9);
WriteAsicByte(SLAVE2,DVC_PG1,0x00,0x8e);
WriteAsicByte(SLAVE2,DVC_PG1,0x7e,0x89);
WriteAsicByte(SLAVE3,DVC_PG1,0x00,0xbf);
WriteAsicByte(SLAVE3,DVC_PG1,0x7e,0x89);
}
else if(cmn_rc_md == RC_MD_480_FPS){
WriteAsicByte(MASTER,DVC_PG1,0x00,0x88);
WriteAsicByte(MASTER,DVC_PG1,0x7e,0xc9);
WriteAsicByte(SLAVE1,DVC_PG1,0x00,0x89);
WriteAsicByte(SLAVE1,DVC_PG1,0x7e,0xa9);
WriteAsicByte(SLAVE2,DVC_PG1,0x00,0x8a);
WriteAsicByte(SLAVE2,DVC_PG1,0x7e,0x89);
WriteAsicByte(SLAVE3,DVC_PG1,0x00,0xbb);
WriteAsicByte(SLAVE3,DVC_PG1,0x7e,0x89);
}
}
#endif
//... queue setting
// for(_t1_=0;_t1_<16;_t1_++){
// //... mux queue
// WriteAsicByte(cmn_dvc,DVC_PG1,0x59,_t1_); //... queue data
// WriteAsicByte(cmn_dvc,DVC_PG1,0x5a,0x80|_t1_); //... queue addr
// //... popup queue
//// if(_t1_<13){
//// WriteAsicByte(cmn_dvc,DVC_PG1,0x73,(_t1_<<4)|(_t1_+1)); //... queue data
//// WriteAsicByte(cmn_dvc,DVC_PG1,0x74,((_t1_+2)<<4)|(_t1_+3)); //... queue data
//// WriteAsicByte(cmn_dvc,DVC_PG1,0x75,0x80|_t1_); //... queue addr
//// }
// }
// WriteAsicByte(cmn_dvc,DVC_PG1,0x73,0x01); //... queue data
// WriteAsicByte(cmn_dvc,DVC_PG1,0x74,0x23); //... queue data
// WriteAsicByte(cmn_dvc,DVC_PG1,0x75,0x80); //... queue addr
// WriteAsicByte(cmn_dvc,DVC_PG1,0x73,0x12); //... queue data
// WriteAsicByte(cmn_dvc,DVC_PG1,0x74,0x30); //... queue data
// WriteAsicByte(cmn_dvc,DVC_PG1,0x75,0x81); //... queue addr
// WriteAsicByte(cmn_dvc,DVC_PG1,0x73,0x23); //... queue data
// WriteAsicByte(cmn_dvc,DVC_PG1,0x74,0x01); //... queue data
// WriteAsicByte(cmn_dvc,DVC_PG1,0x75,0x82); //... queue addr
// WriteAsicByte(cmn_dvc,DVC_PG1,0x73,0x30); //... queue data
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?