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

📄 dspctrl.c.bak

📁 日本IRON os 在汽车电子中的应用 高度机密
💻 BAK
📖 第 1 页 / 共 3 页
字号:
/********************************************************************************/
/*!
  @file		dspctrl.c
  @brief	昞帵惂屼張棟
  @version	$Revision: 2.00 $
  @date		2007/XX/XX
  @author	Matsushita Electronics Co.,Ltd.
*/
/********************************************************************************/
#include	<stdio.h>
#include	<stdlib.h>

#include	<itron.h>
#include	<kernel.h>
#include	<kernel_id.h>

#include	"..\gerda_dd\include\gerda_dd.h"
#include	"..\gerda_dd\include\dd_sys.h"
#include	"..\gerda_dd\include\gerda_reg.h"
#include	"..\gerda_dd\dsp\dst_ram.h"
#include	"..\gerda_dd\dsp\ini_def.h"
#include	"..\texture\texdata.h"

#include	"systype.h"
#include	"sr103se60pub.h"
#include	"option.h"
#include	"if_cmd.h"
#include	"if_mxr.h"
#include	"if_txtid.h"
#include	"parameter.h"
#include	"dd_param.h"
#include	"dspctrl.h"

/********************************************************************/
/*	儅僋儘掕媊														*/
/********************************************************************/
#define		touch(x)				((x) = 0)		/* WARNING 懳嶔 */

/********************************************************************/
/*	娭悢愰尵														*/
/********************************************************************/
void	vDSP_raminitial(void);		/*	曄悢弶婜壔					*/
void	vDSP_dspinitial(void);		/*	昞帵乛昤夋弶婜壔			*/
void	vDSP_initdsp(void);			/*	婲摦夋柺昤夋				*/
void	vDSP_set_mode(void);		/*	僐儅儞僪庴棟張棟			*/
void	vDSP_set_texture(void);		/*	僥僋僗僠儍揥奐乮俽俢俼俙俵乯*/
#if (SSPFMODE == SSPF_V2)
void	vDSP_drw_haikei(void);		/*	攚宨昤夋					*/
#endif	/*	SSPFMODE	*/
int		putc(int,FILE *stream);
UCHAR	ucLIB_bcd2hex(UCHAR);
void	vDSP_timecount5ms(void);
void	vDSP_timecount100ms(void);
void TSC_Reaed(void);
/********************************************************************/
/*	奜晹娭悢愰尵													*/
/********************************************************************/
#if (MXMODE == MXRON)
extern	int	MXEventKeyDown(unsigned int keyCode, int reserved);
#endif

/********************************************************************/
/*	曄悢愰尵														*/
/********************************************************************/
UCHAR	ucDSP_mode;				/*	儌乕僪曄悢		*/
static	UCHAR	cmdID;			/*	僐儅儞僪俬俢	*/
static	UCHAR	cmd[100];			/*	僐儅儞僪		*/
#if (MXMODE == MXROFF)
T_MSG_MODE	snd_mode;
#endif

#if ((T0UCHPANEL_THOOSE==THOOSE)||(ANALG_PANEL_THOOSE==THOOSE))
 extern  USHORT CONTER;	
#define D_LCDCLK		bCPU_P01OE
#define D_LCDDAT		bCPU_P00OE


#define I_LCDCLK		bCPU_ID1
#define I_LCDDAT		bCPU_ID0

#define LCD_DAT			bCPU_P00GPDO

#define LCD_CLK			bCPU_P01GPDO

#define SDA		LCD_DAT
#define SCL		LCD_CLK
	
#define ISDA	I_LCDDAT
#define ISCL	I_LCDCLK
//ULONG time=0;
#endif

#if (ANALG_PANEL_THOOSE==THOOSE)
typedef struct tagRegAdrVal
 {
	ui8_t ucRegAdr;
	ui8_t ucRegVal;
 }REGADRVAL;


 /*  T108寄存器Page0 寄存器初始化数据	 */
