<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>LPC MicrocontrollersのトピックFrame interrupt for isosynchronus audio endpoint</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Frame-interrupt-for-isosynchronus-audio-endpoint/m-p/524683#M7319</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by terminus on Thu Apr 23 07:36:23 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am currently working on an I2S-USB-Converter where an external ADC samples an audio signal (48kHz, 32 bit) and the connected lpc1759 sends the audio data to the pc.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I got the usb device descriptors set up and the pc recognizes the lpc as an usb sound card. I am also able to open the audio stream from the sound card but i haven't implemented the frame handler yet because i didn't get the frame request interrupt.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here is the code i got so far:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
// EP 3 IN
#define USB_AUDIO_ENDPOINT_ADDRESS 0x83 
#define USB_AUDIO_ENDPOINT 3
#define USB_AUDIO_ENDPOINT_INDEX 7

// Handle frame request interrupt
ErrorCode_t USB_AUDIO_FRAME_HANDLER(USBD_HANDLE_T hUsb, void* data, uint32_t event)
{
TOGGLE_LED();

return LPC_OK;
}

void USB_Init(void)
{
// enable USB PLL and clocks
Chip_USB_Init();

// Dev, AHB clock enable
LPC_USB-&amp;gt;USBClkCtrl = 0x12;
while ((LPC_USB-&amp;gt;USBClkSt &amp;amp; 0x12) != 0x12)
;

// call back structures
USBD_API_INIT_PARAM_T usb_param;
memset((void *) &amp;amp;usb_param, 0, sizeof(USBD_API_INIT_PARAM_T));
usb_param.usb_reg_base = LPC_USB_BASE + 0x200;
usb_param.max_num_ep = 4;
usb_param.mem_base = USB_STACK_MEM_BASE;
usb_param.mem_size = USB_STACK_MEM_SIZE;

// Set the USB descriptors
USB_CORE_DESCS_T desc;
desc.device_desc = (uint8_t *) &amp;amp;USB_DeviceDescriptor[0];
desc.string_desc = (uint8_t *) &amp;amp;USB_StringDescriptor[0];
desc.high_speed_desc = (uint8_t *) &amp;amp;USB_FsConfigDescriptor[0];
desc.full_speed_desc = (uint8_t *) &amp;amp;USB_FsConfigDescriptor[0];
desc.device_qualifier = 0;

// USB Initialization
ErrorCode_t ret = USBD_API-&amp;gt;hw-&amp;gt;Init(&amp;amp;g_hUsb, &amp;amp;desc, &amp;amp;usb_param);

// Check if initialisation was successfull
if (ret == LPC_OK)
{
// Install usb class handler
ret = USBD_API-&amp;gt;core-&amp;gt;RegisterClassHandler(g_hUsb, USB_Class_Handler, &amp;amp;g_hUsb);

// Check if handler installation was successful
if (ret == LPC_OK)
{
// Register endpoint handler for streaming interface
ret = USBD_API-&amp;gt;core-&amp;gt;RegisterEpHandler(g_hUsb, USB_AUDIO_ENDPOINT_INDEX, USB_AUDIO_FRAME_HANDLER, &amp;amp;g_hUsb);

// Enable streaming endpoint
USBD_API-&amp;gt;hw-&amp;gt;EnableEP(g_hUsb, USB_AUDIO_ENDPOINT_ADDRESS);

// Check if handler installation was successful
if (ret == LPC_OK)
{
//&amp;nbsp; Enable USB interrupts
NVIC_EnableIRQ(USB_IRQn);

// Connect USB
USBD_API-&amp;gt;hw-&amp;gt;Connect(g_hUsb, 1);

// Realise EP3
LPC_USB-&amp;gt;ReEp |= (1 &amp;lt;&amp;lt; USB_AUDIO_ENDPOINT);

// Set endpoint package size
LPC_USB-&amp;gt;EpInd = USB_AUDIO_ENDPOINT;
LPC_USB-&amp;gt;MaxPSize = 828;

// Disable dma for EP3
LPC_USB-&amp;gt;EpDMADis = (1 &amp;lt;&amp;lt; USB_AUDIO_ENDPOINT);

// Enable TX interrupt for EP3
LPC_USB-&amp;gt;EpIntEn |= (1 &amp;lt;&amp;lt; USB_AUDIO_ENDPOINT);

// Enable frame request interrupt
LPC_USB-&amp;gt;DevIntEn |= 1;
}
}

}
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Can anybody help me with my problem?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Kind regards&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Christian&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;P.S.: I am using the latest LPCOpen device drivers (2.10) with the included USDB rom stack.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 16:51:13 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T16:51:13Z</dc:date>
    <item>
      <title>Frame interrupt for isosynchronus audio endpoint</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Frame-interrupt-for-isosynchronus-audio-endpoint/m-p/524683#M7319</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by terminus on Thu Apr 23 07:36:23 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am currently working on an I2S-USB-Converter where an external ADC samples an audio signal (48kHz, 32 bit) and the connected lpc1759 sends the audio data to the pc.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I got the usb device descriptors set up and the pc recognizes the lpc as an usb sound card. I am also able to open the audio stream from the sound card but i haven't implemented the frame handler yet because i didn't get the frame request interrupt.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here is the code i got so far:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
// EP 3 IN
#define USB_AUDIO_ENDPOINT_ADDRESS 0x83 
#define USB_AUDIO_ENDPOINT 3
#define USB_AUDIO_ENDPOINT_INDEX 7

// Handle frame request interrupt
ErrorCode_t USB_AUDIO_FRAME_HANDLER(USBD_HANDLE_T hUsb, void* data, uint32_t event)
{
TOGGLE_LED();

return LPC_OK;
}

void USB_Init(void)
{
// enable USB PLL and clocks
Chip_USB_Init();

// Dev, AHB clock enable
LPC_USB-&amp;gt;USBClkCtrl = 0x12;
while ((LPC_USB-&amp;gt;USBClkSt &amp;amp; 0x12) != 0x12)
;

// call back structures
USBD_API_INIT_PARAM_T usb_param;
memset((void *) &amp;amp;usb_param, 0, sizeof(USBD_API_INIT_PARAM_T));
usb_param.usb_reg_base = LPC_USB_BASE + 0x200;
usb_param.max_num_ep = 4;
usb_param.mem_base = USB_STACK_MEM_BASE;
usb_param.mem_size = USB_STACK_MEM_SIZE;

// Set the USB descriptors
USB_CORE_DESCS_T desc;
desc.device_desc = (uint8_t *) &amp;amp;USB_DeviceDescriptor[0];
desc.string_desc = (uint8_t *) &amp;amp;USB_StringDescriptor[0];
desc.high_speed_desc = (uint8_t *) &amp;amp;USB_FsConfigDescriptor[0];
desc.full_speed_desc = (uint8_t *) &amp;amp;USB_FsConfigDescriptor[0];
desc.device_qualifier = 0;

// USB Initialization
ErrorCode_t ret = USBD_API-&amp;gt;hw-&amp;gt;Init(&amp;amp;g_hUsb, &amp;amp;desc, &amp;amp;usb_param);

// Check if initialisation was successfull
if (ret == LPC_OK)
{
// Install usb class handler
ret = USBD_API-&amp;gt;core-&amp;gt;RegisterClassHandler(g_hUsb, USB_Class_Handler, &amp;amp;g_hUsb);

// Check if handler installation was successful
if (ret == LPC_OK)
{
// Register endpoint handler for streaming interface
ret = USBD_API-&amp;gt;core-&amp;gt;RegisterEpHandler(g_hUsb, USB_AUDIO_ENDPOINT_INDEX, USB_AUDIO_FRAME_HANDLER, &amp;amp;g_hUsb);

// Enable streaming endpoint
USBD_API-&amp;gt;hw-&amp;gt;EnableEP(g_hUsb, USB_AUDIO_ENDPOINT_ADDRESS);

// Check if handler installation was successful
if (ret == LPC_OK)
{
//&amp;nbsp; Enable USB interrupts
NVIC_EnableIRQ(USB_IRQn);

// Connect USB
USBD_API-&amp;gt;hw-&amp;gt;Connect(g_hUsb, 1);

// Realise EP3
LPC_USB-&amp;gt;ReEp |= (1 &amp;lt;&amp;lt; USB_AUDIO_ENDPOINT);

// Set endpoint package size
LPC_USB-&amp;gt;EpInd = USB_AUDIO_ENDPOINT;
LPC_USB-&amp;gt;MaxPSize = 828;

// Disable dma for EP3
LPC_USB-&amp;gt;EpDMADis = (1 &amp;lt;&amp;lt; USB_AUDIO_ENDPOINT);

// Enable TX interrupt for EP3
LPC_USB-&amp;gt;EpIntEn |= (1 &amp;lt;&amp;lt; USB_AUDIO_ENDPOINT);

// Enable frame request interrupt
LPC_USB-&amp;gt;DevIntEn |= 1;
}
}

}
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Can anybody help me with my problem?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Kind regards&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Christian&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;P.S.: I am using the latest LPCOpen device drivers (2.10) with the included USDB rom stack.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 16:51:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Frame-interrupt-for-isosynchronus-audio-endpoint/m-p/524683#M7319</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T16:51:13Z</dc:date>
    </item>
  </channel>
</rss>

