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

📄 exp12.h

📁 本程序功能是在FPGA上nios处理器的usb接口程序。
💻 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 + -