<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.arm.com/utility/feedstylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Enabling double buffered DMA isochronous endpoint</title><link>https://community.arm.com/developer/tools-software/tools/f/keil-forum/38700/enabling-double-buffered-dma-isochronous-endpoint</link><description> 
Hi to all 
I&amp;#39;m attempting to modify the USBAudio example on an LPC2378 in order
to appear as a microphone using isochronous endpoint 3. I modified
the example and it works fine. The next step is to enable a double
buffered endpoint. Did someone have</description><dc:language>en-US</dc:language><generator>Telligent Community 10</generator><item><title>RE: Enabling double buffered DMA isochronous endpoint</title><link>https://community.arm.com/thread/102063?ContentTypeID=1</link><pubDate>Mon, 15 Feb 2010 03:19:29 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:5b41567d-d4d9-42f3-a81d-d76f6ccf22b3</guid><dc:creator>Tsuneo Chinzei</dc:creator><description>&lt;p&gt;&lt;p&gt;
Your firmware doesn&amp;#39;t need to be aware of the double buffer on the
device engine. On every FRAME (SOF) interrupt, write a packet to the
IN endpoint buffer.&lt;br /&gt;
The packet is sent at the next USB frame, when host puts IN
transaction. Because of this one frame delay, double buffer is
assigned on the USB engine.&lt;/p&gt;

&lt;p&gt;
The USB device engine of LPC family is not so good for advanced
audio application. It doesn&amp;#39;t have hardware SOF recovery and hardware
PLL driven by SOF. These features are required to support packet drop
detection and synchronization. You have to implement these feature on
the firmware.&lt;/p&gt;

&lt;p&gt;
Compare the device functions with audio-specific chip&lt;/p&gt;

&lt;p&gt;
TI TAS1020B USB Steaming Controller&lt;br /&gt;
&lt;a href="http://focus.ti.com/lit/ds/symlink/tas1020b.pdf"&gt;focus.ti.com/.../tas1020b.pdf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
Tsuneo&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Enabling double buffered DMA isochronous endpoint</title><link>https://community.arm.com/thread/78107?ContentTypeID=1</link><pubDate>Sun, 14 Feb 2010 23:53:22 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:165e3081-faf4-4c26-ae85-97634a8a7c61</guid><dc:creator>Francesco Cuzzocrea</dc:creator><description>&lt;p&gt;&lt;p&gt;
Ok, thanks for the answer. So the double buffering is yet enabled,
but what about managing ? That is, I imagine that I should check the
B_1_FULL and B_2_FULL bits in order to know which one should be
filled. Did you have some sample code ?&lt;br /&gt;
best regards&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Enabling double buffered DMA isochronous endpoint</title><link>https://community.arm.com/thread/57723?ContentTypeID=1</link><pubDate>Sat, 13 Feb 2010 23:56:47 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:54d8e543-9825-4db6-8394-a60e108418e2</guid><dc:creator>Tsuneo Chinzei</dc:creator><description>&lt;p&gt;&lt;p&gt;
&lt;i&gt;&amp;gt; The next step is to enable a double buffered
endpoint.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;
For USB device engine on LPC family,&lt;br /&gt;
isoc and bulk endpoints are double buffered as the default. Rather,
Single buffer is not available for isoc endpoint. (For bulk,
assigning bulk transfer to an interrupt endpoint, single buffer is
available.)&lt;/p&gt;

&lt;p&gt;
Therefore, if you&amp;#39;ve done isoc in DMA, it&amp;#39;s already double
buffered.&lt;/p&gt;

&lt;p&gt;
Tsuneo&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>