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

📄 usbci.h

📁 LPC2148 USB固件程序,是学习固件不可多的的范例.
💻 H
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			USBCI.h
** Last modified Date:	2005-8-6
** Last Version:		V1.0
** Descriptions:		LPC214x USB 接口命令层头文件
**						LPC214x USB: The Interface command layer header files
**------------------------------------------------------------------------------------------------------
** Created by:			郑明远 		MingYuan Zheng
** Created date:		2005-8-6
** Version:				V1.0
** Descriptions:		初始版本	The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:			
** Modified date:
** Version:				
** Descriptions:
**
**------------------------------------------------------------------------------------------------------
** Modified by: 
** Modified date:
** Version:	
** Descriptions: 
**
********************************************************************************************************/

#ifndef __USBCI_H__
#define __USBCI_H__


/** the Mask of USB Device Interrupt Register */
#define FRAME				   		0x00000001 
#define EP_FAST				   		0x00000002
#define EP_SLOW				    	0x00000004
#define DEV_STAT			   		0x00000008
#define CCEMPTY				   	 	0x00000010
#define CDFULL				   		0x00000020
#define RxENDPKT			   		0x00000040
#define TxENDPKT			   		0x00000080
#define EP_RLZED			    	0x00000100
#define ERR_INT				    	0x00000200

/* Interrupt Bit Definitions for EPs and Device Status Interrupt	*/
#define FRAMEINTERRUPT			  	0x00000001 
#define FASTINTERRUPT			 	0x00000002 
#define SLOWINTERRUPT			  	0x00000004 
#define DevStatusInterrupt		  	0x00000008 
#define EP_RLZEDINT				  	0x00000100

/** the Mask of USB Device Interrupt Priority Register */
#define FRAME_PRIO				  	0x01 
#define EP_FAST_PRIO			 	0x02


/* Interrupt Bit Definition for DMA Interrupt	*/
#define USB_DMA_INT				  	0x00000040

/** USB DMA interrupt */
#define USBDMA_EOT_INT				0x01
#define USBDMA_NDD_INT				0x02
#define USBDMA_ERR_INT				0x04

#define EP0MaxPacketSize		  	64 
#define EP1MaxPacketSize		  	64 
#define EP2MaxPacketSize		  	64 
#define EP3MaxPacketSize		  	1023 
#define EP4MaxPacketSize		  	64 
#define EP5MaxPacketSize		  	64 
#define EP6MaxPacketSize		  	1023 
#define EP7MaxPacketSize		  	64 
#define EP8MaxPacketSize		  	64 
#define EP9MaxPacketSize		  	1023 
#define EP10MaxPacketSize		  	64 
#define EP11MaxPacketSize		  	64 
#define EP12MaxPacketSize		  	1023 
#define EP13MaxPacketSize		  	64 
#define EP14MaxPacketSize		  	64 
#define EP15MaxPacketSize		  	64 


/******************************************************

		the Register Mask of LPC214x USB 

******************************************************/

// USB Interrupt Status Register Mask
#define USBINT_STATUS_BLOCKINTS		0x80000000
#define USBINT_STATUS_DMA			0x00000004
#define USBINT_STATUS_HP			0x00000002
#define USBINT_STATUS_LP			0x00000001

// Device Interrupt Status Register Mask
#define DEVINT_STATUS_ERRINT		0x00000200
#define DEVINT_STATUS_EPRLZED		0x00000100
#define DEVINT_STATUS_CDFULL		0x00000020
#define DEVINT_STATUS_DDEMPTY		0x00000010
#define DEVINT_STATUS_DEVSTAT		0x00000008
#define DEVINT_STATUS_EP_FAST		0x00000002
#define DEVINT_STATUS_EP_SLOW		0x00000004

