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

📄 otghal.c

📁 smartARM2400 USB OTG例程
💻 C
字号:
/*****************************Copyright(c)****************************************************************
**                    Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                           http://www.embedtools.com
**
**------File Info-----------------------------------------------------------------------------------------
** File Name:            OTGHal.c
** Latest modified Date: 2007-12-10        
** Latest Version:       V1.0    
** Description:          OTG硬件层
**                       
**--------------------------------------------------------------------------------------------------------
** Created By:           吴隆穗  Longsui Wu   
** Created date:         2007-12-10    
** Version:              V1.0    
** Descriptions:         初始版本
**
**--------------------------------------------------------------------------------------------------------
** Modified by:          
** Modified date:        
** Version:              
** Description:          
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
*********************************************************************************************************/
#include "OTGIncludes.h"

/*********************************************************************************************************
** Function name:       __otgClkInit
** Descriptions:        初始化OTG 时钟CLK
** input parameters:    None
** output parameters:   None
** Returned value:      
*********************************************************************************************************/
void __otgClkInit (void)
{
    USB_INT32U  uiClkCtrl = (__USB_HOST_CLK_EN | __USB_I2C_CLK_EN | __USB_OTG_CLK_EN | \
                             __USB_DEV_CLK_EN | __USB_AHB_CLK_EN);

    if (!(PCONP & 0x80000000)) {
        PCONP |= 0x80000000;
    }
    
    if ((OTGClkSt & uiClkCtrl) != uiClkCtrl) {
        OTGClkCtrl = uiClkCtrl;                                         /*  配置USB时钟控制寄存器       */
        while ((OTGClkSt & (uiClkCtrl)) != (uiClkCtrl));       
    }
}

/*********************************************************************************************************
** Function name:       __otgIntInit
** Descriptions:        初始化(使能)OTG中断
** input parameters:    None
** output parameters:   None
** Returned value:      None
*********************************************************************************************************/
void __otgIntInit (void)
{
    OTGIntClr = 0x0F;                                                   /*  clear interrupt flags       */
    OTGIntEn  = 0x0F;                                                   /*  enable TMR, HNP_FAILURE,    */
    USBIntSt |= 1U << 31;                                               /*  使能全局中断位              */
} 

/*********************************************************************************************************
** Function name:       __usbAtxIntInit
** Descriptions:        初始化外部收发器ISP1301中断(只使能ID_GND从0-->1跳变中断和ID_FLOAT从0-->1跳变中断)
** input parameters:    None
** output parameters:   None
** Returned value:      None
*********************************************************************************************************/
void __usbAtxIntInit (void)
{
    __isp1301IntDisLow(0xff);
    __isp1301IntDisHigh(0xff);
    __isp1301IntClrAll();
    __isp1301IntEnHigh(__INT_ID_GND | __INT_ID_FLOAT);
}

/*********************************************************************************************************
** Function name:       __otgIntDeInit
** Descriptions:        禁止OTG中断
** input parameters:    None
** output parameters:   None
** Returned value:      None
*********************************************************************************************************/
void __otgIntDeInit (void)
{
    OTGIntClr = 0x0F;                                                   /*  clear interrupt flags       */
    OTGIntEn  = 0x00;                                                   /*  enable TMR, HNP_FAILURE,    */
                                                                        /*  and HNP_SUCESS interrupt    */
} 

/*********************************************************************************************************
** Function name:       __usbPinInit
** Descriptions:        USB引脚初始化
** input parameters:    None
** output parameters:   None
** Returned value:      None
*********************************************************************************************************/
void __usbPinInit (void)
{
    PINSEL1 &= ~(0x03U << 26);                                          /*  P0.29 为 LPC2400 USB        */
    PINSEL1 |= (0x01U << 26);                                           /*  ...Device(1) 的D+           */
    
    PINSEL1 &= ~(0x03U << 28);                                          /*  P0.30 为 LPC2400 USB        */
    PINSEL1 |= (0x01U << 28);                                           /*  ...Device(1) 的 D-          */
     
    PINSEL3 &= ~(0x03U << 28);                                          /*  P1.30 为 LPC2400 USB        */
    PINSEL3 |= (0x02U << 28);                                           /*  Device(1)和(2) 的 VBUS      */
     
    PINSEL3 &= ~(0x03U << 4);                                           /*  P1.18 为 LPC2400 USB        */
    PINSEL3 |= (0x01U << 4);                                            /*  ...Device(1) UP_LED         */

    PINSEL3 &= ~(0x0F << 24);                                           /*  P1.28 为 USB_SCL1, P1.29    */
    PINSEL3 |= (0x05 << 24);                                            /*  ...为 USB_SDA1              */

    PINSEL3 = (PINSEL3 & ~(0x03 << 22)) | (0x01 << 22);                 /*  P1.27 为 USB_INT1           */
                                                                        /*  (for OTG Transceiver)       */
}   

/*********************************************************************************************************
** Function name:       __usbHalInit
** Descriptions:        硬件初始化
** input parameters:    None
** output parameters:   None
** Returned value:      TRUE : 成功  FALSE : 失败
*********************************************************************************************************/
USB_BOOL __usbHalInit (void)
{
    __usbPinInit();
    __otgClkInit();
    return __isp1301Init();
}

/*********************************************************************************************************
  END FILE
*********************************************************************************************************/

⌨️ 快捷键说明

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