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