⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dvd.c

📁 ssd192Xv1 液晶驱动程序 驱动程序 彩屏液晶
💻 C
字号:
#include "ssd192X.h"
#include "i2c.h"
#include "dvd.h"

int CAM_WIDTH=720;
int CAM_HEIGHT=320;
int CAM_FRAME_RATE=70;

void cam_hw_init(void)
{
	I2C i2c;
	i2c.deviceID=I2C_DEVICE_ID;
	i2c.bitRate=1;
  	ssd192X_i2c_init(&i2c);
	ssd192X_i2c_writeb(&i2c, 0x2, 0xc2);
	ssd192X_i2c_writeb(&i2c, 0x3, 0x23);
	ssd192X_i2c_writeb(&i2c, 0x4, 0x00);
	ssd192X_i2c_writeb(&i2c, 0x5, 0x00);
	ssd192X_i2c_writeb(&i2c, 0x6, 0xe0);
	ssd192X_i2c_writeb(&i2c, 0x7, 0xf6);
	ssd192X_i2c_writeb(&i2c, 0x8, 0xc8);//0x08 for PAL mode;0xc8 for NTSC
	ssd192X_i2c_writeb(&i2c, 0x9, 0x01);
	ssd192X_i2c_writeb(&i2c, 0xa, 0xa0);
	ssd192X_i2c_writeb(&i2c, 0xb, 0x60);
	ssd192X_i2c_writeb(&i2c, 0xc, 0x7f);
	ssd192X_i2c_writeb(&i2c, 0xd, 0x00);
	ssd192X_i2c_writeb(&i2c, 0xe, 0x03);//0x33 for PAL,0x03 for NTSC
	ssd192X_i2c_writeb(&i2c, 0x10, 0xc8);
	ssd192X_i2c_writeb(&i2c, 0x11, 0x0c);
	ssd192X_i2c_writeb(&i2c, 0x12, 0x01);
	ssd192X_i2c_writeb(&i2c, 0x13, 0x80);
	ssd192X_i2c_writeb(&i2c, 0x15, 0x14);
	ssd192X_i2c_writeb(&i2c, 0x16, 0x00);
	ssd192X_i2c_writeb(&i2c, 0x17, 0x00);

	printk("***********dvd cam hw init\n");	
	SSD_IOW(REG_DV_VMEM_STR_ADDR1_0)= 0x3250; // Set Preview Memory Start Address
	SSD_IOW(REG_DV_VMEM_STR_ADDR2_0)= 0x5820; // Set Preview Memory Start Address

	SSD_IOW(REG_DV_DV0_START_ADDR_0)= 0x3250; // Set Digital Video Window Display Start Address
 	SSD_IOW(REG_DV_DV1_START_ADDR_0)= 0x5820; // Set Digital Video Window Display Start Address
 
 	//note the setting below is assuming a normal DVD player input,
 	//with dimension of 720x240
 	//the display target window have dimension of 160x120,
 	//to demonstrate horizontal and vertical scaling function,
 	//the crop window size is set to 640x240
	//with horizontal and vertical downscaling of 4 and 2 respectively
	//setup the crop window
 	SSD_IOW(REG_DV_HCROP_STR_0)=0x0028;
 	SSD_IOW(REG_DV_VCROP_STR_0)=12;//Philips codec specific 12:NTSC;0 for PAL mode
 	SSD_IOW(REG_DV_HCROP_SIZE_0)=0x0280;
	SSD_IOW(REG_DV_VCROP_SIZE_0)=0x00f0;
 	SSD_IOB(REG_DV_VHDEC_RATIO)=0x02;   // Set horizontal scaling = 4
 	SSD_IOB(REG_DV_VVDEC_RATIO)=0x01;   // Set vertical scaling = 2
 
	//below registers are something I have no idea.  Please do not touch
	SSD_IOW(REG_DV_NFRAME_POS_0)= 0x0002;  // Set Frame Position
	SSD_IOW(REG_DV_HORI_PERIOD_0)= 0x0270;  // Set Horizontal Period

	//  WriteRegByte(REG_DV_TV_0,0x02);
	//  WriteRegByte(REG_DV_TV_1,0x2d);
	//  WriteRegByte(REG_DV_TV_2,0x01);

	//  WriteRegByte(0x17e, 0x3f);  // DV test

	//  WriteRegByte(REG_DV_OP_MODE,0x12);

	// below settting for 8 bit DVD mode only
	SSD_IOB(REG_DV_OP_MODE)=0x02;
	SSD_IOB(REG_DV_TV_0)=0x02;
	SSD_IOB(REG_DV_TV_1)=0x0d;
	SSD_IOB(REG_DV_TV_2)=0x01;


	SSD_IOB(REG_VCLK_CONFIG_1)=0x04;//real chip =7; FPGA=4
	SSD_IOB(REG_MAIN_WIN_ADDR_OFFSET0)=0x6e;
	SSD_IOB(REG_SPECIAL_EFFECTS)=0x41;
	SSD_IOW(REG_MAIN_WIN_DISP_START_ADDR0)=0x157b;

	SSD_IOL(REG_PCLK_FREQ_RATIO_0)=0x0ffff;
// 176 x 220 pannel ssd1278
//      SSD_IOB(REG_DV_HCROP_STR_0 )=0x8c;//(720-440)/2
//      SSD_IOW(REG_DV_HCROP_SIZE_0)=0x1b8;//440
//      SSD_IOB(REG_DV_VCROP_SIZE_0)=0xf0;//240
//      SSD_IOB(REG_DV_VHDEC_RATIO )=0x1;
//      SSD_IOB( REG_DV_VVDEC_RATIO)=0x0;
// casio 160x240 panel
	SSD_IOB(REG_DV_HCROP_STR_0 )=40;//(720-640)/2
	SSD_IOW(REG_DV_HCROP_SIZE_0)=640;//640
	SSD_IOB(REG_DV_VCROP_SIZE_0)=0xf0;//240
	SSD_IOB(REG_DV_VHDEC_RATIO )=0x2; // 2^2 = 4 (640/4=160)
	SSD_IOB( REG_DV_VVDEC_RATIO)=0x0; // 2^0 = 1 (240/1=240)
/*	debug(">>>>>>>>>>>>>>>>>>%X\n",SSD_IOW(REG_DV_HCROP_SIZE_0)); */
}

void cam_hw_still(void)
{		
	
	// bt656 / field stuff select
	printk("**********dvd cam hw still\n");
	SSD_IOB(REG_DV_FRAME_PULSE_WIDTH)= 0x08;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -