请问在CH549上做组合设备要不要写IAD呢

看了官网的例子,键鼠组合的设备是没有写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上面怎么实现分包发送呢


我们例程里面应该做了分包处理,如图所示:

image.png


我按这个写上去   发现只能收到前面64个字节的配置描述符


你好 你可以加打印监控一下这些长度变量 看一下在哪里出了问题


只有登录才能回复,可以选择微信账号登录