?? omap730serial.c
字號:
BOOL OEMDebugInit()
{
OMAP730_UART_REGS *pUartRegs;
OMAP730_CONFIG_REGS *pConfigRegs;
pUartRegs = (OMAP730_UART_REGS *)OMAP730_UART1_REGS_PA;
pConfigRegs = (OMAP730_CONFIG_REGS *)OMAP730_CONFIG_REGS_PA;
// Enable UART1 48MHz clock
SETREG32(&pConfigRegs->PCC_CONF_REG, PCC_CONF_UART1_DPLL_REQ);
// Reset UART & wait until it completes
OUTREG8(&pUartRegs->SYSC, UART_SYSC_RST);
while ((INREG8(&pUartRegs->SYSS) & UART_SYSS_RST_DONE) == 0);
// Set baud rate
OUTREG8(&pUartRegs->LCR, UART_LCR_DLAB);
OUTREG8(&pUartRegs->DLL, BSP_UART_DSIUDLL);
OUTREG8(&pUartRegs->DLH, BSP_UART_DSIUDLH);
// 8 bit, 1 stop bit, no parity
OUTREG8(&pUartRegs->LCR, BSP_UART_LCR);
// Enable FIFO
OUTREG8(&pUartRegs->FCR, UART_FCR_FIFO_EN);
// Pool
OUTREG8(&pUartRegs->IER, 0);
// Set DTR/RTS signals
OUTREG8(&pUartRegs->MCR, UART_MCR_DTR|UART_MCR_RTS);
// Configuration complete so select UART 16x mode
OUTREG8(&pUartRegs->MDR1, UART_MDR1_UART16);
return TRUE;
}
//------------------------------------------------------------------------------
//
// Function: OEMDebugDeinit
//
// Close debug serial port
//
VOID OEMDebugDeinit()
{
OMAP730_UART_REGS *pUartRegs;
OMAP730_CONFIG_REGS *pConfigRegs;
pUartRegs = (OMAP730_UART_REGS *)OMAP730_UART1_REGS_PA;
pConfigRegs = (OMAP730_CONFIG_REGS *)OMAP730_CONFIG_REGS_PA;
// Wait while FIFO isn't empty
while ((INREG8(&pUartRegs->LSR) & UART_LSR_TX_SR_E) == 0);
// Stop UART1 48-MHz clock
CLRREG32(&pConfigRegs->PCC_CONF_REG, PCC_CONF_UART1_DPLL_REQ);
}
//------------------------------------------------------------------------------
//
// Function: OEMWriteDebugByte
//
// Write byte to debug serial port.
//
VOID OEMWriteDebugByte(UINT8 ch)
{
OMAP730_UART_REGS *pUartRegs = (OMAP730_UART_REGS *)OMAP730_UART1_REGS_PA;
// Wait while FIFO is full
while ((INREG8(&pUartRegs->SSR) & UART_SSR_TX_FIFO_FULL) != 0);
// Send byte
OUTREG8(&pUartRegs->THR, ch);
}
//------------------------------------------------------------------------------
//
// Function: OEMReadDebugByte
//
// Input character/byte from debug serial port
//
INT OEMReadDebugByte()
{
OMAP730_UART_REGS *pUartRegs = (OMAP730_UART_REGS *)OMAP730_UART1_REGS_PA;
UINT8 ch = OEM_DEBUG_READ_NODATA;
UINT8 status;
status = INREG8(&pUartRegs->LSR);
OEMWriteDebugByte(status);
if ((status & UART_LSR_RX_FIFO_E) != 0) {
ch = INREG8(&pUartRegs->RHR);
OEMWriteDebugByte(ch);
if ((status & UART_LSR_RX_ERROR) != 0) ch = OEM_DEBUG_COM_ERROR;
}
return (INT)ch;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -