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

📄 d12interface.h

📁 C8051FTest.rar 是C8051F系列处理器的基本测试程序
💻 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 + -