亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? e2prom_function.c

?? TI DSP TMS320C5502音頻采樣及回放
?? C
字號:

/********************************************************************************/
/*																				*/
/*	Filename:	E2PROM_Function.c												*/
/*  Function:	Realize E2PROM`s writing and reading operation					*/
/*																				*/
/********************************************************************************/

#include <csl_i2c.h>

/********************************************************************************/
/* MODULE.NAME... I2C															*/
/* FUNCTIONNAME...... I2C_Write()												*/
/* DATE CREATED.. Sun 08/20/2004 												*/
/********************************************************************************/
void MyI2C_setup(I2C_Setup *Init) {

  int old_intm;
  Uint16 IPSC_calc;

  old_intm = IRQ_globalDisable();  
  
  
  /* 將下面的IRS域作了修改,讓IIC模塊處于復位狀態,然后進行時鐘的配置 */
  I2C_RSET(I2CMDR,I2C_I2CMDR_RMK(Init->free,0,0,0,1,1,Init->addrmode,0,Init->dlb,0,0,0,Init->bitbyte));
    
/* set own address */  

  I2C_RSET(I2COAR,Init->ownaddr); /* if slave, need to specify own address */
  
/* calculating the IPSC value */
   	
  IPSC_calc = (Init->sysinclock)/12;  /* must correct rounding issue */
  I2C_RSET(I2CPSC,IPSC_calc);
  
/* calculating the ICCLKL and ICCLKH register values */ 
  
  I2C_RSET(I2CCLKL,15);
  I2C_RSET(I2CCLKH,15);    
  
  /* 使能IIC模塊 */
  I2C_FSET(I2CMDR,IRS,1);
    
  IRQ_globalRestore(old_intm);   

}   /* end of init  */

int MyI2C_Write(Uint16 *data,int length,int master,Uint16 slaveaddress,int transfermode,int timeout)  
{
  	int i,j,k,l,m;
  	int old_intm;  
  	Uint16 temp=1;
  
  	//old_intm = IRQ_globalDisable();  
  
  	/* set in transmit mode */
  	I2C_FSET(I2CMDR,TRX,1);
  	/* set the count register */
  	I2C_RSET(I2CCNT,length);    

  	if (master==1) 
  	{
    	I2C_RSET(I2CSAR,slaveaddress); 	/* specify slave address */
    	I2C_FSET(I2CMDR,MST,1);      	/* turn master mode on */
  
  		/* setting the transfer mode */
    	if (transfermode==1) 
    	{   						/* S-A-D..(n)..D-P mode */
      		I2C_FSET(I2CMDR,RM,0);
      		I2C_FSET(I2CMDR,STP,1);
    	}
    	else if (transfermode==2) 
    	{   						/* S-A-D..(n)..D mode  (repeat n times)*/
      		I2C_FSET(I2CMDR,RM,0);
      		I2C_FSET(I2CMDR,STP,0);
    	}
    	else if (transfermode==3) 
    	{   						/* S-A-D-D-D ... (repeat continuous) mode */
      		I2C_FSET(I2CMDR,RM,1);
      		I2C_FSET(I2CMDR,STP,0);
    	}
    	else 
    	{   						/* if user specifies something else, go to idle mode */
      		I2C_FSET(I2CMDR,RM,0);
      		I2C_FSET(I2CMDR,STP,0);
    	}  
  	}  	/* end if master */
  	else 
  	{
    	I2C_FSET(I2CMDR,MST,0);  	/* if not master, set to slave */
  	}   /* end set up */

  	old_intm = IRQ_globalDisable();      
    for (i=0;i<=timeout;i++)  
    {   							/* check for bus busy */
    	temp=I2C_FGET(I2CSTR,BB);
    	if (temp==0) break; 
    }
  	IRQ_globalRestore(old_intm);
  	
  	if (i>=timeout) 
  	{  								/* bus busy timeout error */
    	//IRQ_globalRestore(old_intm);
    	return 1;
  	}  
             
  	for (m=0;m<=timeout;m++)  
  	{   							/* check for DXR status before first write*/
    	temp=I2C_FGET(I2CSTR,XRDY);
    	if (temp==1) break;                  
  	}
          
  	if (m>=timeout) 
  	{
    	//IRQ_globalRestore(old_intm);
    	return 2;         			/* time out for transmit DXR ready */   
  	}
    
  	I2C_RSET(I2CDXR,*data++);  		/* put first data value in DXR */                     	
  	I2C_FSET(I2CMDR,STT,1);			/* generate start condition */
            
  	for (k=1;k<length;k++)  
  	{   							/* enter main loop for transmitting data */
    	for (i=0;i<2000;i++) 
    	{
     		for(j=0;j<1000;j++)		/* delay loop */
      		{  
      			asm (" NOP");
      		}
    	}             
    	for (l=0;l<=timeout;l++)  
    	{   
     		temp=I2C_FGET(I2CSTR,NACK);	/* check for NACK status */
     		if (temp==0) break; 
    	} 
    	if (l>=timeout) 
    	{ 
     		//IRQ_globalRestore(old_intm);
     		return 3;        			/* No acknowledge bit is set, NACK error */
    	}

    	for (m=0;m<=timeout;m++)  
    	{   							/* check for DXR status */
     		temp=I2C_FGET(I2CSTR,XRDY);
     		if (temp==1) break;                
    	}
      
    	if (m>=timeout) 
    	{
      		//IRQ_globalRestore(old_intm);
  	 		return 4;         			/* time out for transmit DXR ready */ 
    	}
    	
    	I2C_RSET(I2CDXR,*data++);  		/* put next data value in DXR */  
  	} /* end of for loop */
   
   	for (j=0;j<10;j++) 
    {    								/* last delay loop for last data transferred*/
      	for (i=0;i<32000;i++)  
      	{
       		asm (" NOP");
      	}
    }
    
   	for (l=0;l<=timeout;l++)  
    {   								/* check for NACK status for last data byte transferred*/
     	temp=I2C_FGET(I2CSTR,NACK);
     	if (temp==0) break; 
    }
    
  	if (l>=timeout) 
  	{
      	//IRQ_globalRestore(old_intm); 
  		return 5;        				/* No acknowledge bit is set, NACK error */                                                             
  	}  
  //IRQ_globalRestore(old_intm);
  return 0;
}  /* end of I2C_Write */

