📄 exp12.h
字号:
//#define alt_u8 unsigned char
//#define UINT unsigned int
#define ENABLE IOWR_ALTERA_AVALON_PIO_IRQ_MASK(D12_INT_BASE,1)
#define DISABLE IOWR_ALTERA_AVALON_PIO_IRQ_MASK(D12_INT_BASE,0)
/********************************************/
#define TRUE 1
#define FALSE 0
/********************************************/
#define USB_Device_Setup_Flag 0x40
#define USB_Interface_Setup_Flag 0x41
#define USB_EndPoint_Setup_Flag 0x42
#define USB_SEND_ZERO_Flag 0x43
#define USB_NULL 0x44s
#define Bulk_Len 64
/*******************************************/
void Delay(alt_u32 m_Delay);
void D12_INT_ISR(void * context,alt_u32 id);
void USB_Write_Command(alt_u8 m_Command); //写命令
void USB_Write_Data(alt_u8 m_Data); //写数据
alt_u8 USB_Read_Data(void); //读数据
void USB_Port_Init(void); //初始化usb端口
void USB_Connect(alt_u8 m_Mode,alt_u8 m_Clk); //USB连接函数
void USB_SetAddr_Enable(alt_u8 m_Addr,alt_u8 m_Enable); //设置USB地址使能
void USB_SetEndPoint_Enable(alt_u8 m_Enable); //设置端点使能
void USB_SetEndPoint_Status(alt_u8 m_EndPoint,alt_u8 m_Stall); //设置端点状态
alt_u8 USB_GetEndPoint_Status(alt_u8 m_EndPoint); //获取端点状态
void USB_SetDMA_Mode(alt_u8 m_Mode); //设置DMA模式
alt_u32 USB_Read_INT_Flag(void); //读中断标志
alt_u8 USB_Read_LastStatus(alt_u8 m_EndPoint); //读最后处理状态寄存器
alt_u8 USB_Read_EndPoint_Buff(alt_u8 m_EndPoint,alt_u8 m_Len,alt_u8 *m_Buff); //读缓冲区
void USB_Write_EndPoint_Buff(alt_u8 m_EndPoint,alt_u8 m_Len,alt_u8 *m_Buff); //写缓冲区
void USB_EndPoint_Setup_Ack(alt_u8 m_EndPoint); //SetUp包应答
void USB_Stall(void); //设备停止
void USB_EndPoint0_IN(void);
void USB_EndPoint0_OUT(void);
void USB_EndPoint1_IN(void);
void USB_EndPoint1_OUT(void);
void USB_EndPoint2_IN(void);
void USB_EndPoint2_OUT(void);
/*******************************************/
alt_u8 DEVICE_DISCRIPTOR[18]={ 0x12, //设备描述符长度
0x01, //设备描述符类型
0x10,0x01, //USB协议版本
0xDC, //测试设备类型
0x00, //设备子类
0x00, //设备协议
0x10, //端点0最大数据包大小16字节
0x71,0x04, //厂商ID
0x88,0x88, //产品ID
0x00,0x01, //设备系列号
0x00, //索引
0x00,
0x00,
0x01 }; //可能配置数
alt_u8 CONFIG_DISCRIPTOR[46]={
/********配置描述符*************/
0x09, //配置描述符长度
0x02, //配置描述符类型
0x2e,0x00, //描述符总长度
0x01, //仅支持一个接口
0x01, //配置值
0x00, //无字符串描述符指针
0xa0, //总线供电,支持远程唤醒
0x64, //最大消耗200mA电流
/********接口描述符*************/
0x09, //接口描述符长度
0x04, //接口描述符类型
0x00, //只有一个接口
0x00, //可选配置只有一个
0x04, //端点数目(除端点0外)
0xdc, //测试设备类型
0xa0, //子类代码
0xb0, //协议代码
0x00, //字符串描述符索引
/*********端点描述符************/
/*********端点1:IN*************/
0x07, //端点描述符长度
0x05, //端点描述符类型
0x81, //端点1:IN
0x03, //中断传输
0x10,0x00, //最大数据包大小
0x0a, //传输间隔时间
/*********端点1:OUT*************/
0x07, //端点描述符长度
0x05, //端点描述符类型
0x01, //端点1:OUT
0x03, //中断传输
0x10,0x00, //最大数据包大小
0x0a, //传输间隔时间
/*********端点2:IN*************/
0x07, //端点描述符长度
0x05, //端点描述符类型
0x82, //端点1:IN
0x02, //批量传输
0x40,0x00, //最大数据包大小
0x01, //传输间隔时间
/*********端点2:OUT*************/
0x07, //端点描述符长度
0x05, //端点描述符类型
0x02, //端点2:OUT
0x02, //批量传输
0x40,0x00, //最大数据包大小
0x01 }; //传输间隔时间
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -