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

📄 bspserial.c

📁 freescale i.mx31 BSP CE5.0全部源码
💻 C
📖 第 1 页 / 共 2 页
字号:
    switch (HWAddr) {

         case CSP_BASE_REG_PA_UART1:

			 break;
	
		case CSP_BASE_REG_PA_UART2:
			DDKIomuxSetPinMux(DDK_IOMUX_PIN_TXD2, DDK_IOMUX_OUT_FUNC, DDK_IOMUX_IN_FUNC);
			DDKIomuxSetPinMux(DDK_IOMUX_PIN_RXD2, DDK_IOMUX_OUT_FUNC, DDK_IOMUX_IN_FUNC);
			DDKIomuxSetPinMux(DDK_IOMUX_PIN_CTS2, DDK_IOMUX_OUT_FUNC, DDK_IOMUX_IN_FUNC);
			DDKIomuxSetPinMux(DDK_IOMUX_PIN_RTS2, DDK_IOMUX_OUT_FUNC, DDK_IOMUX_IN_FUNC);

            break;

        case CSP_BASE_REG_PA_UART3:

			break;

       
        case CSP_BASE_REG_PA_UART4:
	
			break;

        case CSP_BASE_REG_PA_UART5:

			DDKIomuxSetPinMux(DDK_IOMUX_PIN_PC_VS2, DDK_IOMUX_OUT_ALT2, DDK_IOMUX_IN_ALT2);
			DDKIomuxSetPinMux(DDK_IOMUX_PIN_PC_BVD1, DDK_IOMUX_OUT_ALT2, DDK_IOMUX_IN_ALT2);
			DDKIomuxSetPinMux(DDK_IOMUX_PIN_PC_BVD2, DDK_IOMUX_OUT_ALT2, DDK_IOMUX_IN_ALT2);
			DDKIomuxSetPinMux(DDK_IOMUX_PIN_PC_RST, DDK_IOMUX_OUT_ALT2, DDK_IOMUX_IN_ALT2);

			//PWR_EN_IRDA pin
			DDKIomuxSetPinMux(DDK_IOMUX_PIN_CSI_D4, DDK_IOMUX_OUT_GPIO, DDK_IOMUX_IN_GPIO);
            DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D4, DDK_IOMUX_PAD_SLEW_SLOW,
								 DDK_IOMUX_PAD_DRIVE_NORMAL, DDK_IOMUX_PAD_MODE_CMOS, 
								 DDK_IOMUX_PAD_TRIG_SCHMITT,DDK_IOMUX_PAD_PULL_UP_100K);
            DDKGpioWriteDataPin(DDK_GPIO_PORT3, BSP_GPIO_PWR_EN_IRDA, 1);
			DDKGpioSetConfig(DDK_GPIO_PORT3, BSP_GPIO_PWR_EN_IRDA, DDK_GPIO_DIR_OUT, DDK_GPIO_INTR_NONE);
			//PWR_EN_GPS pin
			DDKIomuxSetPinMux(DDK_IOMUX_PIN_CSI_D5, DDK_IOMUX_OUT_GPIO, DDK_IOMUX_IN_GPIO);
            DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D5, DDK_IOMUX_PAD_SLEW_SLOW,
								 DDK_IOMUX_PAD_DRIVE_NORMAL, DDK_IOMUX_PAD_MODE_CMOS, 
								 DDK_IOMUX_PAD_TRIG_SCHMITT,DDK_IOMUX_PAD_PULL_UP_100K);
            DDKGpioWriteDataPin(DDK_GPIO_PORT3, BSP_GPIO_PWR_EN_GPS, 1);
			DDKGpioSetConfig(DDK_GPIO_PORT3, BSP_GPIO_PWR_EN_GPS, DDK_GPIO_DIR_OUT, DDK_GPIO_INTR_NONE);
			//IrDA_Mode_Set pin
			DDKIomuxSetPinMux(DDK_IOMUX_PIN_DSR_DTE1, DDK_IOMUX_OUT_GPIO, DDK_IOMUX_IN_GPIO);
            DDKIomuxSetPadConfig(DDK_IOMUX_PAD_DSR_DTE1, DDK_IOMUX_PAD_SLEW_SLOW,
								 DDK_IOMUX_PAD_DRIVE_NORMAL, DDK_IOMUX_PAD_MODE_CMOS, 
								 DDK_IOMUX_PAD_TRIG_SCHMITT,DDK_IOMUX_PAD_PULL_UP_100K);
            DDKGpioWriteDataPin(DDK_GPIO_PORT2, BSP_GPIO_IRDA_MODE_SET, 1);
			DDKGpioSetConfig(DDK_GPIO_PORT2, BSP_GPIO_IRDA_MODE_SET, DDK_GPIO_DIR_OUT, DDK_GPIO_INTR_NONE);
			//IRDA_RS232 pin
			DDKIomuxSetPinMux(DDK_IOMUX_PIN_SCLK0, DDK_IOMUX_OUT_GPIO, DDK_IOMUX_IN_GPIO);
            DDKIomuxSetPadConfig(DDK_IOMUX_PAD_SCLK0, DDK_IOMUX_PAD_SLEW_SLOW,
								 DDK_IOMUX_PAD_DRIVE_NORMAL, DDK_IOMUX_PAD_MODE_CMOS, 
								 DDK_IOMUX_PAD_TRIG_SCHMITT,DDK_IOMUX_PAD_PULL_UP_100K);
            DDKGpioWriteDataPin(DDK_GPIO_PORT3, BSP_GPIO_IRDA_RS232, 1);
			DDKGpioSetConfig(DDK_GPIO_PORT3, BSP_GPIO_IRDA_RS232, DDK_GPIO_DIR_OUT, DDK_GPIO_INTR_NONE);
			//GPS_RS232 pin
			DDKIomuxSetPinMux(DDK_IOMUX_PIN_SRST0, DDK_IOMUX_OUT_GPIO, DDK_IOMUX_IN_GPIO);
            DDKIomuxSetPadConfig(DDK_IOMUX_PAD_SRST0, DDK_IOMUX_PAD_SLEW_SLOW,
								 DDK_IOMUX_PAD_DRIVE_NORMAL, DDK_IOMUX_PAD_MODE_CMOS, 
								 DDK_IOMUX_PAD_TRIG_SCHMITT,DDK_IOMUX_PAD_PULL_UP_100K);
            DDKGpioWriteDataPin(DDK_GPIO_PORT3, BSP_GPIO_GPS_RS232, 1);
			DDKGpioSetConfig(DDK_GPIO_PORT3, BSP_GPIO_GPS_RS232, DDK_GPIO_DIR_OUT, DDK_GPIO_INTR_NONE);
			
			break;

        default:
            return result;
    }

    return TRUE;
}