/********************************************************************************/
/* MODULE.NAME... I2C															*/
/* FUNCTIONNAME...... I2C_Read()												*/
/* DATE CREATED.. Sun 08/20/2004 												*/
/********************************************************************************/

int MyI2C_Read(Uint16 *data,int length,int master,Uint16 slaveaddress,int transfermode,int timeout, int checkbus)  {

  	int i,j,k,m;
  	int old_intm;  
  	Uint16 temp;
  
  	//old_intm = IRQ_globalDisable();  
  
  	/* set in receive mode */
  	I2C_FSET(I2CMDR,TRX,0);
   
  	if (master==1) 
  	{
  		I2C_RSET(I2CSAR,slaveaddress); 		/* specify slave address */
  		I2C_FSET(I2CMDR,MST,1);      		/* turn master mode on */
  
  		/* setting the transfer mode */
  		if (transfermode==1) 
  		{   /* S-A-D..(n)..D-P mode */
  			I2C_FSET(I2CMDR,RM,0);
  			I2C_FSET(I2CMDR,STP,1);	 
  			I2C_RSET(I2CCNT,length);    	/* setting the data count in the ICCNT register */ 
  		}
  		else if (transfermode==2) 
  		{   /* S-A-D..(n)..D mode  (repeat n times)*/
  			I2C_FSET(I2CMDR,RM,0);
  			I2C_FSET(I2CMDR,STP,0);
  		}
  
  		else if (transfermode==3) 
  		{   /* S-A-D-D-D ... (repeat continuous) mode */
  			I2C_FSET(I2CMDR,RM,1);
  			I2C_FSET(I2CMDR,STP,0);
  		}
  
  		else 
  		{   /* if user specifies something else, go to idle mode */
  			I2C_FSET(I2CMDR,RM,0);
  			I2C_FSET(I2CMDR,STP,0);
  		}
  	}  /* end if master */
  	else 
  	{
  		I2C_FSET(I2CMDR,MST,0);  			/* if not master, set to slave */
  	}  /* end set up */   
      
  	if (checkbus==1) 
  	{	  
  		old_intm = IRQ_globalDisable(); 
  		for (i=0;i<=timeout;i++) 
  		{   								/* check for bus busy */
  			temp=I2C_FGET(I2CSTR,BB);
  			if (temp==0) break; 
  		}
  		
  		IRQ_globalRestore(old_intm);
  		if (i>=timeout)  					/* bus busy timeout error */
    	return 1;  
  	}  /* end of bus busy */
                       						/* generate start condition */
    I2C_FSET(I2CMDR,STT,1);  
                           					/* delay loop to receive data */
    for (i=0;i<32000;i++) 
    {
      	asm (" NOP");
    }
       
  	for (j=0;j<=timeout;j++)  
  	{   /* check for DRR status */
  		temp=I2C_FGET(I2CSTR,RRDY);
  		if (temp==1) break; 
  	}
    
  	if (j>=timeout) 
  	return 2;         						/* time out for receive DRR ready */ 
   
  	*data++ = I2C_RGET(I2CDRR);  			/* put first data value in DXR */
                 
  	for (k=1;k<length;k++)  				/* enter main loop for receiving data */
  	{   
      	for (i=0;i<32000;i++)  
      	{
      		asm (" NOP");
      	}
      	
  		for (m=0;m<=timeout;m++)  
  		{   /* check for DRR status */
  			temp=I2C_FGET(I2CSTR,RRDY);
  			if (temp==1) break; 
  		}
    
  		if (m>=timeout) 
  		return 4;        			 		/* time out for transmit DRR ready */ 	
  		*data++ = I2C_RGET(I2CDRR);  		/* put next data value in DXR */
  	} /* end of for loop */
                       
    for (i=0;i<32000;i++)  					/* last delay loop */
    {
      	asm (" NOP");
    }                                                                        
  //IRQ_globalRestore(old_intm); 
  return 0;  
}  /* end of I2C_Read */

