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

📄 d12ci.h

📁 基于ARM7的U盘程序开发代码,可以
💻 H
字号:
/****************************************Copyright (c)**************************************************
**                               广州周立功单片机发展有限公司
**                                     研    究    所
**                                        产品一部 
**
**                                 http://www.zlgmcu.com
**
** 文   件   名: D12CI.h
** 最后修改日期: 2004年11月15日
** 描        述: PDIUSBD12 设备端驱动程序 接口控制驱动层头文件
** 版	     本: V5.0
**********************************************************************************************************/

#ifndef __D12CI_H__
#define __D12CI_H__

#include "D12Config.h"

/**  D12 相关定义 ***/
/// dma parameter
#define	D12Dma0		0
#define	D12Dma1		1
#define	D12Dma2		2
#define	D12Dma3		3
#define	D12DmaEn	4
#define	D12DmaWr	8
#define	D12DmaRld	0x10
#define	D12SofIntEn	0x20
#define	D12Ep4dInt	0x40
#define	D12Ep5dInt	0x80
/// mode parameter
#define D12NoLazyClk	2
#define	D12ClkRun	4
#define	D12AllInt	8
#define	D12SoftConnect	0x10
#define	D12EpCfgMask	0x3f
#define	D12EpCfg0	0x00
#define	D12EpCfg1	0x40
#define	D12EpCfg2	0x80
#define	D12EpCfg3	0xc0
#define	D12Pll4M	11
#define	D12Pll6M	7
#define	D12Pll8M	5
#define	D12Pll12M	3
#define	D12Pll24M	1
#define	D12Pll48M	0
/// interrupt bits
#define	D12Ep0Int	1
#define	D12Ep1Int	2
#define	D12Ep2Int	4
#define	D12Ep3Int	8
#define	D12Ep4Int	0x10
#define	D12Ep5Int	0x20
#define	D12BusRst	0x40
#define	D12SuspChg	0x80
#define	D12DmaEot	1
/// endpoint status
#define	D12EpStart	0
#define	D12EpStall	1

#define MyD12DmaCfg                     0x40
#define	MyD12EpCfgOff	D12EpCfg0|D12AllInt|D12ClkRun|D12NoLazyClk	
#define	MyD12EpCfgOn	MyD12EpCfgOff|D12SoftConnect


#define D12_NOLAZYCLOCK			0x02
#define D12_CLOCKRUNNING                0x04
#define D12_INTERRUPTMODE		0x08
#define D12_SOFTCONNECT			0x10
#define D12_ENDP_NONISO			0x00
#define D12_ENDP_ISOOUT			0x40
#define D12_ENDP_ISOIN			0x80
#define D12_ENDP_ISOIO			0xC0

#define D12_CLOCK_12M			0x03
#define D12_CLOCK_4M			0x0b
#define D12_SETTOONE            0x40
#define D12_SOFONLY				0x80

#define D12_DMASINGLE			0x00
#define D12_BURST_4				0x01
#define D12_BURST_8				0x02
#define D12_BURST_16			0x03
#define D12_DMAENABLE           0x04
#define D12_DMA_INTOKEN			0x08
#define D12_AUTOLOAD			0x10
#define D12_NORMALPLUSSOF		0x20
#define D12_ENDP4INTENABLE		0x40
#define D12_ENDP5INTENABLE		0x80

#define D12_INT_ENDP0OUT		0x01
#define D12_INT_ENDP0IN			0x02
#define D12_INT_ENDP1OUT		0x04
#define D12_INT_ENDP1IN			0x08
#define D12_INT_ENDP2OUT		0x10
#define D12_INT_ENDP2IN			0x20
#define D12_INT_BUSRESET		0x40
#define D12_INT_SUSPENDCHANGE	0x80
#define D12_INT_EOT				0x0100

#define D12_SETUPPACKET			0x20

#define D12_BUFFER0FULL			0x20
#define D12_BUFFER1FULL			0x40

#define D12_FULLEMPTY			0x01
#define D12_STALL				0x02

/**  D12CI.c 函数 ***/
#define	D12SelEp(Ep)	D12Cmd = Ep

INT16U D12_ReadChipID(void);
void D12_SetAddressEnable(INT8U bAddress, INT8U bEnable);
void D12_SetEndpointEnable(INT8U bEnable);
void D12_SetMode(INT8U bConfig, INT8U bClkDiv);

INT8U D12_GetDMA(void);
void D12_SetDMA(INT8U bMode);
INT16U D12_ReadInterruptRegister(void);
INT8U  D12_SelectEndpoint(INT8U bEndp);

INT8U D12_ReadLastTransactionStatus(INT8U bEndp);
INT8U D12_ReadEndpointStatus(INT8U bEndp);
void D12_SetEndpointStatus(INT8U bEndp,INT8U bStalled);

void D12_SendResume(void);
//INT16U D12_ReadCurrentFrameNumber(void);
INT8U D12_ReadEndpoint(INT8U endp, INT8U len, INT8U * buf);
void D12_WriteEndpoint(INT8U endp, INT8U len, INT8U * buf);

void D12_AcknowledgeEndpoint(INT8U endp);
//void D12_ClearBuff(INT8U endp);


#define	D12Cmd	*((volatile U8 *)(0x2000001))
#define	D12Dat	*((volatile U8 *)(0x2000000))

#define UsbRdChipId()  D12_ReadChipID()
#define UsbQueryInt()  D12_ReadInterruptRegister()
#define UsbIntProc(i) \
    if(i&D12Ep0Int)\
			ep0_rxdone();\
		if(i&D12Ep1Int)\
			ep0_txdone();\
		if(i&D12Ep2Int)\
			ep1_rxdone();\
		if(i&D12Ep3Int)\
			ep1_txdone();\
		if(i&D12Ep4Int)\
			ep2_rxdone();\
		if(i&D12Ep5Int)\
			ep2_txdone();\
		if(i&D12BusRst)\
			d12_busreset();\
		if(i&D12SuspChg)\
			d12_suspend();

#endif







⌨️ 快捷键说明

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