const REGADRVAL stInitT10xP0[]={
 0x0E       , 0xFF,  
 0x0F       , 0xE0,  
  0x16      , 0xD3,  
  0x18      , 0x01,  
  0x19      , 0x00,  
  0x1A      , 0x87,   
  0x1C      , 0xE0,  
  0x30     ,  0x03,  
  0x31     ,  0x50,  
  0x32     ,  0x3F,  
  0x33     ,  0xBF,   
  0x3F     ,  0x00,  
  0x40     ,  0x00,  
   0x54    ,  0xE0,  
   0x55    ,  0x01,  
   0x56    ,  0xEA,  
   0x58    ,  0x51,  
   0x59    ,  0xD5,  
   0x5A    ,  0x07,  
   0x5B    ,  0x01,  
   0x5C    ,  0x10,  
   0x60    ,  0x01,  
   0x66    ,  0x88,  
   0x70    ,  0x30,  
   0x81    ,  0xB7,  
   0x82    ,  0xC1,  
   0x85    ,  0x00,  
   0x90    ,  0x80,  
   0x91    ,  0x07,  
   0x9E    ,  0x80,  
   0x9F    ,  0x80,  
   0xA0    ,  0x80,  
   0xA1    ,  0x80,  
   0xA8    ,  0x80,  
   0xA9    ,  0x80,  
   0xB0    ,  0x3A,  
   0xB2    ,  0x1F,  
   0xB8    ,  0x5C,  
   0xB9    ,  0x02,  
   0xBA    ,  0x00,  
   0xBB    ,  0x01,  
   0xBC    ,  0x15,  
   0xC0    ,  0x02,  
   0xC1    ,  0x08,  
   0xC5    ,  0x77,  
   0xC6    ,  0x97,  
   0xC7    ,  0x05,  
   0xCB    ,  0x00,  
   0xCC    ,  0x35,  
   0xE0    ,  0xB9,  
   0xE1    ,  0xFC,  
   0xE3    ,  0x10,  
   0xE5    ,  0x77,  
   0xE6    ,  0x2C,  
   0xF0    ,  0x50,  
};

//T108寄存器Page2 寄存器初始化数据	
const REGADRVAL stInitT10xP2[]={
0x20     ,  0x21,
0x21     ,  0x79,
0x22     ,  0x2D,
0x23     ,  0x02,
0x24     ,  0x0C,
0x25     ,  0x4B,
0x26     ,  0x02,
0x27     ,  0x1C,
0x28     ,  0x02,
0x29     ,  0x29,
0x2A     ,  0x00,
0x2B     ,  0x00,
0x2C     ,  0x18,
0x2D     ,  0x03,
0x2E     ,  0x00,
0x2F     ,  0x00,
0x30     ,  0x01, 
0x31     ,  0xFB, 
0x32     ,  0x01, 
0x33     ,  0x37, 
0x35     ,  0x06, 
0x50    ,  0x30, 
0x51    ,  0x10, 
0x52    ,  0x10, 
0xD5    ,  0x02, 
0xD7    ,  0xE0, 
0xD8    ,  0x01, 
0xD9    ,  0x19, 
0xDB    ,  0xEA, 
0xFF    ,  0x00, 
};


#endif

#if ((T0UCHPANEL_THOOSE==THOOSE)||(ANALG_PANEL_THOOSE==THOOSE))
void DelayLongTIME(ULONG time)
	{
	  ULONG i,j,k=1000;

	  for(i=0;i<time;i++)
           { for(j=0;j<k;j++)
               ;
	     }

	}


void DelayTIME(ULONG time)
	{
	  ULONG i;

	  for(i=0;i<time;i++)
           ;

	}

void I2CDelay(void)
	{
	  ULONG i,delayteme=100;

	  for(i=0;i<delayteme;i++)
           ;

	}
void StartCondition(void)
{
	ui8_t cTWtrytime=0;

	D_LCDDAT = 0;
	D_LCDCLK = 0;

#if 0/*加快通信速度*/
	SDA = 1;
	SCL = 1;
	SDA = 0;
#else
	//while(++cTWtrytime)
	//{
		SDA = 1;
		SCL = 1;
		I2CDelay();
		SDA = 0;
		//D_LCDDAT = 1;
		//D_LCDCLK = 1;
		/*if((ISCL!=0)&&(ISDA==0))
		{		 
			D_LCDDAT = 0;
			D_LCDCLK = 0;
			break;
		}*/
	//} 
#endif
}

ui8_t Send_Byte(ui8_t cData)
{
	ui8_t ix, cAcknowledge=0;
     
	D_LCDDAT = 0;
//	D_LCDCLK = 0;
	I2CDelay();
	for (ix = 0; ix < 8; ix++) {
		SCL = 0;	
		// I2CDelay();
		if(cData&0x80)
			SDA = 1;
		else 
			SDA = 0;
		cData<<=1;
	      I2CDelay();
		SCL = 1;  
		 I2CDelay();
		#if 0/*add i2c ACK message to assure steady communication*/
		 D_LCDCLK = 0;
		while(ISCL==0 && ++cTWtrytime)
		{ }; 
		  D_LCDCLK = 1;
		#endif
 	}
 //I2CDelay();
	SCL = 0; 
//	I2CDelay();
	SDA = 1; 
	I2CDelay();
	SCL = 1; 	

	#if 0	/*add i2c ACK message to assure steady communication*/
	   D_LCDCLK = 0;   
	while(ISCL==0)
	{ };
	 D_LCDCLK = 1;
	#endif
	
	D_LCDDAT= 1;
	I2CDelay();
	if (ISDA != 0) 
		cAcknowledge = 1;  
	D_LCDDAT= 0;
	//I2CDelay();
	SCL = 0;
		
 	return(cAcknowledge);
}


