MCUXpresso_LPC55S69/docs/MCUXpresso SDK API Referenc.../a00032.html

714 lines
43 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>MCUXpresso SDK API Reference Manual: I2S DMA Driver</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="fs_logo.gif"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">MCUXpresso SDK API Reference Manual
&#160;<span id="projectnumber">Rev 2.15.000</span>
</div>
<div id="projectbrief">NXP Semiconductors</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>API&#160;Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('a00032.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#typedef-members">Typedefs</a> </div>
<div class="headertitle">
<div class="title">I2S DMA Driver<div class="ingroups"><a class="el" href="a00248.html">I2S: I2S Driver</a></div></div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:a00351"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#a00351">_i2s_dma_handle</a></td></tr>
<tr class="memdesc:a00351"><td class="mdescLeft">&#160;</td><td class="mdescRight">i2s dma handle <a href="a00032.html#a00351">More...</a><br/></td></tr>
<tr class="separator:a00351"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:gad5afd6e182235d0625772c5a81f56b79"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a00032.html#a00351">_i2s_dma_handle</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#gad5afd6e182235d0625772c5a81f56b79">i2s_dma_handle_t</a></td></tr>
<tr class="memdesc:gad5afd6e182235d0625772c5a81f56b79"><td class="mdescLeft">&#160;</td><td class="mdescRight">Members not to be accessed / modified outside of the driver. <a href="#gad5afd6e182235d0625772c5a81f56b79">More...</a><br/></td></tr>
<tr class="separator:gad5afd6e182235d0625772c5a81f56b79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga73d546185a94e607e30be578d0261ebd"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#ga73d546185a94e607e30be578d0261ebd">i2s_dma_transfer_callback_t</a> )(I2S_Type *base, <a class="el" href="a00032.html#gad5afd6e182235d0625772c5a81f56b79">i2s_dma_handle_t</a> *handle, <a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> completionStatus, void *userData)</td></tr>
<tr class="memdesc:ga73d546185a94e607e30be578d0261ebd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback function invoked from DMA API on completion. <a href="#ga73d546185a94e607e30be578d0261ebd">More...</a><br/></td></tr>
<tr class="separator:ga73d546185a94e607e30be578d0261ebd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Driver version</h2></td></tr>
<tr class="memitem:ga2b305c0405773d74678809268100037f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#ga2b305c0405773d74678809268100037f">FSL_I2S_DMA_DRIVER_VERSION</a>&#160;&#160;&#160;(<a class="el" href="a00242.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2, 3, 2))</td></tr>
<tr class="memdesc:ga2b305c0405773d74678809268100037f"><td class="mdescLeft">&#160;</td><td class="mdescRight">I2S DMA driver version 2.3.2. <a href="#ga2b305c0405773d74678809268100037f">More...</a><br/></td></tr>
<tr class="separator:ga2b305c0405773d74678809268100037f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
DMA API</h2></td></tr>
<tr class="memitem:gab367abb21d0180a8327c3408efa06bd8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#gab367abb21d0180a8327c3408efa06bd8">I2S_TxTransferCreateHandleDMA</a> (I2S_Type *base, <a class="el" href="a00032.html#gad5afd6e182235d0625772c5a81f56b79">i2s_dma_handle_t</a> *handle, <a class="el" href="a00017.html#gac4a65788d7e5762d16a41a50b2cd7956">dma_handle_t</a> *dmaHandle, <a class="el" href="a00032.html#ga73d546185a94e607e30be578d0261ebd">i2s_dma_transfer_callback_t</a> callback, void *userData)</td></tr>
<tr class="memdesc:gab367abb21d0180a8327c3408efa06bd8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes handle for transfer of audio data. <a href="#gab367abb21d0180a8327c3408efa06bd8">More...</a><br/></td></tr>
<tr class="separator:gab367abb21d0180a8327c3408efa06bd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7f0ee69bcc210dc1519a99e2d9403e67"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#ga7f0ee69bcc210dc1519a99e2d9403e67">I2S_TxTransferSendDMA</a> (I2S_Type *base, <a class="el" href="a00032.html#gad5afd6e182235d0625772c5a81f56b79">i2s_dma_handle_t</a> *handle, <a class="el" href="a00031.html#ga954fbb10efcf6b2993c1d91706835605">i2s_transfer_t</a> transfer)</td></tr>
<tr class="memdesc:ga7f0ee69bcc210dc1519a99e2d9403e67"><td class="mdescLeft">&#160;</td><td class="mdescRight">Begins or queue sending of the given data. <a href="#ga7f0ee69bcc210dc1519a99e2d9403e67">More...</a><br/></td></tr>
<tr class="separator:ga7f0ee69bcc210dc1519a99e2d9403e67"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga59beaf115701e7b97ffd517a83e6b611"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#ga59beaf115701e7b97ffd517a83e6b611">I2S_TransferAbortDMA</a> (I2S_Type *base, <a class="el" href="a00032.html#gad5afd6e182235d0625772c5a81f56b79">i2s_dma_handle_t</a> *handle)</td></tr>
<tr class="memdesc:ga59beaf115701e7b97ffd517a83e6b611"><td class="mdescLeft">&#160;</td><td class="mdescRight">Aborts transfer of data. <a href="#ga59beaf115701e7b97ffd517a83e6b611">More...</a><br/></td></tr>
<tr class="separator:ga59beaf115701e7b97ffd517a83e6b611"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabf7c9bdafbd7e7aac4b265dace33f9e6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#gabf7c9bdafbd7e7aac4b265dace33f9e6">I2S_RxTransferCreateHandleDMA</a> (I2S_Type *base, <a class="el" href="a00032.html#gad5afd6e182235d0625772c5a81f56b79">i2s_dma_handle_t</a> *handle, <a class="el" href="a00017.html#gac4a65788d7e5762d16a41a50b2cd7956">dma_handle_t</a> *dmaHandle, <a class="el" href="a00032.html#ga73d546185a94e607e30be578d0261ebd">i2s_dma_transfer_callback_t</a> callback, void *userData)</td></tr>
<tr class="memdesc:gabf7c9bdafbd7e7aac4b265dace33f9e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes handle for reception of audio data. <a href="#gabf7c9bdafbd7e7aac4b265dace33f9e6">More...</a><br/></td></tr>
<tr class="separator:gabf7c9bdafbd7e7aac4b265dace33f9e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae8c0cacf997b6d4642c6c4e26dccf5aa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#gae8c0cacf997b6d4642c6c4e26dccf5aa">I2S_RxTransferReceiveDMA</a> (I2S_Type *base, <a class="el" href="a00032.html#gad5afd6e182235d0625772c5a81f56b79">i2s_dma_handle_t</a> *handle, <a class="el" href="a00031.html#ga954fbb10efcf6b2993c1d91706835605">i2s_transfer_t</a> transfer)</td></tr>
<tr class="memdesc:gae8c0cacf997b6d4642c6c4e26dccf5aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Begins or queue reception of data into given buffer. <a href="#gae8c0cacf997b6d4642c6c4e26dccf5aa">More...</a><br/></td></tr>
<tr class="separator:gae8c0cacf997b6d4642c6c4e26dccf5aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac9f82a576dc3a2d10df9cade5ce57a42"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#gac9f82a576dc3a2d10df9cade5ce57a42">I2S_DMACallback</a> (<a class="el" href="a00017.html#gac4a65788d7e5762d16a41a50b2cd7956">dma_handle_t</a> *handle, void *userData, bool transferDone, uint32_t tcds)</td></tr>
<tr class="memdesc:gac9f82a576dc3a2d10df9cade5ce57a42"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invoked from DMA interrupt handler. <a href="#gac9f82a576dc3a2d10df9cade5ce57a42">More...</a><br/></td></tr>
<tr class="separator:gac9f82a576dc3a2d10df9cade5ce57a42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf1fea3431c968b6a3c73217a99aaaaae"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#gaf1fea3431c968b6a3c73217a99aaaaae">I2S_TransferInstallLoopDMADescriptorMemory</a> (<a class="el" href="a00032.html#gad5afd6e182235d0625772c5a81f56b79">i2s_dma_handle_t</a> *handle, void *dmaDescriptorAddr, size_t dmaDescriptorNum)</td></tr>
<tr class="memdesc:gaf1fea3431c968b6a3c73217a99aaaaae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Install DMA descriptor memory for loop transfer only. <a href="#gaf1fea3431c968b6a3c73217a99aaaaae">More...</a><br/></td></tr>
<tr class="separator:gaf1fea3431c968b6a3c73217a99aaaaae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6f0cb7b25ee1bab1f52b586bec674132"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#ga6f0cb7b25ee1bab1f52b586bec674132">I2S_TransferSendLoopDMA</a> (I2S_Type *base, <a class="el" href="a00032.html#gad5afd6e182235d0625772c5a81f56b79">i2s_dma_handle_t</a> *handle, <a class="el" href="a00031.html#ga954fbb10efcf6b2993c1d91706835605">i2s_transfer_t</a> *xfer, uint32_t loopTransferCount)</td></tr>
<tr class="memdesc:ga6f0cb7b25ee1bab1f52b586bec674132"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send link transfer data using DMA. <a href="#ga6f0cb7b25ee1bab1f52b586bec674132">More...</a><br/></td></tr>
<tr class="separator:ga6f0cb7b25ee1bab1f52b586bec674132"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad46745926f6536c374e7c6610a5ccd57"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#gad46745926f6536c374e7c6610a5ccd57">I2S_TransferReceiveLoopDMA</a> (I2S_Type *base, <a class="el" href="a00032.html#gad5afd6e182235d0625772c5a81f56b79">i2s_dma_handle_t</a> *handle, <a class="el" href="a00031.html#ga954fbb10efcf6b2993c1d91706835605">i2s_transfer_t</a> *xfer, uint32_t loopTransferCount)</td></tr>
<tr class="memdesc:gad46745926f6536c374e7c6610a5ccd57"><td class="mdescLeft">&#160;</td><td class="mdescRight">Receive link transfer data using DMA. <a href="#gad46745926f6536c374e7c6610a5ccd57">More...</a><br/></td></tr>
<tr class="separator:gad46745926f6536c374e7c6610a5ccd57"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="a00351" id="a00351"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct _i2s_dma_handle</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"></div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a17d00023b1fabb5e99cfa168f17b3efd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17d00023b1fabb5e99cfa168f17b3efd"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#a17d00023b1fabb5e99cfa168f17b3efd">state</a></td></tr>
<tr class="memdesc:a17d00023b1fabb5e99cfa168f17b3efd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal state of I2S DMA transfer. <br/></td></tr>
<tr class="separator:a17d00023b1fabb5e99cfa168f17b3efd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a790b409c5a60fa51a000bc819b09ab5a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a790b409c5a60fa51a000bc819b09ab5a"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#a790b409c5a60fa51a000bc819b09ab5a">bytesPerFrame</a></td></tr>
<tr class="memdesc:a790b409c5a60fa51a000bc819b09ab5a"><td class="mdescLeft">&#160;</td><td class="mdescRight">bytes per frame <br/></td></tr>
<tr class="separator:a790b409c5a60fa51a000bc819b09ab5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afcfc9730ea220ee93cf7264b12bcc2fa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afcfc9730ea220ee93cf7264b12bcc2fa"></a>
<a class="el" href="a00032.html#ga73d546185a94e607e30be578d0261ebd">i2s_dma_transfer_callback_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#afcfc9730ea220ee93cf7264b12bcc2fa">completionCallback</a></td></tr>
<tr class="memdesc:afcfc9730ea220ee93cf7264b12bcc2fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback function pointer. <br/></td></tr>
<tr class="separator:afcfc9730ea220ee93cf7264b12bcc2fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a838d998124c8743c4186cbc5725bd2ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a838d998124c8743c4186cbc5725bd2ff"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#a838d998124c8743c4186cbc5725bd2ff">userData</a></td></tr>
<tr class="memdesc:a838d998124c8743c4186cbc5725bd2ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Application data passed to callback. <br/></td></tr>
<tr class="separator:a838d998124c8743c4186cbc5725bd2ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad31c0718f7fd0eb0ab810e3020eb729d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad31c0718f7fd0eb0ab810e3020eb729d"></a>
<a class="el" href="a00017.html#gac4a65788d7e5762d16a41a50b2cd7956">dma_handle_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#ad31c0718f7fd0eb0ab810e3020eb729d">dmaHandle</a></td></tr>
<tr class="memdesc:ad31c0718f7fd0eb0ab810e3020eb729d"><td class="mdescLeft">&#160;</td><td class="mdescRight">DMA handle. <br/></td></tr>
<tr class="separator:ad31c0718f7fd0eb0ab810e3020eb729d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98dbd3c24ea993ed361a7ea83d1a06fc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98dbd3c24ea993ed361a7ea83d1a06fc"></a>
volatile <a class="el" href="a00031.html#ga954fbb10efcf6b2993c1d91706835605">i2s_transfer_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#a98dbd3c24ea993ed361a7ea83d1a06fc">i2sQueue</a> [<a class="el" href="a00031.html#gae17f5f49178cc3ab239917f6454792d0">I2S_NUM_BUFFERS</a>]</td></tr>
<tr class="memdesc:a98dbd3c24ea993ed361a7ea83d1a06fc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transfer queue storing transfer buffers. <br/></td></tr>
<tr class="separator:a98dbd3c24ea993ed361a7ea83d1a06fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ff7371d3fc64868c09ffb5caa1ca925"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ff7371d3fc64868c09ffb5caa1ca925"></a>
volatile uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#a0ff7371d3fc64868c09ffb5caa1ca925">queueUser</a></td></tr>
<tr class="memdesc:a0ff7371d3fc64868c09ffb5caa1ca925"><td class="mdescLeft">&#160;</td><td class="mdescRight">Queue index where user's next transfer will be stored. <br/></td></tr>
<tr class="separator:a0ff7371d3fc64868c09ffb5caa1ca925"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74fec4e61c829cd0c592162536593890"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a74fec4e61c829cd0c592162536593890"></a>
volatile uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#a74fec4e61c829cd0c592162536593890">queueDriver</a></td></tr>
<tr class="memdesc:a74fec4e61c829cd0c592162536593890"><td class="mdescLeft">&#160;</td><td class="mdescRight">Queue index of buffer actually used by the driver. <br/></td></tr>
<tr class="separator:a74fec4e61c829cd0c592162536593890"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace8071982e8911f88477ce3ae6bf90a5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace8071982e8911f88477ce3ae6bf90a5"></a>
<a class="el" href="a00017.html#gadfd370cddb7a377234bcd18910ac65d6">dma_descriptor_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#ace8071982e8911f88477ce3ae6bf90a5">i2sLoopDMADescriptor</a></td></tr>
<tr class="memdesc:ace8071982e8911f88477ce3ae6bf90a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">descriptor pool pointer <br/></td></tr>
<tr class="separator:ace8071982e8911f88477ce3ae6bf90a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af75e205ba41de254e45850443192607e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af75e205ba41de254e45850443192607e"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#af75e205ba41de254e45850443192607e">i2sLoopDMADescriptorNum</a></td></tr>
<tr class="memdesc:af75e205ba41de254e45850443192607e"><td class="mdescLeft">&#160;</td><td class="mdescRight">number of descriptor in descriptors pool <br/></td></tr>
<tr class="separator:af75e205ba41de254e45850443192607e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga2b305c0405773d74678809268100037f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define FSL_I2S_DMA_DRIVER_VERSION&#160;&#160;&#160;(<a class="el" href="a00242.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2, 3, 2))</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="gad5afd6e182235d0625772c5a81f56b79"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="a00032.html#a00351">_i2s_dma_handle</a> <a class="el" href="a00032.html#gad5afd6e182235d0625772c5a81f56b79">i2s_dma_handle_t</a></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga73d546185a94e607e30be578d0261ebd"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef void(* i2s_dma_transfer_callback_t)(I2S_Type *base, <a class="el" href="a00032.html#gad5afd6e182235d0625772c5a81f56b79">i2s_dma_handle_t</a> *handle, <a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> completionStatus, void *userData)</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>I2S base pointer. </td></tr>
<tr><td class="paramname">handle</td><td>pointer to I2S transaction. </td></tr>
<tr><td class="paramname">completionStatus</td><td>status of the transaction. </td></tr>
<tr><td class="paramname">userData</td><td>optional pointer to user arguments data. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="gab367abb21d0180a8327c3408efa06bd8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void I2S_TxTransferCreateHandleDMA </td>
<td>(</td>
<td class="paramtype">I2S_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00032.html#gad5afd6e182235d0625772c5a81f56b79">i2s_dma_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00017.html#gac4a65788d7e5762d16a41a50b2cd7956">dma_handle_t</a> *&#160;</td>
<td class="paramname"><em>dmaHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00032.html#ga73d546185a94e607e30be578d0261ebd">i2s_dma_transfer_callback_t</a>&#160;</td>
<td class="paramname"><em>callback</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>userData</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>I2S base pointer. </td></tr>
<tr><td class="paramname">handle</td><td>pointer to handle structure. </td></tr>
<tr><td class="paramname">dmaHandle</td><td>pointer to dma handle structure. </td></tr>
<tr><td class="paramname">callback</td><td>function to be called back when transfer is done or fails. </td></tr>
<tr><td class="paramname">userData</td><td>pointer to data passed to callback. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga7f0ee69bcc210dc1519a99e2d9403e67"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> I2S_TxTransferSendDMA </td>
<td>(</td>
<td class="paramtype">I2S_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00032.html#gad5afd6e182235d0625772c5a81f56b79">i2s_dma_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00031.html#ga954fbb10efcf6b2993c1d91706835605">i2s_transfer_t</a>&#160;</td>
<td class="paramname"><em>transfer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>I2S base pointer. </td></tr>
<tr><td class="paramname">handle</td><td>pointer to handle structure. </td></tr>
<tr><td class="paramname">transfer</td><td>data buffer.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td></td></tr>
<tr><td class="paramname">kStatus_I2S_Busy</td><td>if all queue slots are occupied with unsent buffers. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga59beaf115701e7b97ffd517a83e6b611"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void I2S_TransferAbortDMA </td>
<td>(</td>
<td class="paramtype">I2S_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00032.html#gad5afd6e182235d0625772c5a81f56b79">i2s_dma_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>I2S base pointer. </td></tr>
<tr><td class="paramname">handle</td><td>pointer to handle structure. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gabf7c9bdafbd7e7aac4b265dace33f9e6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void I2S_RxTransferCreateHandleDMA </td>
<td>(</td>
<td class="paramtype">I2S_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00032.html#gad5afd6e182235d0625772c5a81f56b79">i2s_dma_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00017.html#gac4a65788d7e5762d16a41a50b2cd7956">dma_handle_t</a> *&#160;</td>
<td class="paramname"><em>dmaHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00032.html#ga73d546185a94e607e30be578d0261ebd">i2s_dma_transfer_callback_t</a>&#160;</td>
<td class="paramname"><em>callback</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>userData</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>I2S base pointer. </td></tr>
<tr><td class="paramname">handle</td><td>pointer to handle structure. </td></tr>
<tr><td class="paramname">dmaHandle</td><td>pointer to dma handle structure. </td></tr>
<tr><td class="paramname">callback</td><td>function to be called back when transfer is done or fails. </td></tr>
<tr><td class="paramname">userData</td><td>pointer to data passed to callback. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gae8c0cacf997b6d4642c6c4e26dccf5aa"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> I2S_RxTransferReceiveDMA </td>
<td>(</td>
<td class="paramtype">I2S_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00032.html#gad5afd6e182235d0625772c5a81f56b79">i2s_dma_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00031.html#ga954fbb10efcf6b2993c1d91706835605">i2s_transfer_t</a>&#160;</td>
<td class="paramname"><em>transfer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>I2S base pointer. </td></tr>
<tr><td class="paramname">handle</td><td>pointer to handle structure. </td></tr>
<tr><td class="paramname">transfer</td><td>data buffer.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td></td></tr>
<tr><td class="paramname">kStatus_I2S_Busy</td><td>if all queue slots are occupied with buffers which are not full. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac9f82a576dc3a2d10df9cade5ce57a42"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void I2S_DMACallback </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00017.html#gac4a65788d7e5762d16a41a50b2cd7956">dma_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>userData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>transferDone</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>tcds</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">handle</td><td>pointer to DMA handle structure. </td></tr>
<tr><td class="paramname">userData</td><td>argument for user callback. </td></tr>
<tr><td class="paramname">transferDone</td><td>if transfer was done. </td></tr>
<tr><td class="paramname">tcds</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaf1fea3431c968b6a3c73217a99aaaaae"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void I2S_TransferInstallLoopDMADescriptorMemory </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00032.html#gad5afd6e182235d0625772c5a81f56b79">i2s_dma_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>dmaDescriptorAddr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>dmaDescriptorNum</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function used to register DMA descriptor memory for the i2s loop dma transfer.</p>
<p>It must be callbed before I2S_TransferSendLoopDMA/I2S_TransferReceiveLoopDMA and after I2S_RxTransferCreateHandleDMA/I2S_TxTransferCreateHandleDMA.</p>
<p>User should be take care about the address of DMA descriptor pool which required align with 16BYTE at least.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">handle</td><td>Pointer to i2s DMA transfer handle. </td></tr>
<tr><td class="paramname">dmaDescriptorAddr</td><td>DMA descriptor start address. </td></tr>
<tr><td class="paramname">dmaDescriptorNum</td><td>DMA descriptor number. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga6f0cb7b25ee1bab1f52b586bec674132"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> I2S_TransferSendLoopDMA </td>
<td>(</td>
<td class="paramtype">I2S_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00032.html#gad5afd6e182235d0625772c5a81f56b79">i2s_dma_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00031.html#ga954fbb10efcf6b2993c1d91706835605">i2s_transfer_t</a> *&#160;</td>
<td class="paramname"><em>xfer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>loopTransferCount</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function receives data using DMA. This is a non-blocking function, which returns right away. When all data is received, the receive callback function is called.</p>
<p>This function support loop transfer, such as A-&gt;B-&gt;...-&gt;A, the loop transfer chain will be converted into a chain of descriptor and submit to dma. Application must be aware of that the more counts of the loop transfer, then more DMA descriptor memory required, user can use function I2S_InstallDMADescriptorMemory to register the dma descriptor memory.</p>
<p>As the DMA support maximum 1024 transfer count, so application must be aware of that this transfer function support maximum 1024 samples in each transfer, otherwise assert error or error status will be returned. Once the loop transfer start, application can use function I2S_TransferAbortDMA to stop the loop transfer.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>I2S peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>Pointer to usart_dma_handle_t structure. </td></tr>
<tr><td class="paramname">xfer</td><td>I2S DMA transfer structure. See <a class="el" href="a00031.html#ga954fbb10efcf6b2993c1d91706835605" title="Buffer to transfer from or receive audio data into. ">i2s_transfer_t</a>. </td></tr>
<tr><td class="paramname">loopTransferCount</td><td>loop count </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gad46745926f6536c374e7c6610a5ccd57"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> I2S_TransferReceiveLoopDMA </td>
<td>(</td>
<td class="paramtype">I2S_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00032.html#gad5afd6e182235d0625772c5a81f56b79">i2s_dma_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00031.html#ga954fbb10efcf6b2993c1d91706835605">i2s_transfer_t</a> *&#160;</td>
<td class="paramname"><em>xfer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>loopTransferCount</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function receives data using DMA. This is a non-blocking function, which returns right away. When all data is received, the receive callback function is called.</p>
<p>This function support loop transfer, such as A-&gt;B-&gt;...-&gt;A, the loop transfer chain will be converted into a chain of descriptor and submit to dma. Application must be aware of that the more counts of the loop transfer, then more DMA descriptor memory required, user can use function I2S_InstallDMADescriptorMemory to register the dma descriptor memory.</p>
<p>As the DMA support maximum 1024 transfer count, so application must be aware of that this transfer function support maximum 1024 samples in each transfer, otherwise assert error or error status will be returned. Once the loop transfer start, application can use function I2S_TransferAbortDMA to stop the loop transfer.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>I2S peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>Pointer to usart_dma_handle_t structure. </td></tr>
<tr><td class="paramname">xfer</td><td>I2S DMA transfer structure. See <a class="el" href="a00031.html#ga954fbb10efcf6b2993c1d91706835605" title="Buffer to transfer from or receive audio data into. ">i2s_transfer_t</a>. </td></tr>
<tr><td class="paramname">loopTransferCount</td><td>loop count </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.5-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul class="foot">
<li class="footer">&copy; 2016 NXP Semiconductors. All rights reserved.
</li>
</ul>
</div>
</body>
</html>