/********************************************************************************/
/* MODULE.NAME... I2C															*/
/* FUNCTIONNAME...... Set_WorkMode()											*/
/* DATE CREATED.. Sun 08/20/2004 												*/
/********************************************************************************/
void Set_WorkMode(int Master, Uint16 SlaveAddress, int TransferMode )
{
	/* set in transmit mode */
  	I2C_FSET(I2CMDR,TRX,1);
  	/* set the count register */
  	I2C_RSET(I2CCNT,4);   				/* length set to 4 */
  	 
	if (Master == 1) 
  	{
    	I2C_RSET(I2CSAR,SlaveAddress); 	/* specify slave address */
    	I2C_FSET(I2CMDR,MST,1);      	/* turn master mode on */
  
  		/* setting the transfer mode */
    	if (TransferMode == 1) 
    	{   						/* S-A-D..(n)..D-P mode */
      		I2C_FSET(I2CMDR,RM,0);
      		I2C_FSET(I2CMDR,STP,1);
    	}
    	else if (TransferMode == 2) 
    	{   						/* S-A-D..(n)..D mode  (repeat n times)*/
      		I2C_FSET(I2CMDR,RM,0);
      		I2C_FSET(I2CMDR,STP,0);
    	}
    	else if (TransferMode == 3) 
    	{   						/* S-A-D-D-D ... (repeat continuous) mode */
      		I2C_FSET(I2CMDR,RM,1);
      		I2C_FSET(I2CMDR,STP,0);
    	}
    	else 
    	{   						/* if user specifies something else, go to idle mode */
      		I2C_FSET(I2CMDR,RM,0);
      		I2C_FSET(I2CMDR,STP,0);
    	}  
  	}  	/* end if master */
  	else 
  	{
    	I2C_FSET(I2CMDR,MST,0);  	/* if not master, set to slave */
  	}   /* end set up */
}