void StopCondition(void)
{
	ui8_t cTWtrytime=0;
       I2CDelay();
	D_LCDDAT = 0;
	//D_LCDCLK = 0;

	SDA = 0;
	I2CDelay();
	SCL = 1;
	 I2CDelay();
	/*D_LCDCLK = 1;	
	while (ISCL == 0 && ++cTWtrytime) {}
	I2CDelay();
	D_LCDCLK = 1;
	*/
	SDA = 1;
}


ui8_t Read_Byte(ui8_t cNum)
{
	ui8_t ix,cTWtrytime=0;
	ui8_t cRetval=0;
      I2CDelay();
	D_LCDDAT = 1;
	//P_LCDDAT = 1;
	D_LCDCLK = 0;
       I2CDelay(); 
	SCL = 0;
       I2CDelay();
	for (ix=0; ix<8; ix++) {
		SCL = 1;
		//D_LCDCLK = 1;
              I2CDelay();
		//while(ISCL==0&& ++cTWtrytime){}

              if(ISDA==1)
               cRetval=(cRetval|(1<<(7-ix)));
		  	  
		//cRetval = (ISDA!=0)? (cRetval|(1<<(7-ix))):cRetval ;    
		//D_LCDCLK = 0;
		//I2CDelay();
		SCL = 0;
		I2CDelay();
	}
	
	//P_LCDDAT = 0;
	D_LCDDAT = 0;
	
	if(cNum==1)
		SDA = 1;
	else
		SDA = 0;
 
	SCL = 1;
  I2CDelay();
	//D_LCDCLK = 1;
	//while(ISCL==0&& ++cTWtrytime){}
	//D_LCDCLK = 0;
	
	SCL = 0;
	SDA = 1;
 
	return cRetval;
}

/********************************************************************/
/*	儅僋儘掕悢愰尵													*/
/********************************************************************/
ui8_t I2CReadByte(ui8_t cDevAddr, ui8_t cReg)
{
	ui8_t cResult = 0;
 
	StartCondition();
	if (Send_Byte(cDevAddr))
		return 0;
	if (Send_Byte(cReg))
		return 0;
  
	StartCondition();
	if (Send_Byte(cDevAddr|0x01))
		return 0;
	cResult = Read_Byte(1);
	StopCondition();
	return cResult;
}
/********************************************************************/
/*	掕悢愰尵														*/
/********************************************************************/
/*****************************************************************************\
	  Function: 	   I2CWriteByte(uChar cDevAddr, uChar cReg, uChar cData)
 
	  Description:	   Write a byte into special position
 
	  Parameter:	   cDevAddr ---the Page of T11x
		  				   0x50:Page0
		  				   0x52:Page1
		  				   0x54:Page2
	  				   cReg --- the index of register in pageX.
	  				   cData ---the value set into T11x

	  Return:		   operation result
	  					0:write fail
	  					1:write succes
	  
	  Note: 		   SOFTWARE control
\*****************************************************************************/
ui8_t I2CWriteByte(ui8_t cDevAddr, ui8_t cReg, ui8_t cData)
{
	StartCondition();
	cDevAddr &= 0xFE;
 
	if (!Send_Byte(cDevAddr)) {
		if (!Send_Byte(cReg)) {
			if (!Send_Byte(cData)) {
				StopCondition();
				return(0);
			}
		}
	}
	
	StopCondition();
	return(1);
}

#endif


#if (ANALG_PANEL_THOOSE==THOOSE)
void InitT10x(void)
{	
	ui8_t RegIndex,RegAdr;

	/** PAGE 1 **/
	RegIndex=0;
	RegAdr=stInitT10xP0[0].ucRegAdr;
	/* copy Init data to T112 */
	while (RegAdr !=0xF0)		 
	{
		
		
		
			I2CWriteByte(0x50,RegAdr,stInitT10xP0[RegIndex].ucRegVal);
	
		RegAdr=stInitT10xP0[++RegIndex].ucRegAdr;
	}

 	/** PAGE 2 **/
// I2CgggDelay();
	RegIndex=0;
	RegAdr=stInitT10xP2[0].ucRegAdr;
	while (RegAdr != 0xFF)
	{
			I2CWriteByte(0x50+2,RegAdr,stInitT10xP2[RegIndex].ucRegVal);
		RegAdr=stInitT10xP2[++RegIndex].ucRegAdr;
	}
}
#endif

#if (T0UCHPANEL_THOOSE==THOOSE)
void I2Cm_nAck (void)
{
	SDA  = 1;
	D_LCDDAT = 0;/*pull up*/
	/*I2Cm_Clock();*/
	SCL = 1;

		 I2CDelay();
		

	SCL = 0;
} 

⌨️ 快捷键说明

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