Files
2016-08-09 18:06:35 +02:00

767 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.6"/>
<title>Kinetis SDK v.2.0 API Reference Manual: SAI eDMA 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">Kinetis SDK v.2.0 API Reference Manual
&#160;<span id="projectnumber">Rev. 0</span>
</div>
<div id="projectbrief">Freescale Semiconductor, Inc.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<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('group__sai__edma.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="#files">Files</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#typedef-members">Typedefs</a> </div>
<div class="headertitle">
<div class="title">SAI eDMA Driver<div class="ingroups"><a class="el" href="group__sai.html">SAI: Serial Audio Interface</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="files"></a>
Files</h2></td></tr>
<tr class="memitem:fsl__sai__edma_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fsl__sai__edma_8h.html">fsl_sai_edma.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><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:struct__sai__edma__handle"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#struct__sai__edma__handle">sai_edma_handle_t</a></td></tr>
<tr class="memdesc:struct__sai__edma__handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">SAI DMA transfer handle, users should not touch the content of the handle. <a href="group__sai__edma.html#struct__sai__edma__handle">More...</a><br/></td></tr>
<tr class="separator:struct__sai__edma__handle"><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:gaeb6ca21880d8cd8f5f954d38bfa73d63"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaeb6ca21880d8cd8f5f954d38bfa73d63"></a>
typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#gaeb6ca21880d8cd8f5f954d38bfa73d63">sai_edma_callback_t</a> )(I2S_Type *base, sai_edma_handle_t *handle, status_t status, void *userData)</td></tr>
<tr class="memdesc:gaeb6ca21880d8cd8f5f954d38bfa73d63"><td class="mdescLeft">&#160;</td><td class="mdescRight">SAI eDMA transfer callback function for finish and error. <br/></td></tr>
<tr class="separator:gaeb6ca21880d8cd8f5f954d38bfa73d63"><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>
eDMA Transactional</h2></td></tr>
<tr class="memitem:gacde845394e3403abc75911f7925a947a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#gacde845394e3403abc75911f7925a947a">SAI_TransferTxCreateHandleEDMA</a> (I2S_Type *base, sai_edma_handle_t *handle, <a class="el" href="group__sai__edma.html#gaeb6ca21880d8cd8f5f954d38bfa73d63">sai_edma_callback_t</a> callback, void *userData, <a class="el" href="group__edma__driver.html#structedma__handle__t">edma_handle_t</a> *dmaHandle)</td></tr>
<tr class="memdesc:gacde845394e3403abc75911f7925a947a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the SAI eDMA handle. <a href="#gacde845394e3403abc75911f7925a947a">More...</a><br/></td></tr>
<tr class="separator:gacde845394e3403abc75911f7925a947a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1e342f962bb5578564e30aa577db20ca"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#ga1e342f962bb5578564e30aa577db20ca">SAI_TransferRxCreateHandleEDMA</a> (I2S_Type *base, sai_edma_handle_t *handle, <a class="el" href="group__sai__edma.html#gaeb6ca21880d8cd8f5f954d38bfa73d63">sai_edma_callback_t</a> callback, void *userData, <a class="el" href="group__edma__driver.html#structedma__handle__t">edma_handle_t</a> *dmaHandle)</td></tr>
<tr class="memdesc:ga1e342f962bb5578564e30aa577db20ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the SAI Rx eDMA handle. <a href="#ga1e342f962bb5578564e30aa577db20ca">More...</a><br/></td></tr>
<tr class="separator:ga1e342f962bb5578564e30aa577db20ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga78b693c7c4667056f74c4763f47c6e14"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#ga78b693c7c4667056f74c4763f47c6e14">SAI_TransferTxSetFormatEDMA</a> (I2S_Type *base, sai_edma_handle_t *handle, <a class="el" href="group__sai.html#structsai__transfer__format__t">sai_transfer_format_t</a> *format, uint32_t mclkSourceClockHz, uint32_t bclkSourceClockHz)</td></tr>
<tr class="memdesc:ga78b693c7c4667056f74c4763f47c6e14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configures the SAI Tx audio format. <a href="#ga78b693c7c4667056f74c4763f47c6e14">More...</a><br/></td></tr>
<tr class="separator:ga78b693c7c4667056f74c4763f47c6e14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga69b84d866cc9c5736780276c668df495"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#ga69b84d866cc9c5736780276c668df495">SAI_TransferRxSetFormatEDMA</a> (I2S_Type *base, sai_edma_handle_t *handle, <a class="el" href="group__sai.html#structsai__transfer__format__t">sai_transfer_format_t</a> *format, uint32_t mclkSourceClockHz, uint32_t bclkSourceClockHz)</td></tr>
<tr class="memdesc:ga69b84d866cc9c5736780276c668df495"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configures the SAI Rx audio format. <a href="#ga69b84d866cc9c5736780276c668df495">More...</a><br/></td></tr>
<tr class="separator:ga69b84d866cc9c5736780276c668df495"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7a2c125e1f975c9f718dcb820ac46f63"><td class="memItemLeft" align="right" valign="top">status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#ga7a2c125e1f975c9f718dcb820ac46f63">SAI_TransferSendEDMA</a> (I2S_Type *base, sai_edma_handle_t *handle, <a class="el" href="group__sai.html#structsai__transfer__t">sai_transfer_t</a> *xfer)</td></tr>
<tr class="memdesc:ga7a2c125e1f975c9f718dcb820ac46f63"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a non-blocking SAI transfer using DMA. <a href="#ga7a2c125e1f975c9f718dcb820ac46f63">More...</a><br/></td></tr>
<tr class="separator:ga7a2c125e1f975c9f718dcb820ac46f63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9060fb028d5a24d8763066981b079900"><td class="memItemLeft" align="right" valign="top">status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#ga9060fb028d5a24d8763066981b079900">SAI_TransferReceiveEDMA</a> (I2S_Type *base, sai_edma_handle_t *handle, <a class="el" href="group__sai.html#structsai__transfer__t">sai_transfer_t</a> *xfer)</td></tr>
<tr class="memdesc:ga9060fb028d5a24d8763066981b079900"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a non-blocking SAI receive using eDMA. <a href="#ga9060fb028d5a24d8763066981b079900">More...</a><br/></td></tr>
<tr class="separator:ga9060fb028d5a24d8763066981b079900"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga12925e07667cc1b27915aedd1f718a7a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#ga12925e07667cc1b27915aedd1f718a7a">SAI_TransferAbortSendEDMA</a> (I2S_Type *base, sai_edma_handle_t *handle)</td></tr>
<tr class="memdesc:ga12925e07667cc1b27915aedd1f718a7a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Aborts a SAI transfer using eDMA. <a href="#ga12925e07667cc1b27915aedd1f718a7a">More...</a><br/></td></tr>
<tr class="separator:ga12925e07667cc1b27915aedd1f718a7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3bd586da5f41126cbfa92d2baa03620b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#ga3bd586da5f41126cbfa92d2baa03620b">SAI_TransferAbortReceiveEDMA</a> (I2S_Type *base, sai_edma_handle_t *handle)</td></tr>
<tr class="memdesc:ga3bd586da5f41126cbfa92d2baa03620b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Aborts a SAI receive using eDMA. <a href="#ga3bd586da5f41126cbfa92d2baa03620b">More...</a><br/></td></tr>
<tr class="separator:ga3bd586da5f41126cbfa92d2baa03620b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga02aa0e441b0aada0f4875f28f832dc71"><td class="memItemLeft" align="right" valign="top">status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#ga02aa0e441b0aada0f4875f28f832dc71">SAI_TransferGetSendCountEDMA</a> (I2S_Type *base, sai_edma_handle_t *handle, size_t *count)</td></tr>
<tr class="memdesc:ga02aa0e441b0aada0f4875f28f832dc71"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets byte count sent by SAI. <a href="#ga02aa0e441b0aada0f4875f28f832dc71">More...</a><br/></td></tr>
<tr class="separator:ga02aa0e441b0aada0f4875f28f832dc71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae4a1100515e9a05bb61e0039288664a0"><td class="memItemLeft" align="right" valign="top">status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#gae4a1100515e9a05bb61e0039288664a0">SAI_TransferGetReceiveCountEDMA</a> (I2S_Type *base, sai_edma_handle_t *handle, size_t *count)</td></tr>
<tr class="memdesc:gae4a1100515e9a05bb61e0039288664a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets byte count received by SAI. <a href="#gae4a1100515e9a05bb61e0039288664a0">More...</a><br/></td></tr>
<tr class="separator:gae4a1100515e9a05bb61e0039288664a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="struct__sai__edma__handle" id="struct__sai__edma__handle"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct _sai_edma_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:ac754f63e6faf24815240a7677eb4a908"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac754f63e6faf24815240a7677eb4a908"></a>
<a class="el" href="group__edma__driver.html#structedma__handle__t">edma_handle_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#ac754f63e6faf24815240a7677eb4a908">dmaHandle</a></td></tr>
<tr class="memdesc:ac754f63e6faf24815240a7677eb4a908"><td class="mdescLeft">&#160;</td><td class="mdescRight">DMA handler for SAI send. <br/></td></tr>
<tr class="separator:ac754f63e6faf24815240a7677eb4a908"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a999a7493ad74199568fa0ae9a1daba82"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a999a7493ad74199568fa0ae9a1daba82"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#a999a7493ad74199568fa0ae9a1daba82">bytesPerFrame</a></td></tr>
<tr class="memdesc:a999a7493ad74199568fa0ae9a1daba82"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bytes in a frame. <br/></td></tr>
<tr class="separator:a999a7493ad74199568fa0ae9a1daba82"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2585391f7bbe7407bd405362ef9d9eb5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2585391f7bbe7407bd405362ef9d9eb5"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#a2585391f7bbe7407bd405362ef9d9eb5">channel</a></td></tr>
<tr class="memdesc:a2585391f7bbe7407bd405362ef9d9eb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Which data channel. <br/></td></tr>
<tr class="separator:a2585391f7bbe7407bd405362ef9d9eb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66e701d5eed6e4d80fbd8b042fb73fc3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66e701d5eed6e4d80fbd8b042fb73fc3"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#a66e701d5eed6e4d80fbd8b042fb73fc3">count</a></td></tr>
<tr class="memdesc:a66e701d5eed6e4d80fbd8b042fb73fc3"><td class="mdescLeft">&#160;</td><td class="mdescRight">The transfer data count in a DMA request. <br/></td></tr>
<tr class="separator:a66e701d5eed6e4d80fbd8b042fb73fc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6611961529129ff1165493033c5dc573"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6611961529129ff1165493033c5dc573"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#a6611961529129ff1165493033c5dc573">state</a></td></tr>
<tr class="memdesc:a6611961529129ff1165493033c5dc573"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal state for SAI eDMA transfer. <br/></td></tr>
<tr class="separator:a6611961529129ff1165493033c5dc573"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adde936fb4e2daa1753c841f3d52e2533"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adde936fb4e2daa1753c841f3d52e2533"></a>
<a class="el" href="group__sai__edma.html#gaeb6ca21880d8cd8f5f954d38bfa73d63">sai_edma_callback_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#adde936fb4e2daa1753c841f3d52e2533">callback</a></td></tr>
<tr class="memdesc:adde936fb4e2daa1753c841f3d52e2533"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback for users while transfer finish or error occurs. <br/></td></tr>
<tr class="separator:adde936fb4e2daa1753c841f3d52e2533"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8526618ff18f03496d39a9003a02d6a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8526618ff18f03496d39a9003a02d6a"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#af8526618ff18f03496d39a9003a02d6a">userData</a></td></tr>
<tr class="memdesc:af8526618ff18f03496d39a9003a02d6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">User callback parameter. <br/></td></tr>
<tr class="separator:af8526618ff18f03496d39a9003a02d6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a884f2a9de6029e84bf52c15a9a894bdb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__edma__driver.html#structedma__tcd__t">edma_tcd_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#a884f2a9de6029e84bf52c15a9a894bdb">tcd</a> [<a class="el" href="group__sai.html#ga580bf35fe1f08d7bb054bee399f8b085">SAI_XFER_QUEUE_SIZE</a>+1U]</td></tr>
<tr class="memdesc:a884f2a9de6029e84bf52c15a9a894bdb"><td class="mdescLeft">&#160;</td><td class="mdescRight">TCD pool for eDMA transfer. <a href="#a884f2a9de6029e84bf52c15a9a894bdb">More...</a><br/></td></tr>
<tr class="separator:a884f2a9de6029e84bf52c15a9a894bdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d5ec64db292ea91cacf543c6fe4f22b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__sai.html#structsai__transfer__t">sai_transfer_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#a8d5ec64db292ea91cacf543c6fe4f22b">saiQueue</a> [<a class="el" href="group__sai.html#ga580bf35fe1f08d7bb054bee399f8b085">SAI_XFER_QUEUE_SIZE</a>]</td></tr>
<tr class="memdesc:a8d5ec64db292ea91cacf543c6fe4f22b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transfer queue storing queued transfer. <a href="#a8d5ec64db292ea91cacf543c6fe4f22b">More...</a><br/></td></tr>
<tr class="separator:a8d5ec64db292ea91cacf543c6fe4f22b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28d0ac4b3b16fd68dfbb8ecf303397a3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28d0ac4b3b16fd68dfbb8ecf303397a3"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#a28d0ac4b3b16fd68dfbb8ecf303397a3">transferSize</a> [<a class="el" href="group__sai.html#ga580bf35fe1f08d7bb054bee399f8b085">SAI_XFER_QUEUE_SIZE</a>]</td></tr>
<tr class="memdesc:a28d0ac4b3b16fd68dfbb8ecf303397a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Data bytes need to transfer. <br/></td></tr>
<tr class="separator:a28d0ac4b3b16fd68dfbb8ecf303397a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a13a45007eebf06db42ed42bb83ee3dbd"><td class="memItemLeft" align="right" valign="top">volatile uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#a13a45007eebf06db42ed42bb83ee3dbd">queueUser</a></td></tr>
<tr class="memdesc:a13a45007eebf06db42ed42bb83ee3dbd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Index for user to queue transfer. <a href="#a13a45007eebf06db42ed42bb83ee3dbd">More...</a><br/></td></tr>
<tr class="separator:a13a45007eebf06db42ed42bb83ee3dbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a969d922d9b8b82ac4fee2d9bb63b6a5a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a969d922d9b8b82ac4fee2d9bb63b6a5a"></a>
volatile uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html#a969d922d9b8b82ac4fee2d9bb63b6a5a">queueDriver</a></td></tr>
<tr class="memdesc:a969d922d9b8b82ac4fee2d9bb63b6a5a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Index for driver to get the transfer data and size. <br/></td></tr>
<tr class="separator:a969d922d9b8b82ac4fee2d9bb63b6a5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="a884f2a9de6029e84bf52c15a9a894bdb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__edma__driver.html#structedma__tcd__t">edma_tcd_t</a> sai_edma_handle_t::tcd[<a class="el" href="group__sai.html#ga580bf35fe1f08d7bb054bee399f8b085">SAI_XFER_QUEUE_SIZE</a>+1U]</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a8d5ec64db292ea91cacf543c6fe4f22b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__sai.html#structsai__transfer__t">sai_transfer_t</a> sai_edma_handle_t::saiQueue[<a class="el" href="group__sai.html#ga580bf35fe1f08d7bb054bee399f8b085">SAI_XFER_QUEUE_SIZE</a>]</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a13a45007eebf06db42ed42bb83ee3dbd"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">volatile uint8_t sai_edma_handle_t::queueUser</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="gacde845394e3403abc75911f7925a947a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_TransferTxCreateHandleEDMA </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">sai_edma_handle_t *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__sai__edma.html#gaeb6ca21880d8cd8f5f954d38bfa73d63">sai_edma_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>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__edma__driver.html#structedma__handle__t">edma_handle_t</a> *&#160;</td>
<td class="paramname"><em>dmaHandle</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function initializes the SAI master DMA handle, which can be used for other SAI master transactional APIs. Usually, for a specified SAI instance, call this API once to get the initialized handle.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SAI base pointer. </td></tr>
<tr><td class="paramname">handle</td><td>SAI eDMA handle pointer. </td></tr>
<tr><td class="paramname">base</td><td>SAI peripheral base address. </td></tr>
<tr><td class="paramname">callback</td><td>Pointer to user callback function. </td></tr>
<tr><td class="paramname">userData</td><td>User parameter passed to the callback function. </td></tr>
<tr><td class="paramname">dmaHandle</td><td>eDMA handle pointer, this handle shall be static allocated by users. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga1e342f962bb5578564e30aa577db20ca"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_TransferRxCreateHandleEDMA </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">sai_edma_handle_t *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__sai__edma.html#gaeb6ca21880d8cd8f5f954d38bfa73d63">sai_edma_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>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__edma__driver.html#structedma__handle__t">edma_handle_t</a> *&#160;</td>
<td class="paramname"><em>dmaHandle</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function initializes the SAI slave DMA handle, which can be used for other SAI master transactional APIs. Usually, for a specified SAI instance, call this API once to get the initialized handle.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SAI base pointer. </td></tr>
<tr><td class="paramname">handle</td><td>SAI eDMA handle pointer. </td></tr>
<tr><td class="paramname">base</td><td>SAI peripheral base address. </td></tr>
<tr><td class="paramname">callback</td><td>Pointer to user callback function. </td></tr>
<tr><td class="paramname">userData</td><td>User parameter passed to the callback function. </td></tr>
<tr><td class="paramname">dmaHandle</td><td>eDMA handle pointer, this handle shall be static allocated by users. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga78b693c7c4667056f74c4763f47c6e14"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_TransferTxSetFormatEDMA </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">sai_edma_handle_t *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__sai.html#structsai__transfer__format__t">sai_transfer_format_t</a> *&#160;</td>
<td class="paramname"><em>format</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>mclkSourceClockHz</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>bclkSourceClockHz</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The audio format can be changed at run-time. This function configures the sample rate and audio data format to be transferred. This function also sets the eDMA parameter according to formatting requirements.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SAI base pointer. </td></tr>
<tr><td class="paramname">handle</td><td>SAI eDMA handle pointer. </td></tr>
<tr><td class="paramname">format</td><td>Pointer to SAI audio data format structure. </td></tr>
<tr><td class="paramname">mclkSourceClockHz</td><td>SAI master clock source frequency in Hz. </td></tr>
<tr><td class="paramname">bclkSourceClockHz</td><td>SAI bit clock source frequency in Hz. If bit clock source is master clock, this value should equals to masterClockHz in format. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td>Audio format set successfully. </td></tr>
<tr><td class="paramname">kStatus_InvalidArgument</td><td>The input argument is invalid. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga69b84d866cc9c5736780276c668df495"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_TransferRxSetFormatEDMA </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">sai_edma_handle_t *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__sai.html#structsai__transfer__format__t">sai_transfer_format_t</a> *&#160;</td>
<td class="paramname"><em>format</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>mclkSourceClockHz</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>bclkSourceClockHz</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The audio format can be changed at run-time. This function configures the sample rate and audio data format to be transferred. This function also sets the eDMA parameter according to formatting requirements.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SAI base pointer. </td></tr>
<tr><td class="paramname">handle</td><td>SAI eDMA handle pointer. </td></tr>
<tr><td class="paramname">format</td><td>Pointer to SAI audio data format structure. </td></tr>
<tr><td class="paramname">mclkSourceClockHz</td><td>SAI master clock source frequency in Hz. </td></tr>
<tr><td class="paramname">bclkSourceClockHz</td><td>SAI bit clock source frequency in Hz. If a bit clock source is the master clock, this value should equal to masterClockHz in format. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td>Audio format set successfully. </td></tr>
<tr><td class="paramname">kStatus_InvalidArgument</td><td>The input argument is invalid. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga7a2c125e1f975c9f718dcb820ac46f63"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">status_t SAI_TransferSendEDMA </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">sai_edma_handle_t *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__sai.html#structsai__transfer__t">sai_transfer_t</a> *&#160;</td>
<td class="paramname"><em>xfer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>This interface returns immediately after the transfer initiates. Call SAI_GetTransferStatus to poll the transfer status and check whether the SAI transfer is finished.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SAI base pointer. </td></tr>
<tr><td class="paramname">handle</td><td>SAI eDMA handle pointer. </td></tr>
<tr><td class="paramname">xfer</td><td>Pointer to the DMA transfer structure. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td>Start a SAI eDMA send successfully. </td></tr>
<tr><td class="paramname">kStatus_InvalidArgument</td><td>The input argument is invalid. </td></tr>
<tr><td class="paramname">kStatus_TxBusy</td><td>SAI is busy sending data. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga9060fb028d5a24d8763066981b079900"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">status_t SAI_TransferReceiveEDMA </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">sai_edma_handle_t *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__sai.html#structsai__transfer__t">sai_transfer_t</a> *&#160;</td>
<td class="paramname"><em>xfer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>This interface returns immediately after the transfer initiates. Call the SAI_GetReceiveRemainingBytes to poll the transfer status and check whether the SAI transfer is finished.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SAI base pointer </td></tr>
<tr><td class="paramname">handle</td><td>SAI eDMA handle pointer. </td></tr>
<tr><td class="paramname">xfer</td><td>Pointer to DMA transfer structure. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td>Start a SAI eDMA receive successfully. </td></tr>
<tr><td class="paramname">kStatus_InvalidArgument</td><td>The input argument is invalid. </td></tr>
<tr><td class="paramname">kStatus_RxBusy</td><td>SAI is busy receiving data. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga12925e07667cc1b27915aedd1f718a7a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_TransferAbortSendEDMA </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">sai_edma_handle_t *&#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>SAI base pointer. </td></tr>
<tr><td class="paramname">handle</td><td>SAI eDMA handle pointer. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga3bd586da5f41126cbfa92d2baa03620b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_TransferAbortReceiveEDMA </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">sai_edma_handle_t *&#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>SAI base pointer </td></tr>
<tr><td class="paramname">handle</td><td>SAI eDMA handle pointer. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga02aa0e441b0aada0f4875f28f832dc71"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">status_t SAI_TransferGetSendCountEDMA </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">sai_edma_handle_t *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t *&#160;</td>
<td class="paramname"><em>count</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>SAI base pointer. </td></tr>
<tr><td class="paramname">handle</td><td>SAI eDMA handle pointer. </td></tr>
<tr><td class="paramname">count</td><td>Bytes count sent by SAI. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td>Succeed get the transfer count. </td></tr>
<tr><td class="paramname">kStatus_NoTransferInProgress</td><td>There is no non-blocking transaction in progress. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gae4a1100515e9a05bb61e0039288664a0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">status_t SAI_TransferGetReceiveCountEDMA </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">sai_edma_handle_t *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t *&#160;</td>
<td class="paramname"><em>count</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>SAI base pointer </td></tr>
<tr><td class="paramname">handle</td><td>SAI eDMA handle pointer. </td></tr>
<tr><td class="paramname">count</td><td>Bytes count received by SAI. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td>Succeed get the transfer count. </td></tr>
<tr><td class="paramname">kStatus_NoTransferInProgress</td><td>There is no non-blocking transaction in progress. </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>