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