微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > S3C2410的WINCE BSP添加串口支持

S3C2410的WINCE BSP添加串口支持

时间:10-08 来源:互联网 点击:

tile unsigned int *)(v_pIOPregs->rGPHDAT);

pHWHead->rDSRport = (volatile unsigned int *)(v_pIOPregs->rGPHDAT);

pHWHead->DtrPortNum = 0;

pHWHead->DsrPortNum = 1;

#else

volatile IOPreg *s2410IOP;

s2410IOP = (volatile IOPreg *)IOP_BASE;

EnterCriticalSection((pHWHead->RegCritSec));

s2410IOP->rGPHCON = ~(0x38 | 0x310/* | 0x312 | 0x314*/); // clear uart 1 - rx, tx

s2410IOP->rGPHCON |= (0x28 | 0x210 /*| 0x112 | 0x014*/);

s2410IOP->rGPHCON |= (0x20 | 0x22 );

s2410IOP->rGPHUP |= 0x03;

pHWHead->rDTRport = (volatile unsigned int *)(IOP_BASE+0x74); //s2410IOP->rGPHDAT

pHWHead->rDSRport = (volatile unsigned int *)(IOP_BASE+0x74);

pHWHead->DtrPortNum = 0;

pHWHead->DsrPortNum = 1;

#endif

}

else if(pHWHead1->dwIOBase == 0x50008000)

{

#if USEVIRTUAL

EnterCriticalSection((pHWHead->RegCritSec));

v_pIOPregs->rGPHCON = ~( 0x312 | 0x314); // clear uart 2 - rx, tx

v_pIOPregs->rGPHCON |= ( 0x212 | 0x214);

v_pIOPregs->rGPHCON |= (0x20 | 0x22 );

v_pIOPregs->rGPHUP = ~0xc0;

pHWHead->rDTRport = (volatile unsigned int *)(v_pIOPregs->rGPHDAT);

pHWHead->rDSRport = (volatile unsigned int *)(v_pIOPregs->rGPHDAT);

pHWHead->DtrPortNum = 0;

pHWHead->DsrPortNum = 1;

#else

volatile IOPreg *s2410IOP;

s2410IOP = (volatile IOPreg *)IOP_BASE;

EnterCriticalSection((pHWHead->RegCritSec));

s2410IOP->rGPHCON = ~(0x312 | 0x314); // clear uart 2 - rx, tx

s2410IOP->rGPHCON |= ( 0x0212 | 0x0214);

s2410IOP->rGPHCON |= (0x20 | 0x22 );

s2410IOP->rGPHUP = ~0xc0;

pHWHead->rDTRport = (volatile unsigned int *)(IOP_BASE+0x74); //s2410IOP->rGPHDAT

pHWHead->rDSRport = (volatile unsigned int *)(IOP_BASE+0x74);

pHWHead->DtrPortNum = 0;

pHWHead->DsrPortNum = 1;

#endif

}

else

{

#if USEVIRTUAL

EnterCriticalSection((pHWHead->RegCritSec));

v_pIOPregs->rGPHCON = ~(0x30 | 0x32 | 0x34 | 0x36/* | 0x312 | 0x314*/); // clear uart 0 - rx, tx

v_pIOPregs->rGPHCON |= (0x24 | 0x26/* | 0x112 | 0x014*/);

v_pIOPregs->rGPHCON |= (0x20 | 0x22 );

v_pIOPregs->rGPHUP |= 0x03;

pHWHead->rDTRport = (volatile unsigned int *)(v_pIOPregs->rGPHDAT);

pHWHead->rDSRport = (volatile unsigned int *)(v_pIOPregs->rGPHDAT);

pHWHead->DtrPortNum = 0;

pHWHead->DsrPortNum = 1;

#else

volatile IOPreg *s2410IOP;

s2410IOP = (volatile IOPreg *)IOP_BASE;

EnterCriticalSection((pHWHead->RegCritSec));

s2410IOP->rGPHCON = ~(0x30 | 0x32 | 0x34 | 0x36 /*| 0x312 | 0x314*/); // clear uart 0 - rx, tx

s2410IOP->rGPHCON |= (0x24 | 0x26 /*| 0x112 | 0x014*/);

s2410IOP->rGPHCON |= (0x20 | 0x22 );

s2410IOP->rGPHUP |= 0x03;

pHWHead->rDTRport = (volatile unsigned int *)(IOP_BASE+0x74); //s2410IOP->rGPHDAT

pHWHead->rDSRport = (volatile unsigned int *)(IOP_BASE+0x74);

pHWHead->DtrPortNum = 0;

pHWHead->DsrPortNum =1;

#endif

}

LeaveCriticalSection((pHWHead->RegCritSec));

}

接着搜索:

SL_Init(

PVOID pHead, // @parm points to device head

PUCHAR pRegBase, // Pointer to 16550 register base

UINT8 RegStride, // Stride amongst the 16550 registers

EVENT_FUNC EventCallback, // This callback exists in MDD

PVOID pMddHead, // This is the first parm to callback

PLOOKUP_TBL pBaudTable // BaudRate Table

)

在PS2410_UART_INFO pHWHead = (PS2410_UART_INFO)pHead;这一句后面添加:

PSER_INFO pHWHead1 = (PSER_INFO)pHead;

再搜索:

if ( pHWHead->UseIrDA )

{

pHWHead->bINT = BIT_UART2;

pHWHead->bTxINT = INTSUB_TXD2;

pHWHead->bRxINT = INTSUB_RXD2;

pHWHead->bErrINT = INTSUB_ERR2;

#if USEVIRTUAL

pHWHead->s2410SerReg = (S2410_UART_REG *)v_pUART2regs;

pRegBase = (PUCHAR)pHWHead->s2410SerReg;

#else

pRegBase = (PUCHAR)UART2_BASE;

pHWHead->s2410SerReg = (S2410_UART_REG *)pRegBa

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top