//-----------------------------------------------------------------------------
//
// Function: BSPSerGetChannelPriority
//
// This function is a wrapper for Uart to find out the SDMA channel priority.
//
// Parameters:
//
// Returns:
//      SDMA channel priority for Serial.
//
//-----------------------------------------------------------------------------
UINT8 BSPSerGetChannelPriority()
{
	return BSP_SDMA_CHNPRI_SERIAL;
}

//-----------------------------------------------------------------------------
//
// Function: BSPSerGetDMAIsEnabled
//
// This function is a wrapper for Uart to find out if SDMA is to be used or not.
// The UARTs are identified based on the based address.
//
// Parameters:
//      HWAddr
//          [in] Physical IO address.
// Returns:
//      TRUE if SDMA is to be used for this UART.
//
//-----------------------------------------------------------------------------
BOOL BSPSerGetDMAIsEnabled(ULONG HWAddr)
{
	BOOL useDMA = FALSE;
    switch (HWAddr) {
        case CSP_BASE_REG_PA_UART1:
#if BSP_SDMA_SUPPORT_UART1
			useDMA = TRUE;
#endif
            break;
        case CSP_BASE_REG_PA_UART2:
#if BSP_SDMA_SUPPORT_UART2
			useDMA = TRUE;
#endif
            break;
        case CSP_BASE_REG_PA_UART3:
#if BSP_SDMA_SUPPORT_UART3
			useDMA = TRUE;
#endif
            break;
        case CSP_BASE_REG_PA_UART4:
#if BSP_SDMA_SUPPORT_UART4
			useDMA = TRUE;
#endif
            break;
        case CSP_BASE_REG_PA_UART5:
#if BSP_SDMA_SUPPORT_UART5
			useDMA = TRUE;
#endif
            break;
        default:
            break;
    }
	return useDMA;
}

