看了官网的例子,键鼠组合的设备是没有写IAD的,那我做HID和AUDIO的组合设备可以参考官网的例子吗
可以下载CH563EVT,参考里面的USB例程模拟AUDIO设备。
我是在CH549的CompositiveHID的例程上 把配置描述符修改为AUDIO设备的描述符 这样可行嘛 我修改为AUDIO的配置描述符了之后是提示配置描述符请求失败
中断服务函数没有修改 我只需要枚举设备成功
看一下配置描述符长度有没有对应修改,还有接口个数,每一个接口描述符对应的接口索引正不正确。另外你还需要处理AUDIO设备的类命令描述符。
确认描述符没啥问题了 是不是中断服务函数少写了什么 可以发给你看一下嘛
这是我写的AUDIO配置描述符
UINT8 CfgDesc[ ] =
{
//Configuration Descriptor
0x09,//Length
0x02,//Configruation Descriptor Type
0x6D,0x00,//Total Length
0x02,//Number of Interfaces
0x01,//Configuration Value
0x00,//Configuration String Index
0xA0,//Attributes
0x25,//MaxPower
//Standard AudioControl Interface descriptor
0x09,//Length
0x04,//Interface Descriptor Type
0x00,//Interface Number Index
0x00,//Alternate Setting Number
0x00,//Number of Endpoints
0x01,//Interface Class
0x01,//Interface SubClass
0x00,//Interface Protocol
0x00,//Interface String
//Class-Specific AC Interface descriptor
0x09,//Length
0x24,//Audio Descriptor Type(Descriptor Type)
0x01,//Audio Control Header(Descriptor SubType)
0x00,0x01,//bcd audio device class
0x27,0x00,//Total Length
0x01,//In Collection:2 AudioStreaming Interface
0x01,//InterfaceNr 1 id:1 AS interface 1 belongs to this AC interface
//Input terminal Descriptor
0x0C,//length
0x24,//Descriptor Type
0x02,//Descriptor Subtype
0x04,//terminal ID
0x01,0x02,//terminalType:USB Microphone
0x00,//output terminal id which is associated with this input terminal
0x01,//NrChannels
0x01,0x00,//ChannelConfig:Left Front,Right Front
0x00,//ChannelName String
0x00,//Terminal String
//Feature Unit Descriptor
0x09,//Length
0x24,//Descriptor Type
0x06,//Descriptor Subtype
0x05,//UnitID
0x04,//Source ID
0x01,//ControlSize
0x03,0x00,//Controls(0)
0x00,//FU string
//Output terminal Descriptor
0x09,//Length
0x24,//Descriptor Type
0x03,//Descriptor Subtype
0x06,//terminal ID
0x01,0x01,//terminal type
0x00,//AssocTerminal
0x05,//source ID
0x00,//terminal string
//Standard AudioStreaming Interface descriptor
0x09,//Length
0x04,//DescriptorType
0x01,//InterfaceNumber
0x00,//AlternateSetting
0x00,//Endpoints Number
0x01,//Interface Class
0x02,//Interface Subclass
0x00,//Interface Protocol
0x00,//Interface String
//Alternate
0x09,
0x04,
0x01,
0x01,
0x01,
0x01,
0x02,
0x00,
0x00,
//class-specific AS interface descriptor
0x07,//Length
0x24,//Descriptor Type
0x01,//Descriptor Subtype
0x06,//Terminal Link
0x01,//Delay
0x01,0x00,//FormatTag:PCM 0x0001
//class-specific AS format type descriptor
0x0B,//Length
0x24,//Descriptor Type
0x02,//Descriptor Subtype
0x01,//FormatType
0x01,//Number of Channels
0x02,//SubFrameSize
0x10,//BitResolution:16bits per sample
0x01,//SampleFreqType:One sampling frequency
0x80,0x3E,0x00,//16K
//Standard Endpoint
0x09,//Length
0x05,//Descriptor Type
0x82,//EndpointAddress:Input EP2
0x0d,//Attributes
0x40,0x00,//MaxPacketSize
0x01,//Interval
0x00,
0x00,
//Audio Endpoint Descriptor
0x07,//Length
0x25,//Descriptor Type
0x01,//Descriptor Subtype
0x01,//Attributes
0x00,//LockDelayUnits
0x00,0x00,//LockDelay
};
CH563里面是有现成的模拟AUDIO设备的例程的,如果描述符没有什么问题中断服务函数你参考那个例程移植就可以了。
找到问题所在了 是因为枚举AUDIO配置描述符的时候描述符超过了64bytes CH549上面怎么实现分包发送呢
我们例程里面应该做了分包处理,如图所示:
我按这个写上去 发现只能收到前面64个字节的配置描述符
你好 你可以加打印监控一下这些长度变量 看一下在哪里出了问题