/********************************************************************************/
/* MODULE.NAME... I2C															*/
/* FUNCTIONNAME...... Judge_I2cStatus()											*/
/* DATE CREATED.. Sun 08/20/2004 												*/
/********************************************************************************/
int Judge_I2cStatus(int TimeOut)
{
	unsigned int i, m;
	int old_intm;
	Uint16 Temp = 1;
	
	old_intm = IRQ_globalDisable();
	for (i = 0; i <= TimeOut; i++)  
    {   							/* check for bus busy */
    	Temp = I2C_FGET(I2CSTR,BB);
    	if (Temp == 0) break; 
    }
  	IRQ_globalRestore(old_intm);
  	
  	if (i >= TimeOut) 
  	{  								/* bus busy timeout error */
    	//IRQ_globalRestore(old_intm);
    	return 1;
  	}  
             
  	for (m = 0; m <= TimeOut; m++)  
  	{   							/* check for DXR status before first write*/
    	Temp = I2C_FGET(I2CSTR,XRDY);
    	if (Temp == 1) break;                  
  	}
          
  	if (m >= TimeOut) 
  	{
    	//IRQ_globalRestore(old_intm);
    	return 2;         			/* time out for transmit DXR ready */   
  	}
  	return 0;
}

/********************************************************************************/
/* MODULE.NAME... I2C															*/
/* FUNCTIONNAME...... WriteSigWord_Deal()										*/
/* DATE CREATED.. Sun 08/20/2004 												*/
/********************************************************************************/
int WriteSigWord_Deal(int TimeOut)
{ 
    unsigned int i, j, l, m;
    Uint16 Temp = 1;
    
	for (i=0;i<2000;i++) 
    {
     	for(j=0;j<1000;j++)				/* delay loop */
      	{  
      		asm (" NOP");
      	}
    }             
    for (l=0;l<=TimeOut;l++)  
    {   
     	Temp=I2C_FGET(I2CSTR,NACK);		/* check for NACK status */
     	if (Temp==0) break; 
    } 
    if (l>=TimeOut) 
    { 
     	//IRQ_globalRestore(old_intm);
     	return 3;        				/* No acknowledge bit is set, NACK error */
    }

    for (m=0;m<=TimeOut;m++)  
    {   								/* check for DXR status */
     	Temp=I2C_FGET(I2CSTR,XRDY);
     	if (Temp==1) break;                
    }
      
    if (m>=TimeOut) 
    {
      	//IRQ_globalRestore(old_intm);
  	 	return 4;         				/* time out for transmit DXR ready */ 
    }
    return 0; 
}

/********************************************************************************/
/* MODULE.NAME... I2C															*/
/* FUNCTIONNAME...... LastByte_Deal()											*/
/* DATE CREATED.. Sun 08/20/2004 												*/
/********************************************************************************/
int  LastByte_Deal(int TimeOut)
{
	int i,j,l; 
  	Uint16 Temp = 1;
  	
	for (j=0;j<10;j++) 
    {    								/* last delay loop for last data transferred*/
      	for (i = 0; i < 32000; i++)  
      	{
       		asm (" NOP");
      	}
    }
    
   	for (l=0;l<=TimeOut;l++)  
    {   								/* check for NACK status for last data byte transferred*/
     	Temp = I2C_FGET(I2CSTR,NACK);
     	if (Temp == 0) break; 
    }
    
  	if (l >= TimeOut) 
  	{
      	//IRQ_globalRestore(old_intm); 
  		return 5;        				/* No acknowledge bit is set, NACK error */                                                             
  	}  
  	return 0;
}

