- 打卡等级:初来乍到
- 打卡总天数:1
- 最近打卡:2025-05-07 10:57:57
注册会员
- 积分
- 53
|
这几天没事干,就用AI的单片机里面的CDC串口,改了一个CH340串口,现在的问题是有些电脑能识别并安装CH340驱动,并正常使用。有些电脑设备管理器显示CH340串口感叹号,有的电脑读不到VID PID……郁闷中,不知道哪里出来问题,把程序发上来,大家帮忙看看
char code DEVICEDESC[18] =
{
0x12, /* bLength */
0x01, /* bDescriptorType */
0x10,0x01, /* bcdUSB = 1.10 */
0xff, /* bDeviceClass: CDC */
0x00, /* bDeviceSubClass */
0x00, /* bDeviceProtocol */
0x40, /* bMaxPacketSize0 */
0x86,0x1a, /* idVendor = 0x1A86 */
0x23,0x75, /* idProduct = 0x7523 */
0x64,0x02, /* bcdDevice = 2.00 */
0x01, /* 制造商描述符的索引 */
0x02, /* 产品描述符的索引 */
0x03, /* 设备序列号的描述符的索引 */
0x01 /* 配置描述符的数量 */
};
char code CONFIGDESC[39] =
{
/* 配置描述符 */
0x09, /* bLength: 配置描述符的长度 */
0X02, /* bDescriptorType: Configuration */
0x27, /* wTotalLength: 所有返回的字节数 */
0x00,
0x01, /* bNumInterfaces: 接口的数量 */
0x01, /* bConfigurationValue: 配置值 */
0x00, /* iConfiguration: 描述该配置的字符串描述符的索引 */
0x80, /* bmAttributes: 自供电 */
0x30, /* MaxPower: 0 mA */
/* 接口描述符 */
0x09, /* bLength: 接口描述符的长度 */
0x04, /* bDescriptorType: Interface */
/* 接口描述符类型 */
0x00, /* bInterfaceNumber: 接口的编号 */
0x00, /* bAlternateSetting: 替代设置 */
0x03, /* bNumEndpoints: 使用的端点数 */
0xff, /* bInterfaceClass: 通信接口类 */
0x01, /* bInterfaceSubClass: 抽象控制模型 */
0x02, /* bInterfaceProtocol: 通用 AT 命令 */
0x00, /* iInterface: 描述该接口的字符串描述符的索引 */
/* 端点2输入描述符 */
0x07, /* bLength: 端点描述符的长度 */
0X05, /* bDescriptorType: Endpoint */
0x82, /* bEndpointAddress: (IN2) */
0x02, /* bmAttributes: 传输类型为批量传输 */
0x40, /* wMaxPacketSize: 最大数据包大小 */
0x00,
0x00, /* bInterval: 传输间隔 */
/* 端点2输出描述符 */
0x07, /* bLength: 端点描述符的长度 */
0X05, /* bDescriptorType: Endpoint */
0x02, /* bEndpointAddress: (OUT2) */
0x02, /* bmAttributes: 传输类型为批量传输 */
0x40, /* wMaxPacketSize: 最大数据包大小 */
0x00,
0x00, /* bInterval: 传输间隔 */
/* 端点1输入描述符 */
0x07, /* bLength: 端点描述符的长度 */
0X05, /* bDescriptorType: Endpoint */
0x81, /* bEndpointAddress: (IN1) */
0x03, /* bmAttributes: 传输类型为中断传输 */
0x08, /* wMaxPacketSize: 最大数据包大小 */
0x00,
0x01, /* bInterval: 传输间隔 */
};
char code LANGIDDESC[4] =
{
0x04,0x03,
0x09,0x04,
};
char code MANUFACTDESC[14] =
{
0x0B,0x03,
'w',0,
'c',0,
'h',0,
'.',0,
'c',0,
'n',0,
};
char code PRODUCTDESC[30] =
{
0x18,0x03,
'U',0,
'S',0,
'B',0,
' ',0,
'S',0,
'e',0,
'r',0,
'i',0,
'a',0,
'l',0,
};
char code PACKET0[2] =
{
0, 0,
};
char code PACKET1[2] =
{
1, 0,
};
case VENDOR_REQUEST: //处理来自厂商的请求
usb_req_vendor();
//***********************************************************************
// 这部分是厂商信息
//***********************************************************************
switch(Setup.bRequest)
{
case 0x5F:
Ep0State.pData = buf1;
Ep0State.wSize = sizeof(buf1);
break;
case 0x95:
if((Setup.wValueH==0x25)&&(Setup.wValueL==0x18)) // wValue == 0x2518)
{
Ep0State.pData = buf2;
Ep0State.wSize = sizeof(buf2);
}
else if((Setup.wValueH==0x07)&&(Setup.wValueL==0x06)) ///wValue == 0x0706
{
Ep0State.pData = buf0;
Ep0State.wSize = sizeof(buf0);
}
break;
case 0xA4:
{
Ep0State.pData = buf0;
Ep0State.wSize = sizeof(buf0);
}
break;
default:
Ep0State.pData = zero;
Ep0State.wSize = sizeof(zero);
break;
}
//***********************************************************************
break;
有爱心的大神,有空帮忙看看,下面是程序附件
|
|