📄 d12interface.h
字号:
/*-----------------------------------------------------------------------
Copyright (C) 2006 Beijing Jiaotong University, Computer Science
Creator: xiaoqiang
File: D12Interface.h
Description:
PDIUSBD12 chip command interface
History:
2006-7-24 xiaoqiang created
------------------------------------------------------------------------*/
#ifndef _D12INTERFACE_H_
#define _D12INTERFACE_H_
#include <c8051f120.h>
#include <typedef.h>
// pins of chip PDIUSBD12
//d12 interrupt pin
sbit D12_INT = P1 ^ 4;
sbit D12_A0 = P5 ^ 4;
sbit D12_WR = P5 ^ 5;
sbit D12_RD = P5 ^ 6;
sbit D12_CS = P5 ^ 7;
sbit D12_SUSP = P3 ^ 3;
//wr, rd, cs signal
#define D12_WR_ENABLE 0
#define D12_WR_DISABLE 1
#define D12_RD_ENABLE 0
#define D12_RD_DISABLE 1
#define D12_CS_ENABLE 0
#define D12_CS_DISABLE 1
#define D12_SUSP_SLEEP 1
#define D12_SUSP_WAKEUP 0
/* FOLLOW DEFINE D12 COMMAND */
#define D12_EPCTLOUT 0
#define D12_EPCTLIN 1
#define D12_EP1OUT 2
#define D12_EP1IN 3
#define D12_EP2OUT 4
#define D12_EP2IN 5
//INIT COMMAND
#define D12CMD_EN_ADDRESS 0XD0 //write 1B data
#define D12CMD_EN_EP 0XD8 //write 1B data
#define D12CMD_SET_MODE 0XF3 //write 2B data
#define D12CMD_SET_DMA 0XFB //rw 1B data
//data command
#define D12CMD_READ_INTREG 0XF4 //READ 2B DATA
#define D12CMD_SEL_EPCTLOUT 0X00 //READ 1B (OPTION)
//#define D12CMD_SEL_EPCTLIN 0X01 //READ 1B (OPTION)
//#define D12CMD_SEL_EP1OUT 0X02 //READ 1B (OPTION)
//#define D12CMD_SEL_EP1IN 0X03 //READ 1B (OPTION)
//#define D12CMD_SEL_EP2OUT 0X04 //READ 1B (OPTION)
//#define D12CMD_SEL_EP2IN 0X05 //READ 1B (OPTION)
#define D12CMD_GETLASTSTATUS_EPCTLOUT 0X40 //READ 1B
//#define D12CMD_GETLASTSTATUS_EPCTLIN 0X41 //READ 1B
//#define D12CMD_GETLASTSTATUS_EP1OUT 0X42 //READ 1B
//#define D12CMD_GETLASTSTATUS_EP1IN 0X43
//#define D12CMD_GETLASTSTATUS_EP2OUT 0X44
//#define D12CMD_GETLASTSTATUS_EP2IN 0X45
#define D12CMD_READ_BUFFER 0XF0 //READ N BYTES
#define D12CMD_WRITE_BUFFER 0XF0 //WRITE N BYTES
#define D12CMD_SETSTATUS_EPCTLOUT 0X40 //WRITE 1B
//#define D12CMD_SETSTATUS_EPCTLIN 0X41 //
//#define D12CMD_SETSTATUS_EP1OUT 0X42
//#define D12CMD_SETSTATUS_EP1IN 0X43
//#define D12CMD_SETSTATUS_EP2OUT 0X44
//#define D12CMD_SETSTATUS_EP2IN 0X45
#define D12CMD_GETEPSTATUS_EPCTLOUT 0X80 //READ 1B
//EPCTLIN 0X81, EP1OUT 0X82, EP1IN 0X83, EP2OUT OX84, EP2IN OX85
#define D12CMD_SET_ACK 0XF1
#define D12CMD_CLEAR_BUFFER 0XF2
#define D12CMD_EN_BUFFER 0XFA
//NORMAL COMMAND
#define D12CMD_SEND_RESUME 0XF6
#define D12CMD_READ_FRAME 0XF5 //READ 1OR2 BYTE
/////////////////////////////////////////////////////////////////////
#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_24M 0x01 //时钟分频系数
#define D12_CLOCK_12M 0x03
#define D12_CLOCK_4M 0x0b
#define D12_SETTOONE 0x40
#define D12_SOFONLY 0x80
#define D12_DMASINGLE 0x00 //设置DMA
#define D12_BURST_4 0x01
#define D12_BURST_8 0x02
#define D12_BURST_16 0x03
#define D12_DMAENABLE 0x04
#define D12_DMA_INTOKEN 0x08 //表示从外部共享存储器到d12,DMA写操作
#define D12_AUTOLOAD 0x10
#define D12_NORMALPLUSSOF 0x20
#define D12_ENDP4INTENABLE 0x40
#define D12_ENDP5INTENABLE 0x80
//#define D12_Connect_USB() D12_SetMode(0x12, 0xb)
//#define D12_Disconnect_USB() D12_SetMode(0x2, 0xb)
#define EP0_PACKET_SIZE 16 //d12 ep0 have 16B fifo buffer
#define EP1_PACKET_SIZE 16
#define EP2_PACKET_SIZE 64
#define D12_STALL 0x2 //ep is stall
void Init_D12();
u16 D12_GetStatus();
/* init commmand function */
void D12_SetAddressEnable(u8 bAddress, bool bEnable);
void D12_SetEndpointEnable(bool bEnable);
void D12_SetMode(u8 bConfig, u8 bClkDiv);
void D12_SetDMA(u8 bMode);
/* data control command function */
u16 D12_ReadInterruptRegister(void);
u8 D12_SelectEndpoint(u8 bEndp);
u8 D12_ReadEndpointStatus(u8 bEndp);
u8 D12_ReadLastTransactionStatus(u8 bEndp);
void D12_SetEndpointStatus(u8 bEndp, u8 bStalled);
u8 D12_ReadEndpointBuffer(u8 endp, u8 * buf, u8 len);
u8 D12_WriteEndpointBuffer(u8 endp, u8 * buf, u8 len) reentrant;
void D12_AcknowledgeEndpoint(u8 endp);
/* normal command function */
void D12_SendResume(void);
u16 D12_ReadCurrentFrameNumber(void);
u16 D12_ReadChipID(void);
void D12_Disconnect(void);
void D12_Connect(void);
void D12_Reconnect(void);
extern u8 Ep1Buf[];
extern u8 xdata Ep2Buf[];
//extern u8 xdata Ep2Buf2[];
extern u8 Ep2OutLen;
#endif //_D12INTERFACE_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -