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

📄 bspirda.c

📁 iMX21 Serial driver under WinCE5.0
💻 C
字号:
//-----------------------------------------------------------------------------
//
//  Copyright (C) 2004, Motorola Inc. All Rights Reserved
//
//------------------------------------------------------------------------------
//
// Copyright (C) 2004-2007, Freescale Semiconductor, Inc. All Rights Reserved.
// THIS SOURCE CODE, AND ITS USE AND DISTRIBUTION, IS SUBJECT TO THE TERMS
// AND CONDITIONS OF THE APPLICABLE LICENSE AGREEMENT
//
//------------------------------------------------------------------------------

//-----------------------------------------------------------------------------
//
//  File:  bspirda.c
//
//  Provides BSP-specific configuration routines for the Irda peripheral.
//
//-----------------------------------------------------------------------------




//------------------------------------------------------------------------------
// INCLUDE FILES  
//------------------------------------------------------------------------------

#include <windows.h>
#include <bsp.h>


//------------------------------------------------------------------------------
// Local Functions
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
//
// Function: BSPIrdaEnable
//
// This is a private function to enable the IRDA.
//
// Parameters:
//      bEnable
//          [in]    TRUE if enable IRDA. FALSE if disable.
//
// Returns:
//      none.
//-----------------------------------------------------------------------------
VOID BSPIrdaEnable(BOOL bEnable)
{
    PHYSICAL_ADDRESS phyAddr;
    BSP_EIO_IO0_REGS * pEioReg;

    phyAddr.QuadPart = BSP_BASE_REG_PA_EIO_IO0_BASE;
    pEioReg = (BSP_EIO_IO0_REGS *)MmMapIoSpace(phyAddr, sizeof(BSP_EIO_IO0_REGS), FALSE);

    if (bEnable) {
        INSREG16BF(&pEioReg->IO0_L, EIO_IO0_L_IRDA_EN, EIO_IO0_L_IRDA_EN_ENABLE);
    } else {
        INSREG16BF(&pEioReg->IO0_L, EIO_IO0_L_IRDA_EN, EIO_IO0_L_IRDA_EN_DISABLE);
    }

    MmUnmapIoSpace(pEioReg, sizeof(BSP_EIO_IO0_REGS));
    return;
}


//-----------------------------------------------------------------------------
//
// Function: BSPIrdaSetMode
//
// This is a private function to set the IRDA mode.
//
// Parameters:
//      none.
//
// Returns:
//      none.
//-----------------------------------------------------------------------------
VOID BSPIrdaSetMode(irMode_c mode)
{
    PHYSICAL_ADDRESS phyAddr;
    BSP_EIO_IO0_REGS * pEioReg;

    phyAddr.QuadPart = BSP_BASE_REG_PA_EIO_IO0_BASE;
    pEioReg = (BSP_EIO_IO0_REGS *)MmMapIoSpace(phyAddr, sizeof(BSP_EIO_IO0_REGS), FALSE);

    switch (mode) {
        case SIR_MODE:
            INSREG16BF(&pEioReg->IO0_L, EIO_IO0_L_IRDA_MD, 1);
            INSREG16BF(&pEioReg->IO0_L, EIO_IO0_L_IRDA_FIR_SEL, EIO_IO0_L_IRDA_FIR_SEL_IR);
            break;
        case MIR_MODE:
        case FIR_MODE:
            INSREG16BF(&pEioReg->IO0_L, EIO_IO0_L_IRDA_MD, 1);
            INSREG16BF(&pEioReg->IO0_L, EIO_IO0_L_IRDA_FIR_SEL, EIO_IO0_L_IRDA_FIR_SEL_FIR);
            break;
    }

    MmUnmapIoSpace(pEioReg, sizeof(BSP_EIO_IO0_REGS));
    return;
}

⌨️ 快捷键说明

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