/********************************************************************************/
/* MODULE.NAME... I2C															*/
/* FUNCTIONNAME...... I2C_WriteSigWord()										*/
/* DATE CREATED.. Sun 08/20/2004 												*/
/********************************************************************************/
int MyI2C_WriteSigWord(unsigned int OwnAdd, unsigned int data, int master, Uint16 slaveaddress, int transfermode, int timeout)
{
	unsigned int HighAdd, LowAdd;
	unsigned int HighByte, LowByte;	
	int RetValue;
	
	HighAdd = (OwnAdd & 0xFF00)>>8;
	LowAdd = OwnAdd & 0x00FF;
	
	HighByte = (data & 0xFF00)>>8;
	LowByte = data & 0x00FF;

	/* Set I2C working mode */
  	Set_WorkMode(master, slaveaddress, transfermode);
  	
  	//old_intm = IRQ_globalDisable();  
  	      
    RetValue = Judge_I2cStatus(timeout);
    if(RetValue != 0)
    return(RetValue);
    
    /* put first data value in DXR */ 
  	I2C_RSET(I2CDXR,HighAdd);
  	 
  	/* generate start condition */ 		                    	
  	I2C_FSET(I2CMDR,STT,1);			
  	
  	RetValue = WriteSigWord_Deal(timeout);
  	if(RetValue != 0)
    return(RetValue);
    
    /* put next data value in DXR */	
    I2C_RSET(I2CDXR,LowAdd);  
    
    RetValue = WriteSigWord_Deal(timeout);
  	if(RetValue != 0)
    return(RetValue);	
    
    /* put next data value in DXR */	
    I2C_RSET(I2CDXR,HighByte);	
    
    RetValue = WriteSigWord_Deal(timeout);
  	if(RetValue != 0)
    return(RetValue);
    
    /* put next data value in DXR */	
    I2C_RSET(I2CDXR,LowByte);	
    
    RetValue = LastByte_Deal(timeout);
    if(RetValue != 0)
    return(RetValue);
    
    return 0;
}	/* end of I2C_WriteSigWord */

