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

📄 modemif.c

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 C
📖 第 1 页 / 共 2 页
字号:
	{
	
	Uart_Printf("[ AP Tx End Detect: %d ]\n",End_Detect++);

	// Read data from DPSRAM
	Uart_Printf("[ MODEM Reading.......]\n");	
	rxdata = (unsigned char *)(_MEM_MDM_RX_Buffer);
	for(i=0;i<_DPSRAM_TXRX_BUFLEN;i++)
		{
		*(unsigned char *)(rxdata+i) = *(unsigned char *)(_MDM_RX_Queue+i); 				// pop the data from DPSRAM		
		queue_depth++;
		/*
		if(queue_depth == _DPSRAM_TXRX_BUFLEN)
			{
			rxdata = (unsigned char *)(_MEM_MDM_RX_Buffer);
			queue_depth = 0;
			}
		*/
		}
	Rx_Done_Flag=1;
	}
	else
		Uart_Printf("[ Error!!!: 0x%x ]\n",temp);
	rINTMSK=~(BIT_EINT11_14);  
	rEINTMASK=rEINTMASK&~(1<<12)|(0<<12); //EINTMASK[12]=enable interrupt.

}

void MODEM_Tx(void)
{

	unsigned int i;
	unsigned char *txdata;
	
	Tx_Done_Flag = 0;
	
	Uart_TxEmpty(0);
	Uart_Printf("[ MODEM Tx test using Modem I/F ]\n");
	
	// Initialize TX Buffer ----------------INIT
	txdata = (unsigned char *)(_MEM_MDM_TX_Buffer);
	for(i=0;i<_DPSRAM_TXRX_BUFLEN;i++)
		*(txdata+i) = i; 
	txdata = (unsigned char *)(_MEM_MDM_TX_Buffer);
	
	Uart_Printf("[ AP RX first, then start any key]\n");
	Uart_Getch();


	//Request irq to AP--------------START
	Uart_Printf("[ MODEM Tx Start]\n");
	*(unsigned char *)(_MDM_TX_Queue_Irq_Port)=0xff;

	

	// Write data into DPSRAM
	Uart_Printf("[ MODEM Writing.......]\n");	
	for(i=0;i<_DPSRAM_TXRX_BUFLEN;i++)
	{
		*(unsigned char *)(_MDM_TX_Queue+i) = *(txdata+i); 				// push data into DPSRAM		
		Tx_Done_Flag++;
	//	if(Tx_Done_Flag == _DPSRAM_TXRX_BUFLEN)
	//	{
	//		txdata = (unsigned char *)(_MEM_MDM_TX_Buffer);
	//	}
	}
	
	//Request irq to AP---------------STOP
	Uart_Printf("[ MODEM Tx Stop]\n");
	*(unsigned char *)(_MDM_TX_Queue_Irq_Port)=0x00;
	

	txdata = (unsigned char *)(_MEM_MDM_TX_Buffer);
	for(i=0;i<_DPSRAM_TXRX_BUFLEN;i++);
		//Uart_Printf("0x%x=%03x	",(txdata+i),*(txdata+i));		  
	
	}
	
void AP_Rx(void)
{

	unsigned int i;
	unsigned char *rxdata;
	
	Rx_Done_Flag = 0;
	Start_Detect = 0;
	End_Detect = 0;
	Uart_TxEmpty(0);
	
	Uart_Printf("[ AP Rx test using Modem I/F ]\n");
	
	// Zero Initialize RX Buffer ----------------INIT
	rxdata = (unsigned char *)(_MEM_AP_RX_Buffer );
	for(i=0;i<_DPSRAM_TXRX_BUFLEN;i++)
		*(rxdata+i) = 0x0; 
	rxdata = (unsigned char *)(_MEM_AP_RX_Buffer );
	
	
	Uart_Printf("[ AP RX Start]\n");
	Uart_Getch();
	
	while(!Rx_Done_Flag);
	rINTMSK|=(BIT_MODEM);  	
	Uart_Printf("[ AP Rx End]\n");
	
	rxdata = (unsigned char *)(_MEM_AP_RX_Buffer );
	for(i=0;i<_DPSRAM_TXRX_BUFLEN;i++)
		Uart_Printf(".");	
		//Uart_Printf("0x%x=%03x	",(rxdata+i),*(rxdata+i));
	
}

