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

📄 chap_9.h

📁 采用PDIUSBD12开发的USB总线与429总线数据转换的单片机固件程序
💻 H
字号:

#ifndef __CHAP_9_H__
#define __CHAP_9_H__


#define USB_RECIPIENT            (unsigned char)0x1F
#define USB_RECIPIENT_DEVICE     (unsigned char)0x00
#define USB_RECIPIENT_INTERFACE  (unsigned char)0x01
#define USB_RECIPIENT_ENDPOINT   (unsigned char)0x02

#define USB_REQUEST_TYPE_MASK    (unsigned char)0x60
#define USB_REQUEST_MASK         (unsigned char)0x0F
#define USB_STANDARD_REQUEST     (unsigned char)0x00
#define USB_VENDOR_REQUEST       (unsigned char)0x40

#define SETUP_DMA_REQUEST 	0x0471
#define GET_FIRMWARE_VERSION    0x0472
#define GET_SET_TWAIN_REQUEST   0x0473
#define GET_BUFFER_SIZE		0x0474


//#define USB_CLASS_REQUEST        (unsigned char)0x20


#define USB_FEATURE_ENDPOINT_STALL            0x0000
#define USB_FEATURE_REMOTE_WAKEUP             0x0001

#define DEVICE_ADDRESS_MASK                   0x7F

#define USB_DEVICE_DESCRIPTOR_TYPE            0x01
#define USB_CONFIGURATION_DESCRIPTOR_TYPE     0x02
#define USB_STRING_DESCRIPTOR_TYPE            0x03
#define USB_INTERFACE_DESCRIPTOR_TYPE         0x04
#define USB_ENDPOINT_DESCRIPTOR_TYPE          0x05

#define USB_CLASS_CODE_TEST_CLASS_DEVICE      0xdc
#define USB_CLASS_CODE_TEST_CLASS_DEVICE      0xdc
#define USB_SUBCLASS_CODE_TEST_CLASS_D12      0xA0
#define USB_PROTOCOL_CODE_TEST_CLASS_D12      0xB0

#define USB_ENDPOINT_TYPE_MASK                    0x03

#define USB_ENDPOINT_TYPE_CONTROL                 0x00
#define USB_ENDPOINT_TYPE_ISOCHRONOUS             0x01
#define USB_ENDPOINT_TYPE_BULK                    0x02
#define USB_ENDPOINT_TYPE_INTERRUPT               0x03

void get_status(void);
void clear_feature(void);
void set_feature(void);
void set_address(void);
void get_descriptor(void);
void get_configuration(void);
void set_configuration(void);
void get_interface(void);
void set_interface(void);
void reserved(void);
void read_write_register(void);


typedef unsigned char  UCHAR;
typedef unsigned short USHORT;
typedef unsigned long  ULONG;

//设备描述符
typedef struct _USB_DEVICE_DESCRIPTOR {
    UCHAR bLength;
    UCHAR bDescriptorType;
    USHORT bcdUSB;
    UCHAR bDeviceClass;
    UCHAR bDeviceSubClass;
    UCHAR bDeviceProtocol;
    UCHAR bMaxPacketSize0;
    USHORT idVendor;
    USHORT idProduct;
    USHORT bcdDevice;
    UCHAR iManufacturer;
    UCHAR iProduct;
    UCHAR iSerialNumber;
    UCHAR bNumConfigurations;
} USB_DEVICE_DESCRIPTOR;//, *PUSB_DEVICE_DESCRIPTOR;

//配置描述符
typedef struct _USB_CONFIGURATION_DESCRIPTOR {
    UCHAR bLength;
    UCHAR bDescriptorType;
    USHORT wTotalLength;
    UCHAR bNumInterfaces;
    UCHAR bConfigurationValue;
    UCHAR iConfiguration;
    UCHAR bmAttributes;
    UCHAR MaxPower;
} USB_CONFIGURATION_DESCRIPTOR;//, *PUSB_CONFIGURATION_DESCRIPTOR;

//端点描述符
typedef struct _USB_ENDPOINT_DESCRIPTOR {
    UCHAR bLength;
    UCHAR bDescriptorType;
    UCHAR bEndpointAddress;
    UCHAR bmAttributes;
    USHORT wMaxPacketSize;
    UCHAR bInterval;
} USB_ENDPOINT_DESCRIPTOR;//, *PUSB_ENDPOINT_DESCRIPTOR;

//接口描述符
typedef struct _USB_INTERFACE_DESCRIPTOR {
    UCHAR bLength;
    UCHAR bDescriptorType;
    UCHAR bInterfaceNumber;
    UCHAR bAlternateSetting;
    UCHAR bNumEndpoints;
    UCHAR bInterfaceClass;
    UCHAR bInterfaceSubClass;
    UCHAR bInterfaceProtocol;
    UCHAR iInterface;
} USB_INTERFACE_DESCRIPTOR;//, *PUSB_INTERFACE_DESCRIPTOR;

//字符串描述符
typedef struct _USB_STRING_DESCRIPTOR {
    UCHAR bLength;
    UCHAR bDescriptorType;
    UCHAR bString[1];
} USB_STRING_DESCRIPTOR;//, *PUSB_STRING_DESCRIPTOR;

#endif




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -