К ста.еще вопрос.. Запустил я usb audio, винда все увидела и запись работает. но 1 секунду пишет секунд 7..почему так?
Вот дескрипторы:
Код
const struct usbDevDesc UsbDevDesc={
sizeof(struct usbDevDesc),
USB_DESCRIPTOR_DEVICE,
0x0200, // USB 2.0
0xEF, // bDeviceClass
0x02, // bDeviceSubclass
0x01, // bDeviceProtocol
USB_EP0_MAXSIZE,
USB_VENDOR_BRAG,
USB_BRAG_PRODUCT_DD,
0x0001, // Serial
0x01, // iManufacturer
0x02, // iProduct
0x00, // iSerialNumber
0x01 //bNumConfigurations
};
const struct usbAuCfgDesc UsbCfgDesc={
{
sizeof(struct usbStdCfgDesc),
USB_DESCRIPTOR_CONFIG,
sizeof(struct usbAuCfgDesc),
2, //interfaces
1, //bConfigurationValue
0, //iConfiguration
0xC0, //SelfPowered
0 //bMaxPower
},
/* Audio Control Interface */
{
sizeof(struct usbStdIfDesc),
USB_DESCRIPTOR_IFACE,
0, //bInterfaceNumber
0, //bAlternateSetting
0, //bNumEndpoints
0x01, //AUDIO
0x01, //AUDIOCONTROL
0,
0 //iInterface
},
{
sizeof(struct usbCsAcDesc),
0x24, //CS_INTERFACE
0x01, //HEADER
0x0100, //bcdADC
sizeof(struct usbCsAcDesc)+sizeof(struct usbCsItDesc)+
sizeof(struct usbCsOtDesc), //wTotalLength
USB_AUDIO_IFS,
1 //baInterfaceNr
},
{
sizeof(struct usbCsItDesc),
0x24, //CS_INTERFACE
0x02, //INPUT_TERMINAL
0x01, //bTerminalID
0x0200, //Input Undefined term type
0x00, //bAssocTerminal
2, //bNrChannels
0x00000003, //wChannelConfig
0, //iChannelNames
0 //iTerminal
},
{
sizeof(struct usbCsOtDesc),
0x24, //CS_INTERFACE
0x03, //OUTPUT_TERMINAL
0x02, //bTerminalID
0x0101, //Usb Streaming
0x00, //bAssocTerminal
0x01, //bSourceID (from input terminal)
0 //iTerminal
},
/* Zero Bandwidth (alt setting 0) */
{
sizeof(struct usbStdIfDesc),
USB_DESCRIPTOR_IFACE,
1, //bInterfaceNumber
0, //bAlternateSetting
0, //bNumEndpoints
0x01, //AUDIO
0x02, //AUDIOSTREAMING
0,
0 //iInterface
},
/* Audio Streaming descriptor (alt setting 1) */
{
sizeof(struct usbStdIfDesc),
USB_DESCRIPTOR_IFACE,
1, //bInterfaceNumber
1, //bAlternateSetting
1, //bNumEndpoints
0x01, //AUDIO
0x02, //AUDIOSTREAMING
0,
0 //iInterface
},
{
sizeof(struct usbAuCsAsDesc),
0x24, //CS_INTERFACE
0x01, //AS_GENERAL
0x02, //bTerminalLink (Out Terminal)
0x01, //bDelay
0x0001 //wFormatTag (PCM format)
},
{
sizeof(struct usbAuCsFmt1Desc),
0x24, //CS_INTERFACE
0x02, //FORMAT_TYPE
0x01, //FORMAT_TYPE1
0x02, //bNrChannels
0x03, //3 bytes/frame
24, //24 bits/sample
0x01, //bSamFreqType - One frequency supported
{B3VAL(96000)} //tSamFreq
},
/* IN ISO Endpoint 1 */
{
{sizeof(struct usbAuStdAsIsoEpDesc),
USB_DESCRIPTOR_ENDPOINT,
0x81, //IN endpoint 1
0x01, //Isochronous, No synchronous, Data endpoint
64, //wMaxPacketSize
9}, //packets per frame
0,0 //bRefresh, bSynchAddress
},
{
sizeof(struct usbAuCsAsIsoEpDesc),
0x25, //CS_ENDPOINT
0x01, //EP_GENERAL
0x00, //bmAttributes
0x00, //bLockDelayUnits
0x0000 //wLockDelay
}
};
Пишу в ендпоинт так:
1.Загоняю первие 64байта буффера,ставлю TXPKTRDY.Загоняю следующих 64байта.
2. Жду прерывания
3. ставлю TXPKTRDY, загоняю 64 байта
повторяю 2,3
дание идут,но медленно...
Контроллер AT91SAM7S64