Hello,
What could be causing failed packets
Connection Status Device connected Current Configuration 1 Speed Full Device Address 1 Number Of Open Pipes 0 Device Descriptor NXP LPC17xx Speaker Offset Field Size Value Description 0 bLength 1 12h 1 bDescriptorType 1 01h Device 2 bcdUSB 2 0200h USB Spec 2.0 4 bDeviceClass 1 00h Class info in Ifc Descriptors 5 bDeviceSubClass 1 00h 6 bDeviceProtocol 1 00h 7 bMaxPacketSize0 1 40h 64 bytes 8 idVendor 2 1FC7h 10 idProduct 2 4005h 12 bcdDevice 2 0100h 1.00 14 iManufacturer 1 01h "NXP Semicond " 15 iProduct 1 02h "NXP LPC17xx Speaker " 16 iSerialNumber 1 03h "DEMO00000000" 17 bNumConfigurations 1 01h Configuration Descriptor 1 Bus Powered, 100 mA Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 02h Configuration 2 wTotalLength 2 0076h 4 bNumInterfaces 1 02h 5 bConfigurationValue 1 01h 6 iConfiguration 1 00h 7 bmAttributes 1 80h Bus Powered 4..0: Reserved ...00000 5: Remote Wakeup ..0..... No 6: Self Powered .0...... No, Bus Powered 7: Reserved (set to one) (bus-powered for 1.0) 1....... 8 bMaxPower 1 32h 100 mA Interface Descriptor 0/0 Audio, 0 Endpoints Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 04h Interface 2 bInterfaceNumber 1 00h 3 bAlternateSetting 1 00h 4 bNumEndpoints 1 00h 5 bInterfaceClass 1 01h Audio 6 bInterfaceSubClass 1 01h Audio Control 7 bInterfaceProtocol 1 00h 8 iInterface 1 00h Audio Control Interface Header Descriptor Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 24h Audio Control Interface Header 2 7 01 00 01 27 00 01 01 Audio Control Input Terminal Descriptor Offset Field Size Value Description 0 bLength 1 0Ch 1 bDescriptorType 1 24h Audio Control Input Terminal 2 10 02 01 01 01 00 01 00 00 00 00 Audio Control Feature Unit Descriptor Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 24h Audio Control Feature Unit 2 7 06 02 01 01 03 00 00 Audio Control Output Terminal Descriptor Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 24h Audio Control Output Terminal 2 7 03 03 01 03 00 02 00 Interface Descriptor 1/0 Audio, 0 Endpoints Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 04h Interface 2 bInterfaceNumber 1 01h 3 bAlternateSetting 1 00h 4 bNumEndpoints 1 00h 5 bInterfaceClass 1 01h Audio 6 bInterfaceSubClass 1 02h Audio Streaming 7 bInterfaceProtocol 1 00h 8 iInterface 1 00h Interface Descriptor 1/1 Audio, 2 Endpoints Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 04h Interface 2 bInterfaceNumber 1 01h 3 bAlternateSetting 1 01h 4 bNumEndpoints 1 02h 5 bInterfaceClass 1 01h Audio 6 bInterfaceSubClass 1 02h Audio Streaming 7 bInterfaceProtocol 1 00h 8 iInterface 1 00h Audio Streaming Interface Descriptor Offset Field Size Value Description 0 bLength 1 07h 1 bDescriptorType 1 24h Audio Streaming Interface 2 5 01 01 01 01 00 Audio Streaming Format Type Descriptor Offset Field Size Value Description 0 bLength 1 0Bh 1 bDescriptorType 1 24h Audio Streaming Format Type 2 9 02 01 01 02 10 01 40 1F 00 Endpoint Descriptor 03 3 Out, Isochronous, 1 ms Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 05h Endpoint 2 bEndpointAddress 1 03h 3 Out 3 bmAttributes 1 05h Isochronous, Asynchronous, Data 1..0: Transfer Type ......01 Isochronous 3..2: Sync Type ....01.. Asynchronous 5..4: Usage Type ..00.... Data 7..6: Reserved 00...... 4 wMaxPacketSize 2 0012h 18 bytes 6 bInterval 1 01h 1 ms 7 bRefresh 1 00h 8 bSynchAddress 1 83h Audio Streaming Isochronous Audio Data Endpoint Descriptor Offset Field Size Value Description 0 bLength 1 07h 1 bDescriptorType 1 25h Audio Streaming Isochronous Audio Data Endpoint 2 5 01 00 02 00 00 Endpoint Descriptor 83 3 In, Isochronous, 1 ms Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 05h Endpoint 2 bEndpointAddress 1 83h 3 In 3 bmAttributes 1 01h Isochronous, No Sync, Data 1..0: Transfer Type ......01 Isochronous 3..2: Sync Type ....00.. No Sync 5..4: Usage Type ..00.... Data 7..6: Reserved 00...... 4 wMaxPacketSize 2 0003h 3 bytes 6 bInterval 1 01h 1 ms 7 bRefresh 1 01h 8 bSynchAddress 1 00h
http://pastebin.com/gbdKGnwQ
URB 0006-0003 4:11:41.526 6.746 ms 71 us Sync Reset Pipe and Clear Stall 01:01:83 83DEC6F0h USBPDO-5 usbhub 84E65E00h Success (Success) URB 0007-0002 4:11:41.526 6.749 ms 88 us Sync Reset Pipe and Clear Stall 01:01:83 83DC8C80h 0000007a usbccgp 84E65E00h Success (Success) URB 0008 4:11:41.526 6.758 ms Isoch Transfer 3 bytes buffer in 01:01:83 83DC8C80h 0000007a usbccgp 84FD5790h URB 0009 4:11:41.526 6.763 ms Isoch Transfer 3 bytes buffer in 01:01:83 83DEC6F0h USBPDO-5 usbhub 84FD5790h URB 0010-0009 4:11:41.526 6.831 ms 69 us Isoch Transfer in 01:01:83 83DEC6F0h USBPDO-5 usbhub 84FD5790h Unsuccessful (Internal HC Error) URB 0011-0008 4:11:41.526 6.834 ms 77 us Isoch Transfer in 01:01:83 83DC8C80h 0000007a usbccgp 84FD5790h Unsuccessful (Internal HC Error) URB 0012 4:11:41.526 6.847 ms Sync Reset Pipe and Clear Stall 01:01:83 83DC8C80h 0000007a usbccgp 83DD4008h URB 0013 4:11:41.526 6.853 ms Sync Reset Pipe and Clear Stall 01:01:83 83DEC6F0h USBPDO-5 usbhub 83DD4008h URB 0014-0013 4:11:41.526 6.889 ms 36 us Sync Reset Pipe and Clear Stall 01:01:83 83DEC6F0h USBPDO-5 usbhub 83DD4008h Success (Success) URB 0015-0012 4:11:41.526 6.892 ms 45 us Sync Reset Pipe and Clear Stall 01:01:83 83DC8C80h 0000007a usbccgp 83DD4008h Success (Success)
usbreg.h
/* Device Interrupt Bit Definitions */ #define FRAME_INT 0x00000001 #define EP_FAST_INT 0x00000002 #define EP_SLOW_INT 0x00000004 #define DEV_STAT_INT 0x00000008 #define CCEMTY_INT 0x00000010 #define CDFULL_INT 0x00000020 #define RxENDPKT_INT 0x00000040 #define TxENDPKT_INT 0x00000080 #define EP_RLZED_INT 0x00000100 #define ERR_INT 0x00000200
but still no luck, different error
URB 0080 5:25:45.284 43.540 ms Sync Reset Pipe and Clear Stall 01:01:83 86079B80h 0000009a usbccgp 86F08558h URB 0081-0080 5:25:45.284 43.587 ms 46 us Sync Reset Pipe and Clear Stall 01:01:83 86079B80h 0000009a usbccgp 86F08558h Success (Success) URB 0082 5:25:45.284 43.594 ms Isoch Transfer 3 bytes buffer in 01:01:83 86079B80h 0000009a usbccgp 85DA3008h URB 0083-0082 5:25:45.286 45.368 ms 1.774 ms Isoch Transfer in 01:01:83 86079B80h 0000009a usbccgp 85DA3008h Unsuccessful (Iso Request Failed) URB 0084 5:25:45.286 45.410 ms Sync Reset Pipe and Clear Stall 01:01:83 86079B80h 0000009a usbccgp 86F08558h URB 0085-0084 5:25:45.286 45.453 ms 43 us Sync Reset Pipe and Clear Stall 01:01:83 86079B80h 0000009a usbccgp 86F08558h Success (Success) URB 0086 5:25:45.286 45.460 ms Isoch Transfer 3 bytes buffer in 01:01:83 86079B80h 0000009a usbccgp 85DA3008h URB 0087-0086 5:25:45.288 47.360 ms 1.899 ms Isoch Transfer in 01:01:83 86079B80h 0000009a usbccgp 85DA3008h Unsuccessful (Iso Request Failed) URB 0088 5:25:45.288 47.407 ms Sync Reset Pipe and Clear Stall 01:01:83 86079B80h 0000009a usbccgp 86F08558h URB 0089-0088 5:25:45.288 47.444 ms 37 us Sync Reset Pipe and Clear Stall 01:01:83 86079B80h 0000009a usbccgp 86F08558h Success (Success) URB 0090 5:25:45.288 47.450 ms Isoch Transfer 3 bytes buffer in 01:01:83 86079B80h 0000009a usbccgp 85DA3008h URB 0091-0026 5:25:45.289 48.360 ms 35.761 ms Isoch Transfer 160 bytes buffer out 01:01:03 86079B80h 0000009a usbccgp 86F03930h Success (Success) URB 0092-0090 5:25:45.289 49.354 ms 1.904 ms Isoch Transfer in 01:01:83 86079B80h 0000009a usbccgp 85DA3008h Unsuccessful (Iso Request Failed) URB 0093 5:25:45.290 49.374 ms Sync Reset Pipe and Clear Stall 01:01:83 86079B80h 0000009a usbccgp 86F08558h URB 0094-0093 5:25:45.290 49.412 ms 38 us Sync Reset Pipe and Clear Stall 01:01:83 86079B80h 0000009a usbccgp 86F08558h Success (Success) URB 0095 5:25:45.290 49.418 ms Isoch Transfer 3 bytes buffer in 01:01:83 86079B80h 0000009a usbccgp 85DA3008h URB 0096-0095 5:25:45.291 50.357 ms 939 us Isoch Transfer in 01:01:83 86079B80h 0000009a usbccgp 85DA3008h Unsuccessful (Iso Request Failed) URB 0097 5:25:45.291 50.428 ms Sync Reset Pipe and Clear Stall 01:01:83 86079B80h 0000009a usbccgp 86F08558h URB 0098-0097 5:25:45.291 50.464 ms 36 us Sync Reset Pipe and Clear Stall 01:01:83 86079B80h 0000009a usbccgp 86F08558h Success (Success) URB 0099 5:25:45.291 50.469 ms Isoch Transfer 3 bytes buffer in 01:01:83 86079B80h 0000009a usbccgp 85DA3008h URB 0100-0099 5:25:45.293 52.367 ms 1.897 ms Isoch Transfer in 01:01:83 86079B80h 0000009a usbccgp 85DA3008h Unsuccessful (Iso Request Failed) URB 0101 5:25:45.293 52.611 ms Isoch Transfer 160 bytes data 7C F3 E5 F7 A8 F8 81 F1... out 01:01:03 86079B80h 0000009a usbccgp 86F03930h
can you please help.
I changed
#define USB_DMA_EP 0x00000040
in the usbcfg.h file
just in case I confused you by posting the usbreg.h reg file, when searching to find out what was wrong that is where I was taken .
can you help please.
Above sniffer trace is utterly weird. - The host repeats isoc IN transaction in short interval, less than 1ms - The host puts 160 bytes transaction to the isoc OUT EP, whereas this EP declares just 18 bytes wMaxPacketSize. And, the sampling rate on TypeI format is set to 8k
Maybe, your firmware has troubles in many places. You have changed too many portions of the code at a time on the original example. - Sampling rate (32k --> 8k) - Asynchronous with feedback EP Change the firmware one by one, with confirming the change result. Apply either one, first.
Tsuneo
You sure I don't have to do anything to the
USB Endpoint3 Event Callback
It works and plays audio at 8000khz But I am losing packets
And this is Endpoint 3 in according to the config wizard, what you say to set is endpoint 3 out
#define USB_DMA_EP 0x00000080
> It works and plays audio at 8000khz But I am losing packets
Then, before applying Async, get back to the 8k sampling change, and find the cause of packet loss, first.
You declare 18 bytes wMaxPacketSize of EP3 OUT on the endpoint descriptor. The original example defines P_S (packet size) value on usbaudio.h, as follows. How do you change P_S value?
usbaudio.h /* Audio Definitions */ #define DATA_FREQ 32000 /* Audio Data Frequency */ #define P_S 32 /* Packet Size */ #if USB_DMA #define P_C 4 /* Packet Count */ #else #define P_C 1 /* Packet Count */ #endif #define B_S (8*P_C*P_S) /* Buffer Size */
The original example assumes P_S value as a number of power of 2, like 2, 4, 8, 16, 32, ... If your firmware set P_S to 18, the firmware will show unexpected behavior.
usbaudio.h /* Audio Definitions */ #define DATA_FREQ 8000 /* Audio Data Frequency */ #define P_S 8 /* Packet Size */ #if USB_DMA #define P_C 4 /* Packet Count */ #else #define P_C 1 /* Packet Count */ #endif #define B_S (8*P_C*P_S) /* Buffer Size */
Does this seem right to you? do I need to power on the timer
LPC_SC->PCONP |= 1 << 2; // Power on Timer' LPC_TIM1->TCR = 1; // TC1 Enable
current_timer_count = LPC_TIM1->TCR;<<<<<----- is that the correct way to write it you use T1TC
TCR (Timer Control Register) is wrong. It's TC (Timer Counter).
current_timer_count = LPC_TIM1->TCR //<-- LPC_TIM1->TC
What do you mean "packet loss"? How do you detect it? If you hear distorted sound on 8k sample change, additional Async modification doesn't improve it.
Lost code:(
I start a fresh, but still not luck
Connection Status Device connected Current Configuration 1 Speed Full Device Address 1 Number Of Open Pipes 0 Device Descriptor NXP LPC17xx Speaker Offset Field Size Value Description 0 bLength 1 12h 1 bDescriptorType 1 01h Device 2 bcdUSB 2 0200h USB Spec 2.0 4 bDeviceClass 1 00h Class info in Ifc Descriptors 5 bDeviceSubClass 1 00h 6 bDeviceProtocol 1 00h 7 bMaxPacketSize0 1 40h 64 bytes 8 idVendor 2 1FC9h 10 idProduct 2 4002h 12 bcdDevice 2 0100h 1.00 14 iManufacturer 1 01h "NXP Semicond " 15 iProduct 1 02h "NXP LPC17xx Speaker " 16 iSerialNumber 1 03h "DEMO00000000" 17 bNumConfigurations 1 01h Configuration Descriptor 1 Bus Powered, 100 mA Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 02h Configuration 2 wTotalLength 2 0076h 4 bNumInterfaces 1 02h 5 bConfigurationValue 1 01h 6 iConfiguration 1 00h 7 bmAttributes 1 80h Bus Powered 4..0: Reserved ...00000 5: Remote Wakeup ..0..... No 6: Self Powered .0...... No, Bus Powered 7: Reserved (set to one) (bus-powered for 1.0) 1....... 8 bMaxPower 1 32h 100 mA Interface Descriptor 0/0 Audio, 0 Endpoints Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 04h Interface 2 bInterfaceNumber 1 00h 3 bAlternateSetting 1 00h 4 bNumEndpoints 1 00h 5 bInterfaceClass 1 01h Audio 6 bInterfaceSubClass 1 01h Audio Control 7 bInterfaceProtocol 1 00h 8 iInterface 1 00h Audio Control Interface Header Descriptor Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 24h Audio Control Interface Header 2 7 01 00 01 27 00 01 01 Audio Control Input Terminal Descriptor Offset Field Size Value Description 0 bLength 1 0Ch 1 bDescriptorType 1 24h Audio Control Input Terminal 2 10 02 01 01 01 00 01 00 00 00 00 Audio Control Feature Unit Descriptor Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 24h Audio Control Feature Unit 2 7 06 02 01 01 03 00 00 Audio Control Output Terminal Descriptor Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 24h Audio Control Output Terminal 2 7 03 03 01 03 00 02 00 Interface Descriptor 1/0 Audio, 0 Endpoints Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 04h Interface 2 bInterfaceNumber 1 01h 3 bAlternateSetting 1 00h 4 bNumEndpoints 1 00h 5 bInterfaceClass 1 01h Audio 6 bInterfaceSubClass 1 02h Audio Streaming 7 bInterfaceProtocol 1 00h 8 iInterface 1 00h Interface Descriptor 1/1 Audio, 2 Endpoints Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 04h Interface 2 bInterfaceNumber 1 01h 3 bAlternateSetting 1 01h 4 bNumEndpoints 1 02h 5 bInterfaceClass 1 01h Audio 6 bInterfaceSubClass 1 02h Audio Streaming 7 bInterfaceProtocol 1 00h 8 iInterface 1 00h Audio Streaming Interface Descriptor Offset Field Size Value Description 0 bLength 1 07h 1 bDescriptorType 1 24h Audio Streaming Interface 2 5 01 01 01 01 00 Audio Streaming Format Type Descriptor Offset Field Size Value Description 0 bLength 1 0Bh 1 bDescriptorType 1 24h Audio Streaming Format Type 2 9 02 01 01 02 10 01 00 7D 00 Endpoint Descriptor 03 3 Out, Isochronous, 1 ms Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 05h Endpoint 2 bEndpointAddress 1 03h 3 Out 3 bmAttributes 1 05h Isochronous, Asynchronous, Data 1..0: Transfer Type ......01 Isochronous 3..2: Sync Type ....01.. Asynchronous 5..4: Usage Type ..00.... Data 7..6: Reserved 00...... 4 wMaxPacketSize 2 0042h 66 bytes 6 bInterval 1 01h 1 ms 7 bRefresh 1 00h 8 bSynchAddress 1 83h Audio Streaming Isochronous Audio Data Endpoint Descriptor Offset Field Size Value Description 0 bLength 1 07h 1 bDescriptorType 1 25h Audio Streaming Isochronous Audio Data Endpoint 2 5 01 00 02 00 00 Endpoint Descriptor 83 3 In, Isochronous, 1 ms Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 05h Endpoint 2 bEndpointAddress 1 83h 3 In 3 bmAttributes 1 01h Isochronous, No Sync, Data 1..0: Transfer Type ......01 Isochronous 3..2: Sync Type ....00.. No Sync 5..4: Usage Type ..00.... Data 7..6: Reserved 00...... 4 wMaxPacketSize 2 0003h 3 bytes 6 bInterval 1 01h 1 ms 7 bRefresh 1 01h 8 bSynchAddress 1 00h
/* Endpoint - Standard Descriptor */ AUDIO_STANDARD_ENDPOINT_DESC_SIZE, /* bLength */ USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ USB_ENDPOINT_OUT(3), /* bEndpointAddress */ USB_ENDPOINT_TYPE_ISOCHRONOUS | USB_ENDPOINT_SYNC_ASYNCHRONOUS, /* bmAttributes */ <<------corrected here WBVAL(66), /* wMaxPacketSize */ 0x01, /* bInterval */ 0x00, /* bRefresh */ 0x83, /* bSynchAddress */
/*---------------------------------------------------------------------------- * U S B - K e r n e l *---------------------------------------------------------------------------- * Name: usbdesc.c * Purpose: USB Descriptors * Version: V1.20 *---------------------------------------------------------------------------- * This software is supplied "AS IS" without any warranties, express, * implied or statutory, including but not limited to the implied * warranties of fitness for purpose, satisfactory quality and * noninfringement. Keil extends you a royalty-free right to reproduce * and distribute executable files created using this software for use * on NXP Semiconductors LPC family microcontroller devices only. Nothing * else gives you the right to use this software. * * Copyright (c) 2009 Keil - An ARM Company. All rights reserved. *---------------------------------------------------------------------------- * History: * V1.20 Changed string descriptor handling * V1.00 Initial Version *----------------------------------------------------------------------------*/ #include "type.h" #include "usb.h" #include "audio.h" #include "usbcfg.h" #include "usbdesc.h" /* USB Standard Device Descriptor */ const uint8_t USB_DeviceDescriptor[] = { USB_DEVICE_DESC_SIZE, /* bLength */ USB_DEVICE_DESCRIPTOR_TYPE, /* bDescriptorType */ WBVAL(0x0200), /* 2.00 */ /* bcdUSB */ 0x00, /* bDeviceClass */ 0x00, /* bDeviceSubClass */ 0x00, /* bDeviceProtocol */ USB_MAX_PACKET0, /* bMaxPacketSize0 */ WBVAL(0x1FC9), /* idVendor */ WBVAL(0x4002), /* idProduct */ WBVAL(0x0100), /* 1.00 */ /* bcdDevice */ 0x01, /* iManufacturer */ 0x02, /* iProduct */ 0x03, /* iSerialNumber */ 0x01 /* bNumConfigurations: one possible configuration*/ }; /* USB Configuration Descriptor */ /* All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */ const uint8_t USB_ConfigDescriptor[] = { /* Configuration 1 */ USB_CONFIGUARTION_DESC_SIZE, /* bLength */ USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType */ WBVAL( /* wTotalLength */ USB_CONFIGUARTION_DESC_SIZE + USB_INTERFACE_DESC_SIZE + AUDIO_CONTROL_INTERFACE_DESC_SZ(1) + AUDIO_INPUT_TERMINAL_DESC_SIZE + AUDIO_FEATURE_UNIT_DESC_SZ(1,1) + AUDIO_OUTPUT_TERMINAL_DESC_SIZE + USB_INTERFACE_DESC_SIZE + USB_INTERFACE_DESC_SIZE + AUDIO_STREAMING_INTERFACE_DESC_SIZE + AUDIO_FORMAT_TYPE_I_DESC_SZ(1) + AUDIO_STANDARD_ENDPOINT_DESC_SIZE + AUDIO_STREAMING_ENDPOINT_DESC_SIZE + AUDIO_STANDARD_ENDPOINT_DESC_SIZE <-------------- ), 0x02, /* bNumInterfaces */ 0x01, /* bConfigurationValue */ 0x00, /* iConfiguration */ USB_CONFIG_BUS_POWERED, /* bmAttributes */ USB_CONFIG_POWER_MA(100), /* bMaxPower */ /* Interface 0, Alternate Setting 0, Audio Control */ USB_INTERFACE_DESC_SIZE, /* bLength */ USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ 0x00, /* bInterfaceNumber */ 0x00, /* bAlternateSetting */ 0x00, /* bNumEndpoints */ USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */ AUDIO_SUBCLASS_AUDIOCONTROL, /* bInterfaceSubClass */ AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */ 0x00, /* iInterface */ /* Audio Control Interface */ AUDIO_CONTROL_INTERFACE_DESC_SZ(1), /* bLength */ AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ AUDIO_CONTROL_HEADER, /* bDescriptorSubtype */ WBVAL(0x0100), /* 1.00 */ /* bcdADC */ WBVAL( /* wTotalLength */ AUDIO_CONTROL_INTERFACE_DESC_SZ(1) + AUDIO_INPUT_TERMINAL_DESC_SIZE + AUDIO_FEATURE_UNIT_DESC_SZ(1,1) + AUDIO_OUTPUT_TERMINAL_DESC_SIZE ), 0x01, /* bInCollection */ 0x01, /* baInterfaceNr */ /* Audio Input Terminal */ AUDIO_INPUT_TERMINAL_DESC_SIZE, /* bLength */ AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ AUDIO_CONTROL_INPUT_TERMINAL, /* bDescriptorSubtype */ 0x01, /* bTerminalID */ WBVAL(AUDIO_TERMINAL_USB_STREAMING), /* wTerminalType */ 0x00, /* bAssocTerminal */ 0x01, /* bNrChannels */ WBVAL(AUDIO_CHANNEL_M), /* wChannelConfig */ 0x00, /* iChannelNames */ 0x00, /* iTerminal */ /* Audio Feature Unit */ AUDIO_FEATURE_UNIT_DESC_SZ(1,1), /* bLength */ AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ AUDIO_CONTROL_FEATURE_UNIT, /* bDescriptorSubtype */ 0x02, /* bUnitID */ 0x01, /* bSourceID */ 0x01, /* bControlSize */ AUDIO_CONTROL_MUTE | AUDIO_CONTROL_VOLUME, /* bmaControls(0) */ 0x00, /* bmaControls(1) */ 0x00, /* iTerminal */
/* Audio Output Terminal */ AUDIO_OUTPUT_TERMINAL_DESC_SIZE, /* bLength */ AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ AUDIO_CONTROL_OUTPUT_TERMINAL, /* bDescriptorSubtype */ 0x03, /* bTerminalID */ WBVAL(AUDIO_TERMINAL_SPEAKER), /* wTerminalType */ 0x00, /* bAssocTerminal */ 0x02, /* bSourceID */ 0x00, /* iTerminal */ /* Interface 1, Alternate Setting 0, Audio Streaming - Zero Bandwith */ USB_INTERFACE_DESC_SIZE, /* bLength */ USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ 0x01, /* bInterfaceNumber */ 0x00, /* bAlternateSetting */ 0x00, /* bNumEndpoints */ USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */ AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */ AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */ 0x00, /* iInterface */ /* Interface 1, Alternate Setting 1, Audio Streaming - Operational */ USB_INTERFACE_DESC_SIZE, /* bLength */ USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ 0x01, /* bInterfaceNumber */ 0x01, /* bAlternateSetting */ 0x02, /* bNumEndpoints */ <---------- USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */ AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */ AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */ 0x00, /* iInterface */
/* Audio Streaming Interface */ AUDIO_STREAMING_INTERFACE_DESC_SIZE, /* bLength */ AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ AUDIO_STREAMING_GENERAL, /* bDescriptorSubtype */ 0x01, /* bTerminalLink */ 0x01, /* bDelay */ WBVAL(AUDIO_FORMAT_PCM), /* wFormatTag */ /* Audio Type I Format */ AUDIO_FORMAT_TYPE_I_DESC_SZ(1), /* bLength */ AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ AUDIO_STREAMING_FORMAT_TYPE, /* bDescriptorSubtype */ AUDIO_FORMAT_TYPE_I, /* bFormatType */ 0x01, /* bNrChannels */ 0x02, /* bSubFrameSize */ 16, /* bBitResolution */ 0x01, /* bSamFreqType */ B3VAL(32000), /* tSamFreq */ /* Endpoint - Standard Descriptor */ AUDIO_STANDARD_ENDPOINT_DESC_SIZE, /* bLength */ USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ USB_ENDPOINT_OUT(3), /* bEndpointAddress */ USB_ENDPOINT_TYPE_ISOCHRONOUS | USB_ENDPOINT_SYNC_ASYNCHRONOUS, /* bmAttributes */ <--------------- WBVAL(66), /* wMaxPacketSize */ 0x01, /* bInterval */ 0x00, /* bRefresh */ 0x83, /* bSynchAddress */ <------ /* Endpoint - Audio Streaming */ AUDIO_STREAMING_ENDPOINT_DESC_SIZE, /* bLength */ AUDIO_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ AUDIO_ENDPOINT_GENERAL, /* bDescriptor */ 0x00, /* bmAttributes */ 0x02, /* bLockDelayUnits */ WBVAL(0x0000), /* wLockDelay */ /* Endpoint - Standard Descriptor */ // <-------- additional feedback EP AUDIO_STANDARD_ENDPOINT_DESC_SIZE, /* bLength */ USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ USB_ENDPOINT_IN(3), /* bEndpointAddress */ USB_ENDPOINT_TYPE_ISOCHRONOUS, /* bmAttributes */ WBVAL(3), /* wMaxPacketSize */ 0x01, /* bInterval */ 0x01, /* bRefresh, every 2ms */ 0x00, /* bSynchAddress */ /* Terminator */ 0 /* bLength */ }; /* USB String Descriptor (optional) */ const uint8_t USB_StringDescriptor[] = { /* Index 0x00: LANGID Codes */ 0x04, /* bLength */ USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */ WBVAL(0x0409), /* US English */ /* wLANGID */ /* Index 0x01: Manufacturer */ (13*2 + 2), /* bLength (13 Char + Type + lenght) */ USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */ 'N',0, 'X',0, 'P',0, ' ',0, 'S',0, 'e',0, 'm',0, 'i',0, 'c',0, 'o',0, 'n',0, 'd',0, ' ',0, /* Index 0x02: Product */ (20*2 + 2), /* bLength ( 20 Char + Type + lenght) */ USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */ 'N',0, 'X',0, 'P',0, ' ',0, 'L',0, 'P',0, 'C',0, '1',0, '7',0, 'x',0, 'x',0, ' ',0, 'S',0, 'p',0, 'e',0, 'a',0, 'k',0, 'e',0, 'r',0, ' ',0, /* Index 0x03: Serial Number */ (12*2 + 2), /* bLength (12 Char + Type + lenght) */ USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */ 'D',0, 'E',0, 'M',0, 'O',0, '0',0, '0',0, '0',0, '0',0, '0',0, '0',0, '0',0, '0',0, };
/* Audio Definitions */ #define DATA_FREQ 32000 /* Audio Data Frequency */ #define P_S 32 /* Packet Size */ #if USB_DMA #define P_C 4 /* Packet Count */ #else #define P_C 1 /* Packet Count */ #endif #define B_S (8*P_C*P_S) /* Buffer Size */
uint32_t last_timer_count; #if USB_SOF_EVENT void USB_SOF_Event (void) { uint32_t current_timer_count; uint32_t feedback_value; uint32_t pclk; // feedback current_timer_count = LPC_TIM1->TC; // capture current SOF timing on the Timer1 if ( USB_AltSetting[1] == 1 ) { // When interface 1 / alt 1 is enabled, // calculate master/SOF frequency ratio in 10.10 (10.14) format feedback_value = ((current_timer_count - last_timer_count) << 14) / (pclk/DATA_FREQ); // and send it to the feedback IN EP USB_WriteEP( 0x83, (uint8_t *)&feedback_value, 3 ); } last_timer_count = current_timer_count; // update the last SOF timing
Duration was reduced but still some in the us seconds
(Iso Request Failed) URB 5654-5653 5:37:35.394 1.286303 s 1.866 ms Isoch Transfer in 01:01:83 871826F0h USBPDO-5 usbhub 85CBDB60h Unsuccessful (Iso Request Failed) URB 5655-5652 5:37:35.394 1.286307 s 1.873 ms Isoch Transfer in 01:01:83 870442C8h 0000010f usbccgp 85CBDB60h Unsuccessful (Iso Request Failed) URB 5662-5661 5:37:35.395 1.287303 s 928 us Isoch Transfer in 01:01:83 871826F0h USBPDO-5 usbhub 85CBDB60h Unsuccessful (Iso Request Failed) URB 5663-5660 5:37:35.395 1.287306 s 935 us Isoch Transfer in 01:01:83 870442C8h 0000010f usbccgp 85CBDB60h Unsuccessful (Iso Request Failed) URB 5706-5705 5:37:35.405 1.297317 s 1.829 ms Isoch Transfer in 01:01:83 871826F0h USBPDO-5 usbhub 85CBDB60h Unsuccessful (Iso Request Failed) URB 5707-5704 5:37:35.405 1.297320 s 1.838 ms Isoch Transfer in 01:01:83 870442C8h 0000010f usbccgp 85CBDB60h Unsuccessful (Iso Request Failed) URB 6522-6521 5:37:35.589 1.481314 s 1.651 ms Isoch Transfer in 01:01:83 871826F0h USBPDO-5 usbhub 85CBDB60h Unsuccessful (Iso Request Failed) URB 6523-6520 5:37:35.589 1.481319 s 1.660 ms Isoch Transfer in 01:01:83 870442C8h 0000010f usbccgp 85CBDB60h Unsuccessful (Iso Request Failed) URB 10384-10383 5:37:36.459 2.351312 s 1.299 ms Isoch Transfer in 01:01:83 871826F0h USBPDO-5 usbhub 85CBDB60h Unsuccessful (Iso Request Failed) URB 10385-10382 5:37:36.459 2.351315 s 1.307 ms Isoch Transfer in 01:01:83 870442C8h 0000010f usbccgp 85CBDB60h Unsuccessful (Iso Request Failed) URB 11192-11191 5:37:36.644 2.536358 s 1.723 ms Isoch Transfer in 01:01:83 871826F0h USBPDO-5 usbhub 85CBDB60h Unsuccessful (Iso Request Failed) URB 11193-11190 5:37:36.644 2.536364 s 1.734 ms Isoch Transfer in 01:01:83 870442C8h 0000010f usbccgp 85CBDB60h Unsuccessful (Iso Request Failed) URB 11200-11199 5:37:36.646 2.538304 s 1.847 ms Isoch Transfer in 01:01:83 871826F0h USBPDO-5 usbhub 85CBDB60h Unsuccessful (Iso Request Failed) URB 11201-11198 5:37:36.646 2.538308 s 1.855 ms Isoch Transfer in 01:01:83 870442C8h 0000010f usbccgp 85CBDB60h Unsuccessful (Iso Request Failed) URB 11210-11207 5:37:36.647 2.539328 s 954 us Isoch Transfer in 01:01:83 871826F0h USBPDO-5 usbhub 85CBDB60h Unsuccessful (Iso Request Failed) URB 11211-11206 5:37:36.647 2.539331 s 961 us Isoch Transfer in 01:01:83 870442C8h 0000010f usbccgp 85CBDB60h Unsuccessful (Iso Request Failed) URB 11220-11219 5:37:36.649 2.541319 s 1.476 ms Isoch Transfer in 01:01:83 871826F0h USBPDO-5 usbhub 85CBDB60h Unsuccessful (Iso Request Failed) URB 11221-11218 5:37:36.649 2.541323 s 1.486 ms Isoch Transfer in 01:01:83 870442C8h 0000010f usbccgp 85CBDB60h Unsuccessful (Iso Request Failed) URB 13076-13075 5:37:37.073 2.965537 s 2.165 ms Isoch Transfer in 01:01:83 871826F0h USBPDO-5 usbhub 85CBDB60h Unsuccessful (Iso Request Failed) URB 13077-13074 5:37:37.073 2.965540 s 2.172 ms Isoch Transfer in 01:01:83 870442C8h 0000010f usbccgp 85CBDB60h Unsuccessful (Iso Request Failed) URB 13084-13083 5:37:37.075 2.967927 s 2.315 ms Isoch Transfer in 01:01:83 871826F0h USBPDO-5 usbhub 85CBDB60h Unsuccessful (Iso Request Failed) URB 13085-13082 5:37:37.075 2.967931 s 2.322 ms Isoch Transfer in 01:01:83 870442C8h 0000010f usbccgp 85CBDB60h Unsuccessful (Iso Request Failed) URB 13094-13091 5:37:37.079 2.971425 s 2.582 ms Isoch Transfer in 01:01:83 871826F0h USBPDO-5 usbhub 85CBDB60h Unsuccessful (Iso Request Failed) URB 13095-13090 5:37:37.079 2.971427 s 2.589 ms Isoch Transfer in 01:01:83 870442C8h 0000010f usbccgp 85CBDB60h Unsuccessful (Iso Request Failed) URB 13104-13103 5:37:37.081 2.973315 s 1.326 ms Isoch Transfer in 01:01:83 871826F0h USBPDO-5 usbhub 85CBDB60h Unsuccessful (Iso Request Failed) URB 13105-13102 5:37:37.081 2.973320 s 1.335 ms Isoch Transfer in 01:01:83 870442C8h 0000010f usbccgp 85CBDB60h Unsuccessful (Iso Request Failed) URB 13112-13111 5:37:37.082 2.974307 s 908 us Isoch Transfer in 01:01:83 871826F0h USBPDO-5 usbhub 85CBDB60h Unsuccessful (Iso Request Failed) URB 13113-13110 5:37:37.082 2.974311 s 916 us Isoch Transfer in 01:01:83 870442C8h 0000010f usbccgp 85CBDB60h Unsuccessful (Iso Request Failed) URB 13120-13119 5:37:37.083 2.975306 s 924 us Isoch Transfer in 01:01:83 871826F0h USBPDO-5 usbhub 85CBDB60h Unsuccessful (Iso Request Failed) URB 13121-13118 5:37:37.083 2.975309 s 933 us Isoch Transfer in 01:01:83 870442C8h 0000010f usbccgp 85CBDB60h Unsuccessful (Iso Request Failed)
LPC_SC->PCONP |= (1 << 2); // Power on Timer'
Audio is fine no distortion, I am not sure what impact the errors are having, all I know is I am getting them:(