📄 usbhosthal.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 + -