//-----------------------------------------------------------------------------
//
// Function: BSPSerGetDMARequest
//
// This function is a wrapper for Uart to find out the TX/RX SDMA request line.
// The UARTs are identified based on the based address.
//
// Parameters:
//      HWAddr
//          [in] Physical IO address.
//      reqRx
//          [out] the RX SDMA request line to be used for this UART.
//      reqTx
//          [out] the TX SDMA request line to be used for this UART.
// Returns:
//      TRUE if SDMA is to be used for this UART.
//
//-----------------------------------------------------------------------------
BOOL BSPSerGetDMARequest(ULONG HWAddr, int* reqRx, int* reqTx)
{
    switch (HWAddr) {
        case CSP_BASE_REG_PA_UART1:
            *reqRx = DDK_DMA_REQ_UART1_RX;
			*reqTx = DDK_DMA_REQ_UART1_TX;
            break;
        case CSP_BASE_REG_PA_UART2:
            *reqRx = DDK_DMA_REQ_UART2_RX;
			*reqTx = DDK_DMA_REQ_UART2_TX;
            break;
        case CSP_BASE_REG_PA_UART3:
            *reqRx = DDK_DMA_REQ_UART3_RX;
			*reqTx = DDK_DMA_REQ_UART3_TX;
            break;
        case CSP_BASE_REG_PA_UART4:
            *reqRx = DDK_DMA_REQ_UART4_RX;
			*reqTx = DDK_DMA_REQ_UART4_TX;
            break;
        case CSP_BASE_REG_PA_UART5:
            *reqRx = DDK_DMA_REQ_UART5_RX;
			*reqTx = DDK_DMA_REQ_UART5_TX;
            break;
        default:
            return FALSE;
    }
	return TRUE;
}

//-----------------------------------------------------------------------------
//
// Function: BSPSerSetDMAReqGpr
//
// This function is a wrapper for Uart to acquire a muxed SDMA request line.
// The UARTs are identified based on the based address.
//
// Parameters:
//      HWAddr
//          [in] Physical IO address.
// Returns:
//      TRUE if success.
//
//-----------------------------------------------------------------------------
BOOL BSPSerAcquireDMAReqGpr(ULONG HWAddr)
{
	BOOL bRet = FALSE;

    switch (HWAddr) {
        case CSP_BASE_REG_PA_UART2:
            bRet = DDKIomuxSetGprBit(DDK_IOMUX_GPR_FIRI_UART2, 0);
            break;
        case CSP_BASE_REG_PA_UART3:
            bRet = DDKIomuxSetGprBit(DDK_IOMUX_GPR_CSPI1_UART3, 1);
            break;
        case CSP_BASE_REG_PA_UART5:
            bRet = DDKIomuxSetGprBit(DDK_IOMUX_GPR_CSPI3_UART5, 1);
            break;
        default:
            break;
    }
	return bRet;
}

//-----------------------------------------------------------------------------
//
// Function: BSPSerRestoreDMAReqGpr
//
// This function is a wrapper for Uart to restore a muxed SDMA request line.
// The UARTs are identified based on the based address.
//
// Parameters:
//      HWAddr
//          [in] Physical IO address.
// Returns:
//      TRUE if success.
//
//-----------------------------------------------------------------------------
BOOL BSPSerRestoreDMAReqGpr(ULONG HWAddr)
{
	BOOL bRet = TRUE;

    switch (HWAddr) {
        case CSP_BASE_REG_PA_UART2:
            bRet = DDKIomuxSetGprBit(DDK_IOMUX_GPR_FIRI_UART2, 1);
            break;
        case CSP_BASE_REG_PA_UART3:
            bRet = DDKIomuxSetGprBit(DDK_IOMUX_GPR_CSPI1_UART3, 0);
            break;
        case CSP_BASE_REG_PA_UART5:
            bRet = DDKIomuxSetGprBit(DDK_IOMUX_GPR_CSPI3_UART5, 0);
            break;
        default:
            break;
    }
	return bRet;
}

//-----------------------------------------------------------------------------
//
// Function: BSPGetDMABuffSize
//
// This function is a wrapper for Uart to find out the TX/RX SDMA.
// The UARTs are identified based on the based address.
//
// Parameters:
//      buffRx
//          [out] the RX SDMA buffer size.
//
//      buffTx
//          [out] the RX SDMA buffer size 
// Returns:
//      
//
//-----------------------------------------------------------------------------
VOID BSPGetDMABuffSize(UINT16* buffRx, UINT16 * buffTx)
{

	*buffRx = SERIAL_SDMA_RX_BUFFER_SIZE;
	*buffTx = SERIAL_SDMA_TX_BUFFER_SIZE; 


}

⌨️ 快捷键说明

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