/**************************************************************************************************/
//	No	more
/**************************************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美精品一区二区色综合朱莉| 国产高清精品网站| 奇米色777欧美一区二区| 激情亚洲综合在线| 成人美女在线观看| 欧美性色欧美a在线播放| 欧美一级理论片| 中文字幕乱码亚洲精品一区 | 麻豆精品在线看| 国产一区视频导航| 91热门视频在线观看| 91精品国产免费久久综合| 国产欧美日韩一区二区三区在线观看| 亚洲欧美偷拍三级| 久久精工是国产品牌吗| 91免费版在线看| 欧美mv日韩mv亚洲| 国产精品电影院| 免费高清在线视频一区·| www.亚洲免费av| 日韩欧美资源站| 亚洲精品视频在线| 精品一区二区三区免费观看| 91免费在线播放| 26uuu国产在线精品一区二区| 亚洲欧美在线另类| 久久精品99国产精品日本| 在线欧美一区二区| 久久午夜免费电影| 日日欢夜夜爽一区| av电影在线观看不卡| 精品人在线二区三区| 亚洲一区二区精品3399| 成人激情小说乱人伦| 日韩免费观看高清完整版 | 99久久国产免费看| 久久综合色一综合色88| 亚洲动漫第一页| 成人av资源网站| 久久久综合九色合综国产精品| 五月天欧美精品| 色一情一伦一子一伦一区| 国产亚洲福利社区一区| 婷婷综合另类小说色区| 色噜噜久久综合| 日本一区二区三区四区| 精品一区二区三区免费播放| 欧美日韩免费一区二区三区视频 | 色先锋aa成人| 国产精品毛片久久久久久久| 另类小说综合欧美亚洲| 欧美精品在线观看播放| 亚洲国产乱码最新视频 | 亚洲综合图片区| 91在线播放网址| 中文字幕一区在线| 粉嫩在线一区二区三区视频| 精品国产乱码久久久久久图片| 日韩成人av影视| 欧美日韩国产成人在线免费| 亚洲一区二区高清| 91成人在线精品| 亚洲码国产岛国毛片在线| 成a人片国产精品| 国产精品乱人伦| 成人妖精视频yjsp地址| 国产欧美一区二区精品忘忧草 | 中文字幕精品在线不卡| 国产综合一区二区| 精品成人一区二区| 精品亚洲成a人| 精品国产乱码久久久久久牛牛| 精品一区二区精品| 精品国产一区二区三区忘忧草| 毛片av一区二区| 久久综合久久鬼色中文字| 国产精品一区二区91| 国产日韩一级二级三级| 成人自拍视频在线观看| 国产精品久久久久一区二区三区共| 国产成人精品影院| 一区在线中文字幕| 色婷婷久久99综合精品jk白丝| 亚洲一区视频在线观看视频| 精品视频一区三区九区| 性感美女极品91精品| 欧美一区永久视频免费观看| 日本欧美一区二区| 久久久久久久综合色一本| 成人爽a毛片一区二区免费| 亚洲欧美视频在线观看视频| 欧美三级韩国三级日本一级| 日韩高清不卡一区二区三区| 精品国产三级电影在线观看| 成人一级视频在线观看| 一区二区三区日韩欧美精品| 欧美视频一区二区三区四区| 久久黄色级2电影| 中文在线一区二区| 在线中文字幕不卡| 免费成人在线视频观看| 国产视频一区二区三区在线观看| 暴力调教一区二区三区| 午夜电影网一区| 国产亚洲一区二区三区在线观看| 9l国产精品久久久久麻豆| 亚洲在线免费播放| 久久综合九色综合欧美就去吻| jiyouzz国产精品久久| 亚洲成人激情综合网| 久久综合久久综合亚洲| 色欧美片视频在线观看| 男男成人高潮片免费网站| 日本一区二区三区dvd视频在线| 91一区在线观看| 日韩高清不卡一区二区三区| 欧美经典一区二区| 欧美三片在线视频观看| 国产麻豆精品一区二区| 亚洲精品v日韩精品| 日韩精品最新网址| 色综合久久九月婷婷色综合| 日本va欧美va精品| 亚洲三级在线播放| 欧美大片在线观看一区二区| 波多野结衣中文字幕一区 | 精品国产青草久久久久福利| 97精品久久久久中文字幕 | 久久精品视频免费| 欧美日韩一区二区三区高清| 国产一区二区成人久久免费影院| 亚洲乱码国产乱码精品精的特点 | 国产专区欧美精品| 一区二区三区久久| 久久久精品影视| 91精品啪在线观看国产60岁| 成人aaaa免费全部观看| 精品在线一区二区| 亚洲国产视频网站| 国产欧美精品一区二区色综合 | 韩国精品在线观看| 一区二区在线免费观看| 久久精品一二三| 欧美精品tushy高清| 91视频在线观看| 粉嫩av一区二区三区| 精品中文字幕一区二区| 五月天一区二区| 一区二区三区日韩| 国产精品入口麻豆原神| 日韩免费电影网站| 91麻豆精品久久久久蜜臀| 91在线观看免费视频| 国产98色在线|日韩| 蜜臀av一区二区在线观看| 亚洲一区视频在线| 国产精品无人区| 久久精品视频一区| 亚洲精品在线一区二区| 欧美一区二区精品在线| 欧美色综合久久| 色婷婷精品大在线视频| av在线不卡电影| 国产精品自拍av| 久久成人麻豆午夜电影| 日本不卡一区二区三区| 亚洲第一成人在线| 亚洲一本大道在线| 伊人一区二区三区| 亚洲视频一区二区在线| 欧美国产国产综合| 欧美国产视频在线| 久久精品综合网| 久久女同性恋中文字幕| 精品国产乱码久久久久久浪潮| 91精品婷婷国产综合久久性色| 欧美精品日韩一区| 欧美福利一区二区| 欧美另类变人与禽xxxxx| 欧美亚洲另类激情小说| 欧美在线影院一区二区| 99精品国产热久久91蜜凸| 成人动漫一区二区在线| 99久久精品久久久久久清纯| av在线综合网| a美女胸又www黄视频久久| 成人久久视频在线观看| 成人免费视频视频| 99精品久久免费看蜜臀剧情介绍| 成人av午夜电影| 色av综合在线| 欧美日韩亚洲国产综合| 欧美一级理论片| 久久久久青草大香线综合精品| 久久久国产精品午夜一区ai换脸| 欧美激情一区三区| 亚洲精品菠萝久久久久久久| 亚洲成人综合视频| 奇米精品一区二区三区四区| 精品制服美女久久|