// all endpoint register Mask
#define USB_ENDP00					0x00000001
#define USB_ENDP01					0x00000002
#define USB_ENDP02					0x00000004
#define USB_ENDP03					0x00000008
#define USB_ENDP04					0x00000010
#define USB_ENDP05					0x00000020
#define USB_ENDP06					0x00000040
#define USB_ENDP07					0x00000080
#define USB_ENDP08					0x00000100
#define USB_ENDP09					0x00000200
#define USB_ENDP10					0x00000400
#define USB_ENDP11					0x00000800






// Receive Packet length Register Mask 
#define REC_PACKETSIZE_PKTRDY		0x00000800
#define REC_PACKETSIZE_DV			0x00000400
#define REC_PACKETSIZE_PKT_LNGTH	0x000003FF

// select endpoint mask
#define USB_STALL					0x02
#define USB_SETUPPACKET				0x04


/*********************************************************

	Related command of LPC214x USB

**********************************************************/
/* Device Command */

#define USBCMD_SET_ADDRESS			0x00D00500
#define USBDAT_SET_ADDRESS			0x00000100

#define USBCMD_CONFIG_DEV			0x00D80500
#define USBDAT_CONFIG_DEV			0x00000100

#define USBCMD_SET_MODE				0x00F30500
#define USBDAT_SET_MODE				0x00000100

#define USBCMD_RDCURRENT_FRAME  	0x00F50500
#define USBDAT_RDCURRENT_FRAME		0x00F50200

#define USBCMD_RDTEST_REG			0x00FD0500
#define USBDAT_RDTEST_REG			0x00FD0200

#define USBCMD_READ_TESTREG			0x00FD0500
#define USBDAT_READ_TESTREG			0x00FD0200

#define USBCMD_SET_DEVSTATUS		0x00FE0500
#define USBDAT_SET_DEVSTATUS		0x00000100

#define USBCMD_GET_DEVSTATUS		0x00FE0500
#define USBDAT_GET_DEVSTATUS		0x00FE0200

#define USBCMD_GET_ERRCODE			0x00FF0500
#define USBDAT_GET_ERRCODE			0x00FF0200

#define USBCMD_READ_ERRSTATUS		0x00FB0500
#define USBDAT_READ_ERRSTATUS		0x00FB0200

/* select endpoint */
#define USBCMD_SEL_ENDP				0x00000500
#define USBDAT_SEL_ENDP				0x00000200

/* select endpoint / clear interrupt */
#define USBCMD_SEL_CLRINT_ENDP		0x00000500
#define USBDAT_SEL_CLRINT_ENDP		0x00000200		
		
/* set endpoint status */
#define USBCMD_SET_ENDP_STATUS		0x00000500
#define USBDAT_SET_ENDP_STATUS		0x00000100		

/* cleare buffer */
#define USBCMD_CLEAR_BUFFER			0x00F20500
#define USBDAT_CLEAR_BUFFER			0x00F20200	

/* validate buffer */
#define USBCMD_VALID_BUFFER			0x00FA0500


/*********************************************************

	USBCI.c  相关函数

**********************************************************/
extern void USB_ConfigMaxPaketSize(INT8U endp, INT32U packetsize);

extern INT16U USB_ReadTestRegister(void);
extern void USB_SetAddressEnable(INT8U bAddress, INT8U bEnable);
extern void USB_SetEndpointEnable(INT8U bEnble);
extern void USB_SetMode(INT8U value);
extern void USB_SetDevStatus(INT8U value);
extern INT8U USB_GetDevStatus(void);
extern INT8U USB_SelectEndpoint(INT8U endp);
extern INT8U USB_SelectClrIntEndpoint(INT8U endp);
extern void USB_SetEndpointStatus(INT8U endp, INT8U bStalled);
extern INT8U USB_ClearBuffer(void);
extern void USB_ValidBuffer(void);

extern INT8U USB_ReadEndpoint(INT8U endp, INT8U len, INT8U *buf);
extern INT8U USB_WriteEndpoint(INT8U endp, INT8U len, INT8U *buf);

extern void reconnect_USB(void);

#endif







⌨️ 快捷键说明

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