📄 modemif.c
字号:
{
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 + -