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

📄 idt723v90823.c

📁 IDT72v90823时隙交叉芯片的 的功能驱动代码
💻 C
字号:
/* idt72v90823.c - IDT 72V90823 driver source *//*modification history--------------------*/#include "idt72v90823.h"TSICTL idt90823TsiCtl;void tsiInit(){	  IDT72V90823REG * pTsiReg;	  unsigned int i;	  volatile unsigned short bpeState;	         /* disable ODE and out of reset*/      rstTSI(0xFF);            idt90823TsiCtl.tsiReg = (IDT72V90823REG *)CS_TSI90823;		  pTsiReg = idt90823TsiCtl.tsiReg;	  	  pTsiReg->cr 	= 0x0000;	  pTsiReg->ims 	= 0x0002;  	  pTsiReg->far 	= 0x0000;	  pTsiReg->for0 = 0x0000;	  pTsiReg->for1 = 0x0000;	  pTsiReg->for2 = 0x0000;	  pTsiReg->for3 = 0x0000;	 /* block program  initialize connect memory */      pTsiReg->cr |= CRMBP_CONMEM_PRG;	  pTsiReg->ims |= IMSBPE_PROGRAM_START;	  bpeState = 1;	  while (bpeState)	  {	  	bpeState = ((volatile unsigned short)(pTsiReg->ims)) & IMSBPE;	  } 	  	  pTsiReg->cr &= ~CRMBP_CONMEM_PRG;      }void tsiChannelConnect(	unsigned short srcStream,	unsigned short srcSlot,	unsigned short dstStream,	unsigned short dstSlot){	 IDT72V90823REG * pTsiReg;	 	 pTsiReg = idt90823TsiCtl.tsiReg;	 	 if (((srcStream < TSISTREAM)&& (srcSlot < TSISLOT))	      && ((dstStream >= TSISTREAM) && (dstSlot >= TSISLOT)))	 {	 	 pTsiReg->cr = (dstStream & CRSTREAM);	 	 	 pTsiReg->tsiMem[dstSlot] = (CONMEM_OE | ((srcStream << CONMEM_STEAM_OFFSET) & CONMEM_STEAM)	 	 							|(srcSlot & CONMEM_SLOT));	 }	 else	 {	 	logMsg("TSI slot or stream not exist\n",0,0,0,0,0,0);	 }	 	 }void tsiChannelDisconnect(	unsigned short dstStream,	unsigned short dstSlot){	 IDT72V90823REG * pTsiReg;	 	 pTsiReg = idt90823TsiCtl.tsiReg;	 	 if (((dstStream < TSISTREAM)&& (dstSlot < TSISLOT)))	 {	 	 pTsiReg->cr = (dstStream & CRSTREAM);	 	 	 pTsiReg->tsiMem[dstSlot] &= ~(CONMEM_OE|CONMEM_STEAM|CONMEM_SLOT);	 	 									 }	 else	 {	 	logMsg("TSI slot or stream not exist\n",0,0,0,0,0,0);	 }	 	 }void tsiCrossCreate(	unsigned short firstStream,	unsigned short firstSlot,	unsigned short secondStream,	unsigned short secondSlot){	tsiChannelDisconnect(firstStream,firstSlot);	tsiChannelDisconnect(secondStream,secondSlot);		tsiChannelConnect(firstStream,firstSlot,secondStream,secondSlot);	tsiChannelConnect(secondStream,secondSlot,firstStream,firstSlot);	}void tsiCrossDestroy(	unsigned short firstStream,	unsigned short firstSlot,	unsigned short secondStream,	unsigned short secondSlot){	tsiChannelDisconnect(firstStream,firstSlot);	tsiChannelDisconnect(secondStream,secondSlot);}void dumpCross(){	 IDT72V90823REG * pTsiReg;	 int i,j,first;	 volatile unsigned short conMemTemp;	 unsigned short srcStream;	 unsigned short srcSlot;	 	 	 first = 1;	 	 pTsiReg = idt90823TsiCtl.tsiReg;	 	 pTsiReg->cr = 0;	 	 for(i = 0 ;i < TSISTREAM ; i++)	 {	   pTsiReg->cr = i;	   	   for (j = 0 ; j < TSISLOT ; j++)	    {	    	conMemTemp = pTsiReg->tsiMem[j];	    		    		    	if (conMemTemp & CONMEM_OE)	    	{	    		if(first == 1)	    		{	    			printf("\nIN(STREAM   , SLOT   )-->OUT(STREAM   ,SLOT   )\n");	    			first = 0;	    		}	    			    		srcStream = (conMemTemp & CONMEM_STEAM)>>CONMEM_STEAM_OFFSET;	    		srcSlot	  =  conMemTemp & CONMEM_SLOT;	    			    		printf("IN(       %d,      %d)-->OUT(       %d,     %d)\n",srcStream,srcSlot,i,j);	    	}	    }	 }	 printf("\n TimeSlot Dump OK\n");}

⌨️ 快捷键说明

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