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

📄 usbhosthal.c

📁 smartARM2400 USB host例程
💻 C
字号:
/*****************************Copyright(c)****************************************************************
**                    Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                           http://www.embedtools.com
**
**------File Info-----------------------------------------------------------------------------------------
** File Name:            USBHAL.c
** Latest modified Date: 2007-07-08        
** Latest Version:       V1.0    
** Description:          USBHAL.c, 硬件抽象层,设置 USB 设备运行的硬件条件
**                       
**--------------------------------------------------------------------------------------------------------
** Created By:           吴隆穗
** Created date:         2007-10-20    
** Version:              V1.0    
** Descriptions:         初始版本
**
**--------------------------------------------------------------------------------------------------------
** Modified by:          
** Modified date:        
** Version:              
** Description:          
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
*********************************************************************************************************/
#include    "USBHostConfig.h"

/*********************************************************************************************************
** Function name:       __usbInitHardware
** Descriptions:        初始化 USB 设备控制器硬件
** input parameters:    None
** output parameters:   None
** Returned value:      None
*********************************************************************************************************/
void __usbInitHardware (void)
{
    USB_INT32U  uiClkCtrl = (__USB_HOST_CLK_EN | __USB_I2C_CLK_EN | __USB_OTG_CLK_EN | \
                             __USB_DEV_CLK_EN | __USB_AHB_CLK_EN);
      
    PCONP |= 0x80000000;                                                /*  给USB控制器提供电源         */
    OTGClkCtrl = uiClkCtrl;                                             /*  配置USB时钟控制寄存器       */
    while ((OTGClkSt & (uiClkCtrl)) != (uiClkCtrl));       

#if USB_HOST_PORT == 2
    
    /*
     *  OTGStCtrl 最低两位PORT_FUNC[1,0]含义:
     *  PORT_FUNC[1,0]  = 0x00      U1 = device (OTG), U2 = host
     *  PORT_FUNC[1,0]  = 0x01      U1 = host (OTG), U2 = host
     *  PORT_FUNC[1,0]  = 0x02      reserved
     *  PORT_FUNC[1,0]  = 0x03      U1 = host, U2 = device
     */
    OTGStCtrl = 0x00;                                                   /*  PORT U2为HOST               */
                                                                        /*  ...U1为DEVICE(OTG)          */
    PINSEL0 &= ~(0x03 << 26);                                           /*  P0.13 -- LPC2400 USB HOST   */
    PINSEL0 |= (0x01 << 26);                                            /*  ... U2UP_LED                */
    
    PINSEL0 &= ~(0x03 << 28);                                           /*  P0.14 -- LPC2400 USB HOST   */
    PINSEL0 |= (0x01 << 28);                                            /*  ... /U2HSTEN2               */
       	
 	PINSEL1 &= ~(0x03U << 30);                                          /*  P0.31 -- USB2 D+, USB2 D-   */
    PINSEL1 |= (0x01 << 30);                                            /*  ...不需要设置               */
  	
    PINSEL0 &= ~(0x03 << 24);                                           /*  P0.13 -- LPC2400 USB HOST   */
    PINSEL0 |= (0x01 << 24);                                            /*  .../USB_PPWRD2              */
    
  	PINSEL3 &= ~(0x03U << 28); 	                                        /*  P1.30 -- LPC2400 USB HOST   */
 	PINSEL3 |= (0x01U << 28);	                                        /*  .../USB_PWRD2               */
 	
 	PINSEL3 &= ~(0x03U << 30);                                          /*  P1.31 -- LPC2400 USB HOST   */
 	PINSEL3 |= (0x01U << 30);	                                        /*  .../USB_OVRCR2              */

#else
    
    OTGStCtrl = 0x01;                                                   /*  U1 HOST, U2 HOST            */

    PINSEL1 = (PINSEL1 & ~(0x0f << 26)) | (0x05 << 26);                 /*  P0.29:USB_D+1, P0.30:USB_D-1*/
    
    PINSEL3 &= ~(0x0F << 24);                                           /*  P1.28 为 USB_SCL1, P1.29    */
    PINSEL3 |= (0x05 << 24);                                            /*  ...为 USB_SDA1              */
    
    __isp1301EnablePswOE();
    __isp1301Write(__OTG_CTL1_CLR, __OTG_CTL1_DP_PULLUP | __OTG_CTL1_DM_PULLUP);
    __isp1301Write(__OTG_CTL1_SET, __OTG_CTL1_DM_PULLDOWN | __OTG_CTL1_DP_PULLDOWN);
    
#endif
    
}

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

⌨️ 快捷键说明

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