void __irq AP_Int_Rx(void)
{
	unsigned int i;
	unsigned char *rxdata,temp;	
	unsigned int queue_depth=0;


	ClearPending(BIT_MODEM);	
	rINTMSK|=(BIT_MODEM);  	
	
	temp=(*(unsigned char *)_AP_RX_Queue_Irq_Port)&0xff;
	if( temp == 0xff)
	{

	Uart_Printf("[ MODEM Tx Start Detect: %d ]\n",Start_Detect++);

	}
	else if(temp == 0x00)
	{
	
	Uart_Printf("[ MODEM Tx End Detect: %d ]\n",End_Detect++);

	// Read data from DPSRAM
	Uart_Printf("[ AP Reading.......]\n");		
	rxdata = (unsigned char *)(_MEM_AP_RX_Buffer);
	for(i=0;i<_DPSRAM_TXRX_BUFLEN;i++)
		{
		*(unsigned char *)(rxdata+i) = *(unsigned char *)(_AP_RX_Queue+i); 				// pop the data from DPSRAM		
		queue_depth++;
		/*
		if(queue_depth == _DPSRAM_TXRX_BUFLEN)
			{
			rxdata = (unsigned char *)(_MEM_AP_RX_Buffer);
			queue_depth = 0;
			}
		*/	
		}
	Rx_Done_Flag=1;
	}
	else
		Uart_Printf("[ Error!!!: 0x%x ]\n",temp);	
	rINTMSK=~(BIT_MODEM);  

}

void AP_Tx_Rx(void)
{

		unsigned int i,j;
		unsigned char *txdata,*rxdata;
	
		Tx_Done_Flag = 0;
		Rx_Done_Flag = 0;
		Start_Detect = 0;
		End_Detect = 0;	
		Uart_TxEmpty(0);
		Uart_Printf("[ AP Tx with RX test using Modem I/F ]\n");

		rINT2AP=0x3ff;
		rINT2MDM=0x7ff;
		Uart_Printf("INT2AP:0x%3x,INT2MDM:0x%3x\n",rINT2AP,rINT2MDM);
		//programmable IRQ port address
		
		/*
			rEXTINTCR1=rEXTINTCR1&~(7<<4)|(2<<4);
			//EINT12(GP12)=MODEM_INT=falling edge
		*/	
			rEXTINTC2=rEXTINTC2&~(7<<4)|(2<<4);
			//EINT12(GP12)=MODEM_INT=falling edge

		
		ClearPending(BIT_EINT11_14);//to clear the previous pending states
		
		pISR_EINT11_14= (unsigned)MODEM_Int_Rx;//MODEM_INT
		rINTMSK=~(BIT_EINT11_14);  
		
		rEINTMASK=~(1<<12); //EINTMASK[12]=enable interrupt.

	
		// Initialize TX Buffer ----------------INIT
		txdata = (unsigned char *)(_MEM_AP_TX_Buffer);
		for(i=0;i<_DPSRAM_TXRX_BUFLEN;i++)
			*(txdata+i) = i; 
		txdata = (unsigned char *)(_MEM_AP_TX_Buffer);

		// Zero Initialize RX Buffer ----------------INIT
		rxdata = (unsigned char *)(_MEM_MDM_RX_Buffer);
		for(i=0;i<_DPSRAM_TXRX_BUFLEN;i++)
			*(rxdata+i) = 0x0; 
		rxdata = (unsigned char *)(_MEM_MDM_RX_Buffer);	
		
		//	Uart_Printf("[ MODEM RX first, then start any key]\n");
		//	Uart_Getch();
	
		for(j=0;j<REPEAT;j++)
		{
			//Request irq to MODEM--------------START
			Uart_Printf("[ AP Tx Start: %d ]\n",j);
			*(unsigned char *)(_AP_TX_Queue_Irq_Port)=0xff;
			
			// Write data into DPSRAM
			Uart_Printf("[ AP Writing.......]\n");
			for(i=0;i<_DPSRAM_TXRX_BUFLEN;i++)
			{
				*(unsigned char *)(_AP_TX_Queue+i) = *(txdata+i);				// put the data into fifo		
				Tx_Done_Flag++;
		//		if(Tx_Done_Flag == _DPSRAM_TXRX_BUFLEN)
		//		{
		//			txdata = (unsigned char *)(_MEM_AP_TX_Buffer);
		//		}
			}
		
			//Request irq to MODEM---------------STOP
			Uart_Printf("[ AP Tx Stop]\n");
			*(unsigned char *)(_AP_TX_Queue_Irq_Port)=0x00;
		
		/*
			txdata = (unsigned char *)(_MEM_AP_TX_Buffer);
			for(i=0;i<_DPSRAM_TXRX_BUFLEN;i++)
				Uart_Printf("0x%x=%03x	",(txdata+i),*(txdata+i));	
		*/		
		}
		rINTMSK|=(BIT_EINT11_14);  
	rEINTMASK|=(1<<12); //EINTMASK[12]=MASK interrupt.			
		Uart_Printf("[ AP Tx with RX test END]\n");	

}
void MDM_Tx_Rx(void)
{
	unsigned int i,j;
	unsigned char *txdata,*rxdata;
	
	Tx_Done_Flag = 0;
	Rx_Done_Flag = 0;
	Start_Detect = 0;
	End_Detect = 0;
	Uart_TxEmpty(0);
	Uart_Printf("[ MODEM Tx with RX test using Modem I/F ]\n");

	rINT2AP=0x3ff;
	rINT2MDM=0x7ff;
	Uart_Printf("rINT2AP,rINT2MDM 0x%3x 0x%3x\n",rINT2AP,rINT2MDM);
	//programmable IRQ port address

	ClearPending(BIT_MODEM);//to clear the previous pending states
	
	pISR_MODEM= (unsigned)AP_Int_Rx;//MODEM_INT
	rINTMSK=~(BIT_MODEM);  	
	
	// Initialize TX Buffer ----------------INIT
	txdata = (unsigned char *)(_MEM_MDM_TX_Buffer);
	for(i=0;i<_DPSRAM_TXRX_BUFLEN;i++)
		*(txdata+i) = i; 
	txdata = (unsigned char *)(_MEM_MDM_TX_Buffer);

	// Zero Initialize RX Buffer ----------------INIT
	rxdata = (unsigned char *)(_MEM_AP_RX_Buffer );
	for(i=0;i<_DPSRAM_TXRX_BUFLEN;i++)
		*(rxdata+i) = 0x0; 
	rxdata = (unsigned char *)(_MEM_AP_RX_Buffer );	
	
	//Uart_Printf("[ AP RX first, then start any key]\n");
	//Uart_Getch();
	
	for(j=0;j<REPEAT;j++)	
	{
	//Request irq to AP--------------START
	Uart_Printf("[ MODEM Tx Start: %d ]\n",j);
	*(unsigned char *)(_MDM_TX_Queue_Irq_Port)=0xff;
	
	
	// Write data into DPSRAM
	Uart_Printf("[ MODEM Writing.......]\n");	
	for(i=0;i<_DPSRAM_TXRX_BUFLEN;i++)
	{
		*(unsigned char *)(_MDM_TX_Queue+i) = *(txdata+i);				// push data into DPSRAM		
		Tx_Done_Flag++;
	//	if(Tx_Done_Flag == _DPSRAM_TXRX_BUFLEN)
	//	{
	//		txdata = (unsigned char *)(_MEM_MDM_TX_Buffer);
	//	}
	}
	
	//Request irq to AP---------------STOP
	Uart_Printf("[ MODEM Tx Stop]\n");
	*(unsigned char *)(_MDM_TX_Queue_Irq_Port)=0x00;
	}

	/*
	txdata = (unsigned char *)(_MEM_MDM_TX_Buffer);
	for(i=0;i<_DPSRAM_TXRX_BUFLEN;i++);
		Uart_Printf("0x%x=%03x	",(txdata+i),*(txdata+i));	
	*/
	rINTMSK|=(BIT_MODEM);  

	Uart_Printf("[ MODEM Tx with RX test END]\n");	

}

⌨️ 快捷键说明

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