Files
KSDK_2.0_MKL03Z8xxx4/docs/Kinetis SDK API Reference Manual MKL03Z4_v2.0.0/group__sai.html
2016-08-09 18:02:18 +02:00

2739 lines
153 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>Kinetis SDK v.2.0 API Reference Manual: SAI: Serial Audio Interface</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">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('group__sai.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="#groups">Modules</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> </div>
<div class="headertitle">
<div class="title">SAI: Serial Audio Interface</div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<p>The KSDK provides a peripheral driver for the Serial Audio Interface (SAI) module of Kinetis devices.</p>
<p>SAI driver includes functional APIs and transactional APIs.</p>
<p>Functional APIs are feature/property target low-level APIs. Functional APIs can be used for SAI initialization/configuration/operation for optimization/customization purpose. Using the functional API requires the knowledge of the SAI peripheral and how to organize functional APIs to meet the application requirements. All functional API use the peripheral base address as the first parameter. SAI functional operation groups provide the functional API set.</p>
<p>Transactional APIs are transaction target high-level APIs. Transactional APIs can be used to enable the peripheral and in the application if the code size and performance of transactional APIs satisfy the requirements. If the code size and performance are a critical requirement, see the transactional API implementation and write a custom code. All transactional APIs use the sai_handle_t as the first parameter. Initialize the handle by calling the <a class="el" href="group__sai.html#ga69eaf09522d88c69b47ec104c11875de" title="Initializes the SAI Tx handle. ">SAI_TransferTxCreateHandle()</a> or <a class="el" href="group__sai.html#ga4c29a38ae0802fa81e304eee337ecf6b" title="Initializes the SAI Rx handle. ">SAI_TransferRxCreateHandle()</a> API.</p>
<p>Transactional APIs support asynchronous transfer. This means that the functions <a class="el" href="group__sai.html#gaefe0557861a223913d7b1d8959a56995" title="Performs an interrupt non-blocking send transfer on SAI. ">SAI_TransferSendNonBlocking()</a> and SAI_TransfferReceiveNonBlocking() set up the interrupt for data transfer. When the transfer completes, the upper layer is notified through a callback function with the kStatus_SAI_TxIdle and kStatus_SAI_RxIdle status.</p>
<h1><a class="anchor" id="SAICase"></a>
Typical use case</h1>
<h2><a class="anchor" id="SAICaseInterrupt"></a>
SAI Send/Receive using an interrupt method</h2>
<div class="fragment"><div class="line">sai_handle_t g_saiTxHandle;</div>
<div class="line"><a class="code" href="group__sai.html#structsai__config__t">sai_config_t</a> user_config;</div>
<div class="line"><a class="code" href="group__sai.html#structsai__transfer__t">sai_transfer_t</a> sendXfer;</div>
<div class="line"><span class="keyword">volatile</span> <span class="keywordtype">bool</span> txFinished;</div>
<div class="line"><span class="keyword">volatile</span> <span class="keywordtype">bool</span> rxFinished;</div>
<div class="line"><span class="keyword">const</span> uint8_t sendData[] = [......];</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> SAI_UserCallback(sai_handle_t *handle, status_t status, <span class="keywordtype">void</span> *userData)</div>
<div class="line">{</div>
<div class="line"> userData = userData;</div>
<div class="line"></div>
<div class="line"> <span class="keywordflow">if</span> (<a class="code" href="group__sai.html#gga143ecba4f3b3e833be0c38baeab02330a2a58fb377508baa31df58beb5f406761">kStatus_SAI_TxIdle</a> == status)</div>
<div class="line"> {</div>
<div class="line"> txFinished = <span class="keyword">true</span>;</div>
<div class="line"> }</div>
<div class="line">}</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> main(<span class="keywordtype">void</span>)</div>
<div class="line">{</div>
<div class="line"> <span class="comment">//...</span></div>
<div class="line"></div>
<div class="line"> <a class="code" href="group__sai.html#gacea3121e96a50e2ceb2dee437aac8c56">SAI_TxGetDefaultConfig</a>(&amp;user_config);</div>
<div class="line"></div>
<div class="line"> <a class="code" href="group__sai.html#gae30b99a76b3189b36d19cff113a42fdf">SAI_TxInit</a>(SAI0, &amp;user_config);</div>
<div class="line"> <a class="code" href="group__sai.html#ga69eaf09522d88c69b47ec104c11875de">SAI_TransferTxCreateHandle</a>(SAI0, &amp;g_saiHandle, SAI_UserCallback, NULL);</div>
<div class="line"></div>
<div class="line"> <span class="comment">//Configure sai format</span></div>
<div class="line"> SAI_TransferTxSetTransferFormat(SAI0, &amp;g_saiHandle, mclkSource, mclk);</div>
<div class="line"></div>
<div class="line"> <span class="comment">// Prepare to send.</span></div>
<div class="line"> sendXfer.<a class="code" href="group__sai.html#a5a8e66b73932caa8eaf99df59127e389">data</a> = sendData</div>
<div class="line"> sendXfer.<a class="code" href="group__sai.html#a9518c75eb06dadc3b73f44ee49f4e0ff">dataSize</a> = <span class="keyword">sizeof</span>(sendData)/<span class="keyword">sizeof</span>(sendData[0]);</div>
<div class="line"> txFinished = <span class="keyword">false</span>;</div>
<div class="line"></div>
<div class="line"> <span class="comment">// Send out.</span></div>
<div class="line"> <a class="code" href="group__sai.html#gaefe0557861a223913d7b1d8959a56995">SAI_TransferSendNonBlocking</a>(SAI0, &amp;g_saiHandle, &amp;sendXfer);</div>
<div class="line"></div>
<div class="line"> <span class="comment">// Wait send finished.</span></div>
<div class="line"> <span class="keywordflow">while</span> (!txFinished)</div>
<div class="line"> {</div>
<div class="line"> }</div>
<div class="line"></div>
<div class="line"> <span class="comment">// ...</span></div>
<div class="line">}</div>
</div><!-- fragment --><h2><a class="anchor" id="SAICaseDma"></a>
SAI Send/receive using a DMA method</h2>
<div class="fragment"><div class="line">sai_handle_t g_saiHandle;</div>
<div class="line"><a class="code" href="group__dma.html#structdma__handle__t">dma_handle_t</a> g_saiTxDmaHandle;</div>
<div class="line"><a class="code" href="group__dma.html#structdma__handle__t">dma_handle_t</a> g_saiRxDmaHandle;</div>
<div class="line"><a class="code" href="group__sai.html#structsai__config__t">sai_config_t</a> user_config;</div>
<div class="line"><a class="code" href="group__sai.html#structsai__transfer__t">sai_transfer_t</a> sendXfer;</div>
<div class="line"><span class="keyword">volatile</span> <span class="keywordtype">bool</span> txFinished;</div>
<div class="line">uint8_t sendData[] = ...;</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> SAI_UserCallback(sai_handle_t *handle, status_t status, <span class="keywordtype">void</span> *userData)</div>
<div class="line">{</div>
<div class="line"> userData = userData;</div>
<div class="line"></div>
<div class="line"> <span class="keywordflow">if</span> (<a class="code" href="group__sai.html#gga143ecba4f3b3e833be0c38baeab02330a2a58fb377508baa31df58beb5f406761">kStatus_SAI_TxIdle</a> == status)</div>
<div class="line"> {</div>
<div class="line"> txFinished = <span class="keyword">true</span>;</div>
<div class="line"> }</div>
<div class="line">}</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> main(<span class="keywordtype">void</span>)</div>
<div class="line">{</div>
<div class="line"> <span class="comment">//...</span></div>
<div class="line"></div>
<div class="line"> <a class="code" href="group__sai.html#gacea3121e96a50e2ceb2dee437aac8c56">SAI_TxGetDefaultConfig</a>(&amp;user_config);</div>
<div class="line"> <a class="code" href="group__sai.html#gae30b99a76b3189b36d19cff113a42fdf">SAI_TxInit</a>(SAI0, &amp;user_config);</div>
<div class="line"></div>
<div class="line"> <span class="comment">// Sets up the DMA.</span></div>
<div class="line"> <a class="code" href="group__dmamux.html#ga850545ac61a004df8ca312db2ca9db73">DMAMUX_Init</a>(DMAMUX0);</div>
<div class="line"> <a class="code" href="group__dmamux.html#ga97083a74f4af599de628cdd8864d6676">DMAMUX_SetSource</a>(DMAMUX0, SAI_TX_DMA_CHANNEL, SAI_TX_DMA_REQUEST);</div>
<div class="line"> <a class="code" href="group__dmamux.html#gaecac68802d961c31a06389caa97387f5">DMAMUX_EnableChannel</a>(DMAMUX0, SAI_TX_DMA_CHANNEL);</div>
<div class="line"></div>
<div class="line"> <a class="code" href="group__dma.html#gade1b5efa61054ce538b37b181dd075bb">DMA_Init</a>(DMA0);</div>
<div class="line"></div>
<div class="line"> <span class="comment">/* Creates the DMA handle. */</span></div>
<div class="line"> <a class="code" href="group__dma.html#ga5354ff2c0c1ec53e2cbd712169fc5558">DMA_CreateHandle</a>(&amp;g_saiTxDmaHandle, DMA0, SAI_TX_DMA_CHANNEL);</div>
<div class="line"></div>
<div class="line"> <a class="code" href="group__sai__dma.html#ga45cf3cd4ef66df0390955bd973c1c08c">SAI_TransferTxCreateHandleDMA</a>(SAI0, &amp;g_saiTxDmaHandle, SAI_UserCallback, NULL);</div>
<div class="line"></div>
<div class="line"> <span class="comment">// Prepares to send.</span></div>
<div class="line"> sendXfer.<a class="code" href="group__sai.html#a5a8e66b73932caa8eaf99df59127e389">data</a> = sendData</div>
<div class="line"> sendXfer.<a class="code" href="group__sai.html#a9518c75eb06dadc3b73f44ee49f4e0ff">dataSize</a> = <span class="keyword">sizeof</span>(sendData)/<span class="keyword">sizeof</span>(sendData[0]);</div>
<div class="line"> txFinished = <span class="keyword">false</span>;</div>
<div class="line"></div>
<div class="line"> <span class="comment">// Sends out.</span></div>
<div class="line"> <a class="code" href="group__sai__dma.html#ga4674905418214220bf6f140db196d0a2">SAI_TransferSendDMA</a>(&amp;g_saiHandle, &amp;sendXfer);</div>
<div class="line"></div>
<div class="line"> <span class="comment">// Waits for send to complete.</span></div>
<div class="line"> <span class="keywordflow">while</span> (!txFinished)</div>
<div class="line"> {</div>
<div class="line"> }</div>
<div class="line"></div>
<div class="line"> <span class="comment">// ...</span></div>
<div class="line">}</div>
</div><!-- fragment --> <table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
Modules</h2></td></tr>
<tr class="memitem:group__sai__dma"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__dma.html">SAI DMA Driver</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__sai__edma"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai__edma.html">SAI eDMA Driver</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:structsai__config__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#structsai__config__t">sai_config_t</a></td></tr>
<tr class="memdesc:structsai__config__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">SAI user configuration structure. <a href="group__sai.html#structsai__config__t">More...</a><br/></td></tr>
<tr class="separator:structsai__config__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structsai__transfer__format__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#structsai__transfer__format__t">sai_transfer_format_t</a></td></tr>
<tr class="memdesc:structsai__transfer__format__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">sai transfer format <a href="group__sai.html#structsai__transfer__format__t">More...</a><br/></td></tr>
<tr class="separator:structsai__transfer__format__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structsai__transfer__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#structsai__transfer__t">sai_transfer_t</a></td></tr>
<tr class="memdesc:structsai__transfer__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">SAI transfer structure. <a href="group__sai.html#structsai__transfer__t">More...</a><br/></td></tr>
<tr class="separator:structsai__transfer__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:struct__sai__handle"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#struct__sai__handle">sai_handle_t</a></td></tr>
<tr class="memdesc:struct__sai__handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">SAI handle structure. <a href="group__sai.html#struct__sai__handle">More...</a><br/></td></tr>
<tr class="separator:struct__sai__handle"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga580bf35fe1f08d7bb054bee399f8b085"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga580bf35fe1f08d7bb054bee399f8b085">SAI_XFER_QUEUE_SIZE</a>&#160;&#160;&#160;(4)</td></tr>
<tr class="memdesc:ga580bf35fe1f08d7bb054bee399f8b085"><td class="mdescLeft">&#160;</td><td class="mdescRight">SAI transfer queue size, user can refine it according to use case. <a href="#ga580bf35fe1f08d7bb054bee399f8b085">More...</a><br/></td></tr>
<tr class="separator:ga580bf35fe1f08d7bb054bee399f8b085"><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:gacda077e13dd34cd0fa1e865354591fe2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacda077e13dd34cd0fa1e865354591fe2"></a>
typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gacda077e13dd34cd0fa1e865354591fe2">sai_transfer_callback_t</a> )(I2S_Type *base, sai_handle_t *handle, status_t status, void *userData)</td></tr>
<tr class="memdesc:gacda077e13dd34cd0fa1e865354591fe2"><td class="mdescLeft">&#160;</td><td class="mdescRight">SAI transfer callback prototype. <br/></td></tr>
<tr class="separator:gacda077e13dd34cd0fa1e865354591fe2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga143ecba4f3b3e833be0c38baeab02330"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga143ecba4f3b3e833be0c38baeab02330">_sai_status_t</a> { <br/>
&#160;&#160;<a class="el" href="group__sai.html#gga143ecba4f3b3e833be0c38baeab02330ae095b9b1a3ec7b998d722b1e1d73ca44">kStatus_SAI_TxBusy</a> = MAKE_STATUS(kStatusGroup_SAI, 0),
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga143ecba4f3b3e833be0c38baeab02330a8e432517b16b5784a72a95e0caf7bb4a">kStatus_SAI_RxBusy</a> = MAKE_STATUS(kStatusGroup_SAI, 1),
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga143ecba4f3b3e833be0c38baeab02330a5f17818e41e2fb07e35e43e1a03bfeb9">kStatus_SAI_TxError</a> = MAKE_STATUS(kStatusGroup_SAI, 2),
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga143ecba4f3b3e833be0c38baeab02330a0d8c8cec03abcd722d2ec4358451461c">kStatus_SAI_RxError</a> = MAKE_STATUS(kStatusGroup_SAI, 3),
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga143ecba4f3b3e833be0c38baeab02330a19680647d09a7437afd6b6ae7013095e">kStatus_SAI_QueueFull</a> = MAKE_STATUS(kStatusGroup_SAI, 4),
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga143ecba4f3b3e833be0c38baeab02330a2a58fb377508baa31df58beb5f406761">kStatus_SAI_TxIdle</a> = MAKE_STATUS(kStatusGroup_SAI, 5),
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga143ecba4f3b3e833be0c38baeab02330a0f398d330abd6df4255be13d39968e1d">kStatus_SAI_RxIdle</a> = MAKE_STATUS(kStatusGroup_SAI, 6)
<br/>
}</td></tr>
<tr class="memdesc:ga143ecba4f3b3e833be0c38baeab02330"><td class="mdescLeft">&#160;</td><td class="mdescRight">SAI return status. <a href="group__sai.html#ga143ecba4f3b3e833be0c38baeab02330">More...</a><br/></td></tr>
<tr class="separator:ga143ecba4f3b3e833be0c38baeab02330"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad13dff47e2ed5ce5d8eae47df8ac8e0f"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gad13dff47e2ed5ce5d8eae47df8ac8e0f">sai_protocol_t</a> { <br/>
&#160;&#160;<a class="el" href="group__sai.html#ggad13dff47e2ed5ce5d8eae47df8ac8e0fa5c6ddb713e2ebd5e243d5d8156869baf">kSAI_BusLeftJustified</a> = 0x0U,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#ggad13dff47e2ed5ce5d8eae47df8ac8e0faebff095e8a510ada79aab2c90df6c4ef">kSAI_BusRightJustified</a>,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#ggad13dff47e2ed5ce5d8eae47df8ac8e0fa67d163f59267b3c6f6dfb731de711197">kSAI_BusI2S</a>,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#ggad13dff47e2ed5ce5d8eae47df8ac8e0fa1a4da830cfb4f08554a690de65d2870f">kSAI_BusPCMA</a>,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#ggad13dff47e2ed5ce5d8eae47df8ac8e0fa6b5e627cbe3644cf561eb0997699aefe">kSAI_BusPCMB</a>
<br/>
}</td></tr>
<tr class="memdesc:gad13dff47e2ed5ce5d8eae47df8ac8e0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define the SAI bus type. <a href="group__sai.html#gad13dff47e2ed5ce5d8eae47df8ac8e0f">More...</a><br/></td></tr>
<tr class="separator:gad13dff47e2ed5ce5d8eae47df8ac8e0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa968c964aac0ab72a6957d89cb7b5bb0"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gaa968c964aac0ab72a6957d89cb7b5bb0">sai_master_slave_t</a> { <br/>
&#160;&#160;<a class="el" href="group__sai.html#ggaa968c964aac0ab72a6957d89cb7b5bb0ace27a481cd1aee827602f2997e9e9d24">kSAI_Master</a> = 0x0U,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#ggaa968c964aac0ab72a6957d89cb7b5bb0afc74ad2cca556b75857bfcb3c2f754b3">kSAI_Slave</a> = 0x1U
<br/>
}</td></tr>
<tr class="memdesc:gaa968c964aac0ab72a6957d89cb7b5bb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Master or slave mode. <a href="group__sai.html#gaa968c964aac0ab72a6957d89cb7b5bb0">More...</a><br/></td></tr>
<tr class="separator:gaa968c964aac0ab72a6957d89cb7b5bb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga23ffdf03cf1409d3385f3ead175a97c4"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga23ffdf03cf1409d3385f3ead175a97c4">sai_mono_stereo_t</a> { <br/>
&#160;&#160;<a class="el" href="group__sai.html#gga23ffdf03cf1409d3385f3ead175a97c4a68780a0cf179c054ccccdd0d57fb780e">kSAI_Stereo</a> = 0x0U,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga23ffdf03cf1409d3385f3ead175a97c4a06bf33c6e548abd3cd5136b4e8d7bd29">kSAI_MonoLeft</a>,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga23ffdf03cf1409d3385f3ead175a97c4a2763e95289b6d3f7015cba718964580b">kSAI_MonoRight</a>
<br/>
}</td></tr>
<tr class="memdesc:ga23ffdf03cf1409d3385f3ead175a97c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mono or stereo audio format. <a href="group__sai.html#ga23ffdf03cf1409d3385f3ead175a97c4">More...</a><br/></td></tr>
<tr class="separator:ga23ffdf03cf1409d3385f3ead175a97c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga88390dba856027f775cac9e6f6ecbc17"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga88390dba856027f775cac9e6f6ecbc17">sai_sync_mode_t</a> { <br/>
&#160;&#160;<a class="el" href="group__sai.html#gga88390dba856027f775cac9e6f6ecbc17a1eedfe4039fefc137958a911f67840c1">kSAI_ModeAsync</a> = 0x0U,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga88390dba856027f775cac9e6f6ecbc17a8a39fe8640d0a3a2de851e41bc3ebbdd">kSAI_ModeSync</a>,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga88390dba856027f775cac9e6f6ecbc17a87f5fdf3addd5b7dcb91d6bca043a791">kSAI_ModeSyncWithOtherTx</a>,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga88390dba856027f775cac9e6f6ecbc17ac3992e47e86faa518c9b1b26da64aa5c">kSAI_ModeSyncWithOtherRx</a>
<br/>
}</td></tr>
<tr class="memdesc:ga88390dba856027f775cac9e6f6ecbc17"><td class="mdescLeft">&#160;</td><td class="mdescRight">Synchronous or asynchronous mode. <a href="group__sai.html#ga88390dba856027f775cac9e6f6ecbc17">More...</a><br/></td></tr>
<tr class="separator:ga88390dba856027f775cac9e6f6ecbc17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad4559fc57adfd1eb3596f03d9012e5ae"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gad4559fc57adfd1eb3596f03d9012e5ae">sai_mclk_source_t</a> { <br/>
&#160;&#160;<a class="el" href="group__sai.html#ggad4559fc57adfd1eb3596f03d9012e5aeaa996ab18c8b18160b7b70b7b23eecb8d">kSAI_MclkSourceSysclk</a> = 0x0U,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#ggad4559fc57adfd1eb3596f03d9012e5aeac5a9692e8334ad2542c5a9221704ac22">kSAI_MclkSourceSelect1</a>,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#ggad4559fc57adfd1eb3596f03d9012e5aea18d79884e3de46ce85e46560ac84e04c">kSAI_MclkSourceSelect2</a>,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#ggad4559fc57adfd1eb3596f03d9012e5aea148502f7a9db92e579c19cb0d78db2cf">kSAI_MclkSourceSelect3</a>
<br/>
}</td></tr>
<tr class="memdesc:gad4559fc57adfd1eb3596f03d9012e5ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mater clock source. <a href="group__sai.html#gad4559fc57adfd1eb3596f03d9012e5ae">More...</a><br/></td></tr>
<tr class="separator:gad4559fc57adfd1eb3596f03d9012e5ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4922f5f6332e7cb0715b6ebf70a4bf87"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga4922f5f6332e7cb0715b6ebf70a4bf87">sai_bclk_source_t</a> { <br/>
&#160;&#160;<a class="el" href="group__sai.html#gga4922f5f6332e7cb0715b6ebf70a4bf87a76edb348d999ad21e50f9d46d46f7e4c">kSAI_BclkSourceBusclk</a> = 0x0U,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga4922f5f6332e7cb0715b6ebf70a4bf87ab4c297bd65ee5ef56c49808b8ac0d94d">kSAI_BclkSourceMclkDiv</a>,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga4922f5f6332e7cb0715b6ebf70a4bf87ab812a4070f7960ee602e14c9af93873f">kSAI_BclkSourceOtherSai0</a>,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga4922f5f6332e7cb0715b6ebf70a4bf87a4174df66b1e3f83cd8456564517c25b6">kSAI_BclkSourceOtherSai1</a>
<br/>
}</td></tr>
<tr class="memdesc:ga4922f5f6332e7cb0715b6ebf70a4bf87"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bit clock source. <a href="group__sai.html#ga4922f5f6332e7cb0715b6ebf70a4bf87">More...</a><br/></td></tr>
<tr class="separator:ga4922f5f6332e7cb0715b6ebf70a4bf87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga842f8f2052288ad264dd45e8b652feb3"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga842f8f2052288ad264dd45e8b652feb3">_sai_interrupt_enable_t</a> { <br/>
&#160;&#160;<a class="el" href="group__sai.html#gga842f8f2052288ad264dd45e8b652feb3a544d76157d9e4e99a322e31b03f2de99">kSAI_WordStartInterruptEnable</a>,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga842f8f2052288ad264dd45e8b652feb3a3adb555d2455aa86878f78a0c0ef6566">kSAI_SyncErrorInterruptEnable</a> = I2S_TCSR_SEIE_MASK,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga842f8f2052288ad264dd45e8b652feb3a0557da436cdad3e9551e4c2ab3319526">kSAI_FIFOWarningInterruptEnable</a> = I2S_TCSR_FWIE_MASK,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga842f8f2052288ad264dd45e8b652feb3a1eb2783c3d30845f08cb7b613d92d84b">kSAI_FIFOErrorInterruptEnable</a> = I2S_TCSR_FEIE_MASK
<br/>
}</td></tr>
<tr class="memdesc:ga842f8f2052288ad264dd45e8b652feb3"><td class="mdescLeft">&#160;</td><td class="mdescRight">The SAI interrupt enable flag. <a href="group__sai.html#ga842f8f2052288ad264dd45e8b652feb3">More...</a><br/></td></tr>
<tr class="separator:ga842f8f2052288ad264dd45e8b652feb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga77974e76dbf8ccb44e36eb003a159443"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga77974e76dbf8ccb44e36eb003a159443">_sai_dma_enable_t</a> { <a class="el" href="group__sai.html#gga77974e76dbf8ccb44e36eb003a159443aa6bcd82f3ff9e711f85f1c05ff288eab">kSAI_FIFOWarningDMAEnable</a> = I2S_TCSR_FWDE_MASK
}</td></tr>
<tr class="memdesc:ga77974e76dbf8ccb44e36eb003a159443"><td class="mdescLeft">&#160;</td><td class="mdescRight">The DMA request sources. <a href="group__sai.html#ga77974e76dbf8ccb44e36eb003a159443">More...</a><br/></td></tr>
<tr class="separator:ga77974e76dbf8ccb44e36eb003a159443"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga68a5da2423e4fc5dc11ed493b0b3bb93"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga68a5da2423e4fc5dc11ed493b0b3bb93">_sai_flags</a> { <br/>
&#160;&#160;<a class="el" href="group__sai.html#gga68a5da2423e4fc5dc11ed493b0b3bb93a8856ff23f0703c9a170163edcee534ea">kSAI_WordStartFlag</a> = I2S_TCSR_WSF_MASK,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga68a5da2423e4fc5dc11ed493b0b3bb93ad35f8fa189ca7adc41905dc692aea237">kSAI_SyncErrorFlag</a> = I2S_TCSR_SEF_MASK,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga68a5da2423e4fc5dc11ed493b0b3bb93a66affbcb587814dc0df6f12733ea3f5c">kSAI_FIFOErrorFlag</a> = I2S_TCSR_FEF_MASK,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga68a5da2423e4fc5dc11ed493b0b3bb93a41f8ba146a17136cebefb1ef142c4563">kSAI_FIFOWarningFlag</a> = I2S_TCSR_FWF_MASK
<br/>
}</td></tr>
<tr class="memdesc:ga68a5da2423e4fc5dc11ed493b0b3bb93"><td class="mdescLeft">&#160;</td><td class="mdescRight">The SAI status flag. <a href="group__sai.html#ga68a5da2423e4fc5dc11ed493b0b3bb93">More...</a><br/></td></tr>
<tr class="separator:ga68a5da2423e4fc5dc11ed493b0b3bb93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae33638b9b4e26245e21faa2ed10bbf7f"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gae33638b9b4e26245e21faa2ed10bbf7f">sai_reset_type_t</a> { <br/>
&#160;&#160;<a class="el" href="group__sai.html#ggae33638b9b4e26245e21faa2ed10bbf7fa67ca93a283d762ba72176ef609bc4134">kSAI_ResetTypeSoftware</a> = I2S_TCSR_SR_MASK,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#ggae33638b9b4e26245e21faa2ed10bbf7fa9749b5efe5bb45db10089360992a683a">kSAI_ResetTypeFIFO</a> = I2S_TCSR_FR_MASK,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#ggae33638b9b4e26245e21faa2ed10bbf7fae75ddd8d7c742dce4aef59aff2c81f38">kSAI_ResetAll</a> = I2S_TCSR_SR_MASK | I2S_TCSR_FR_MASK
<br/>
}</td></tr>
<tr class="memdesc:gae33638b9b4e26245e21faa2ed10bbf7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The reset type. <a href="group__sai.html#gae33638b9b4e26245e21faa2ed10bbf7f">More...</a><br/></td></tr>
<tr class="separator:gae33638b9b4e26245e21faa2ed10bbf7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8d668e297c3e93bbc326c44538fefce5"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga8d668e297c3e93bbc326c44538fefce5">sai_sample_rate_t</a> { <br/>
&#160;&#160;<a class="el" href="group__sai.html#gga8d668e297c3e93bbc326c44538fefce5a33faf3aa4adc2430b4892a60bf82f847">kSAI_SampleRate8KHz</a> = 8000U,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga8d668e297c3e93bbc326c44538fefce5a20a0ee7adde7aca59883b3f7b5698d98">kSAI_SampleRate11025Hz</a> = 11025U,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga8d668e297c3e93bbc326c44538fefce5ab6f2876028ff4201e6e9411bd450e5e9">kSAI_SampleRate12KHz</a> = 12000U,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga8d668e297c3e93bbc326c44538fefce5a37f8460732967ce92f540c44d89b45ae">kSAI_SampleRate16KHz</a> = 16000U,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga8d668e297c3e93bbc326c44538fefce5a932187b8e03e6c60e5f6665f55e3f209">kSAI_SampleRate22050Hz</a> = 22050U,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga8d668e297c3e93bbc326c44538fefce5aec9824e27135f9641e61399b0c7ee72c">kSAI_SampleRate24KHz</a> = 24000U,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga8d668e297c3e93bbc326c44538fefce5aa745cb456e46ad4982c3d58882fb34a0">kSAI_SampleRate32KHz</a> = 32000U,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga8d668e297c3e93bbc326c44538fefce5aa00db6732444bb1976f130b8a283276c">kSAI_SampleRate44100Hz</a> = 44100U,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga8d668e297c3e93bbc326c44538fefce5a3539b8834c98c260c99b6092e7766cfc">kSAI_SampleRate48KHz</a> = 48000U,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#gga8d668e297c3e93bbc326c44538fefce5a345e0cda3185af26335f3720e0691aca">kSAI_SampleRate96KHz</a> = 96000U
<br/>
}</td></tr>
<tr class="memdesc:ga8d668e297c3e93bbc326c44538fefce5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Audio sample rate. <a href="group__sai.html#ga8d668e297c3e93bbc326c44538fefce5">More...</a><br/></td></tr>
<tr class="separator:ga8d668e297c3e93bbc326c44538fefce5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae357d8842863ba610f57acd1e1f35528"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gae357d8842863ba610f57acd1e1f35528">sai_word_width_t</a> { <br/>
&#160;&#160;<a class="el" href="group__sai.html#ggae357d8842863ba610f57acd1e1f35528ac282421ee51ea251da06e459af3014a1">kSAI_WordWidth8bits</a> = 8U,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#ggae357d8842863ba610f57acd1e1f35528a0328fc45f36f361f958cacd8378d4923">kSAI_WordWidth16bits</a> = 16U,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#ggae357d8842863ba610f57acd1e1f35528a98f99f6e508d609333313277057d29a0">kSAI_WordWidth24bits</a> = 24U,
<br/>
&#160;&#160;<a class="el" href="group__sai.html#ggae357d8842863ba610f57acd1e1f35528a238d482a0f4a707bc199f5c54c168233">kSAI_WordWidth32bits</a> = 32U
<br/>
}</td></tr>
<tr class="memdesc:gae357d8842863ba610f57acd1e1f35528"><td class="mdescLeft">&#160;</td><td class="mdescRight">Audio word width. <a href="group__sai.html#gae357d8842863ba610f57acd1e1f35528">More...</a><br/></td></tr>
<tr class="separator:gae357d8842863ba610f57acd1e1f35528"><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:ga90d7087431db03b22516e7a311aebeb1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga90d7087431db03b22516e7a311aebeb1"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga90d7087431db03b22516e7a311aebeb1">FSL_SAI_DRIVER_VERSION</a>&#160;&#160;&#160;(<a class="el" href="group__flash__driver.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2, 1, 1))</td></tr>
<tr class="memdesc:ga90d7087431db03b22516e7a311aebeb1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Version 2.1.1. <br/></td></tr>
<tr class="separator:ga90d7087431db03b22516e7a311aebeb1"><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>
Initialization and deinitialization</h2></td></tr>
<tr class="memitem:gae30b99a76b3189b36d19cff113a42fdf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gae30b99a76b3189b36d19cff113a42fdf">SAI_TxInit</a> (I2S_Type *base, const <a class="el" href="group__sai.html#structsai__config__t">sai_config_t</a> *config)</td></tr>
<tr class="memdesc:gae30b99a76b3189b36d19cff113a42fdf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the SAI Tx peripheral. <a href="#gae30b99a76b3189b36d19cff113a42fdf">More...</a><br/></td></tr>
<tr class="separator:gae30b99a76b3189b36d19cff113a42fdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacc398a5283804e04e006218810070e57"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gacc398a5283804e04e006218810070e57">SAI_RxInit</a> (I2S_Type *base, const <a class="el" href="group__sai.html#structsai__config__t">sai_config_t</a> *config)</td></tr>
<tr class="memdesc:gacc398a5283804e04e006218810070e57"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the the SAI Rx peripheral. <a href="#gacc398a5283804e04e006218810070e57">More...</a><br/></td></tr>
<tr class="separator:gacc398a5283804e04e006218810070e57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacea3121e96a50e2ceb2dee437aac8c56"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gacea3121e96a50e2ceb2dee437aac8c56">SAI_TxGetDefaultConfig</a> (<a class="el" href="group__sai.html#structsai__config__t">sai_config_t</a> *config)</td></tr>
<tr class="memdesc:gacea3121e96a50e2ceb2dee437aac8c56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the SAI Tx configuration structure to default values. <a href="#gacea3121e96a50e2ceb2dee437aac8c56">More...</a><br/></td></tr>
<tr class="separator:gacea3121e96a50e2ceb2dee437aac8c56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac047637738322f87496c5ccc8fdf20d1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gac047637738322f87496c5ccc8fdf20d1">SAI_RxGetDefaultConfig</a> (<a class="el" href="group__sai.html#structsai__config__t">sai_config_t</a> *config)</td></tr>
<tr class="memdesc:gac047637738322f87496c5ccc8fdf20d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the SAI Rx configuration structure to default values. <a href="#gac047637738322f87496c5ccc8fdf20d1">More...</a><br/></td></tr>
<tr class="separator:gac047637738322f87496c5ccc8fdf20d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae3acf95d83128d355a2935bb7ccd85ea"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gae3acf95d83128d355a2935bb7ccd85ea">SAI_Deinit</a> (I2S_Type *base)</td></tr>
<tr class="memdesc:gae3acf95d83128d355a2935bb7ccd85ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">De-initializes the SAI peripheral. <a href="#gae3acf95d83128d355a2935bb7ccd85ea">More...</a><br/></td></tr>
<tr class="separator:gae3acf95d83128d355a2935bb7ccd85ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga66657a9e3eb593e979389cc1136fd277"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga66657a9e3eb593e979389cc1136fd277">SAI_TxReset</a> (I2S_Type *base)</td></tr>
<tr class="memdesc:ga66657a9e3eb593e979389cc1136fd277"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resets the SAI Tx. <a href="#ga66657a9e3eb593e979389cc1136fd277">More...</a><br/></td></tr>
<tr class="separator:ga66657a9e3eb593e979389cc1136fd277"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga76c8fce1a9222a408a073873a27430f0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga76c8fce1a9222a408a073873a27430f0">SAI_RxReset</a> (I2S_Type *base)</td></tr>
<tr class="memdesc:ga76c8fce1a9222a408a073873a27430f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resets the SAI Rx. <a href="#ga76c8fce1a9222a408a073873a27430f0">More...</a><br/></td></tr>
<tr class="separator:ga76c8fce1a9222a408a073873a27430f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga32b2f06766a8bb92dd778a152dfd8b2e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga32b2f06766a8bb92dd778a152dfd8b2e">SAI_TxEnable</a> (I2S_Type *base, bool enable)</td></tr>
<tr class="memdesc:ga32b2f06766a8bb92dd778a152dfd8b2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables/disables SAI Tx. <a href="#ga32b2f06766a8bb92dd778a152dfd8b2e">More...</a><br/></td></tr>
<tr class="separator:ga32b2f06766a8bb92dd778a152dfd8b2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeaa118415a867f016efa6af3e0d06e17"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gaeaa118415a867f016efa6af3e0d06e17">SAI_RxEnable</a> (I2S_Type *base, bool enable)</td></tr>
<tr class="memdesc:gaeaa118415a867f016efa6af3e0d06e17"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables/disables SAI Rx. <a href="#gaeaa118415a867f016efa6af3e0d06e17">More...</a><br/></td></tr>
<tr class="separator:gaeaa118415a867f016efa6af3e0d06e17"><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>
Status</h2></td></tr>
<tr class="memitem:ga1cd557fc5610173b3f5007f9594db2ae"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga1cd557fc5610173b3f5007f9594db2ae">SAI_TxGetStatusFlag</a> (I2S_Type *base)</td></tr>
<tr class="memdesc:ga1cd557fc5610173b3f5007f9594db2ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the SAI Tx status flag state. <a href="#ga1cd557fc5610173b3f5007f9594db2ae">More...</a><br/></td></tr>
<tr class="separator:ga1cd557fc5610173b3f5007f9594db2ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga11127bb45b18dfa9d897046ab69b218d"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga11127bb45b18dfa9d897046ab69b218d">SAI_TxClearStatusFlags</a> (I2S_Type *base, uint32_t mask)</td></tr>
<tr class="memdesc:ga11127bb45b18dfa9d897046ab69b218d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears the SAI Tx status flag state. <a href="#ga11127bb45b18dfa9d897046ab69b218d">More...</a><br/></td></tr>
<tr class="separator:ga11127bb45b18dfa9d897046ab69b218d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9857a73c0d40d12438a9bd336e237dfe"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga9857a73c0d40d12438a9bd336e237dfe">SAI_RxGetStatusFlag</a> (I2S_Type *base)</td></tr>
<tr class="memdesc:ga9857a73c0d40d12438a9bd336e237dfe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the SAI Tx status flag state. <a href="#ga9857a73c0d40d12438a9bd336e237dfe">More...</a><br/></td></tr>
<tr class="separator:ga9857a73c0d40d12438a9bd336e237dfe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3329969cbf718114c37f10d88e527669"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga3329969cbf718114c37f10d88e527669">SAI_RxClearStatusFlags</a> (I2S_Type *base, uint32_t mask)</td></tr>
<tr class="memdesc:ga3329969cbf718114c37f10d88e527669"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears the SAI Rx status flag state. <a href="#ga3329969cbf718114c37f10d88e527669">More...</a><br/></td></tr>
<tr class="separator:ga3329969cbf718114c37f10d88e527669"><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>
Interrupts</h2></td></tr>
<tr class="memitem:gae298cb3fe881e951a8e291028d7cf3df"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gae298cb3fe881e951a8e291028d7cf3df">SAI_TxEnableInterrupts</a> (I2S_Type *base, uint32_t mask)</td></tr>
<tr class="memdesc:gae298cb3fe881e951a8e291028d7cf3df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables SAI Tx interrupt requests. <a href="#gae298cb3fe881e951a8e291028d7cf3df">More...</a><br/></td></tr>
<tr class="separator:gae298cb3fe881e951a8e291028d7cf3df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga43c4f7cbaf1188f9fd15c8c3a017870a"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga43c4f7cbaf1188f9fd15c8c3a017870a">SAI_RxEnableInterrupts</a> (I2S_Type *base, uint32_t mask)</td></tr>
<tr class="memdesc:ga43c4f7cbaf1188f9fd15c8c3a017870a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables SAI Rx interrupt requests. <a href="#ga43c4f7cbaf1188f9fd15c8c3a017870a">More...</a><br/></td></tr>
<tr class="separator:ga43c4f7cbaf1188f9fd15c8c3a017870a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5baa11cc20615c1a9b32eea5f6021e66"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga5baa11cc20615c1a9b32eea5f6021e66">SAI_TxDisableInterrupts</a> (I2S_Type *base, uint32_t mask)</td></tr>
<tr class="memdesc:ga5baa11cc20615c1a9b32eea5f6021e66"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables SAI Tx interrupt requests. <a href="#ga5baa11cc20615c1a9b32eea5f6021e66">More...</a><br/></td></tr>
<tr class="separator:ga5baa11cc20615c1a9b32eea5f6021e66"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9cbeb122b61a580d052438157661c46f"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga9cbeb122b61a580d052438157661c46f">SAI_RxDisableInterrupts</a> (I2S_Type *base, uint32_t mask)</td></tr>
<tr class="memdesc:ga9cbeb122b61a580d052438157661c46f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables SAI Rx interrupt requests. <a href="#ga9cbeb122b61a580d052438157661c46f">More...</a><br/></td></tr>
<tr class="separator:ga9cbeb122b61a580d052438157661c46f"><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 Control</h2></td></tr>
<tr class="memitem:ga131a59354eae81bb20068b7c5e805f9a"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga131a59354eae81bb20068b7c5e805f9a">SAI_TxEnableDMA</a> (I2S_Type *base, uint32_t mask, bool enable)</td></tr>
<tr class="memdesc:ga131a59354eae81bb20068b7c5e805f9a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables/disables SAI Tx DMA requests. <a href="#ga131a59354eae81bb20068b7c5e805f9a">More...</a><br/></td></tr>
<tr class="separator:ga131a59354eae81bb20068b7c5e805f9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8061229e53203dfca2ed45b2f7648ca5"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga8061229e53203dfca2ed45b2f7648ca5">SAI_RxEnableDMA</a> (I2S_Type *base, uint32_t mask, bool enable)</td></tr>
<tr class="memdesc:ga8061229e53203dfca2ed45b2f7648ca5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables/disables SAI Rx DMA requests. <a href="#ga8061229e53203dfca2ed45b2f7648ca5">More...</a><br/></td></tr>
<tr class="separator:ga8061229e53203dfca2ed45b2f7648ca5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac19d42fce7cc3f6ab68f279be959f3bb"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gac19d42fce7cc3f6ab68f279be959f3bb">SAI_TxGetDataRegisterAddress</a> (I2S_Type *base, uint32_t channel)</td></tr>
<tr class="memdesc:gac19d42fce7cc3f6ab68f279be959f3bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the SAI Tx data register address. <a href="#gac19d42fce7cc3f6ab68f279be959f3bb">More...</a><br/></td></tr>
<tr class="separator:gac19d42fce7cc3f6ab68f279be959f3bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2b90519b672bb8cb8b0aa6386f66c251"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga2b90519b672bb8cb8b0aa6386f66c251">SAI_RxGetDataRegisterAddress</a> (I2S_Type *base, uint32_t channel)</td></tr>
<tr class="memdesc:ga2b90519b672bb8cb8b0aa6386f66c251"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the SAI Rx data register address. <a href="#ga2b90519b672bb8cb8b0aa6386f66c251">More...</a><br/></td></tr>
<tr class="separator:ga2b90519b672bb8cb8b0aa6386f66c251"><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>
Bus Operations</h2></td></tr>
<tr class="memitem:gaeeab03e24aa74980dd770d9e740c0b06"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gaeeab03e24aa74980dd770d9e740c0b06">SAI_TxSetFormat</a> (I2S_Type *base, <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:gaeeab03e24aa74980dd770d9e740c0b06"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configures the SAI Tx audio format. <a href="#gaeeab03e24aa74980dd770d9e740c0b06">More...</a><br/></td></tr>
<tr class="separator:gaeeab03e24aa74980dd770d9e740c0b06"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga542afa36d64a6848bf174cb0e695b42b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga542afa36d64a6848bf174cb0e695b42b">SAI_RxSetFormat</a> (I2S_Type *base, <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:ga542afa36d64a6848bf174cb0e695b42b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configures the SAI Rx audio format. <a href="#ga542afa36d64a6848bf174cb0e695b42b">More...</a><br/></td></tr>
<tr class="separator:ga542afa36d64a6848bf174cb0e695b42b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga32e4d2e732142517cc9ae2c1d12ee641"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga32e4d2e732142517cc9ae2c1d12ee641">SAI_WriteBlocking</a> (I2S_Type *base, uint32_t channel, uint32_t bitWidth, uint8_t *buffer, uint32_t size)</td></tr>
<tr class="memdesc:ga32e4d2e732142517cc9ae2c1d12ee641"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sends data using a blocking method. <a href="#ga32e4d2e732142517cc9ae2c1d12ee641">More...</a><br/></td></tr>
<tr class="separator:ga32e4d2e732142517cc9ae2c1d12ee641"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6299cd60dee1e684683f3473a62e831b"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga6299cd60dee1e684683f3473a62e831b">SAI_WriteData</a> (I2S_Type *base, uint32_t channel, uint32_t data)</td></tr>
<tr class="memdesc:ga6299cd60dee1e684683f3473a62e831b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes data into SAI FIFO. <a href="#ga6299cd60dee1e684683f3473a62e831b">More...</a><br/></td></tr>
<tr class="separator:ga6299cd60dee1e684683f3473a62e831b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0f954b031a8e2a857a0fddf87a9a1368"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga0f954b031a8e2a857a0fddf87a9a1368">SAI_ReadBlocking</a> (I2S_Type *base, uint32_t channel, uint32_t bitWidth, uint8_t *buffer, uint32_t size)</td></tr>
<tr class="memdesc:ga0f954b031a8e2a857a0fddf87a9a1368"><td class="mdescLeft">&#160;</td><td class="mdescRight">Receives data using a blocking method. <a href="#ga0f954b031a8e2a857a0fddf87a9a1368">More...</a><br/></td></tr>
<tr class="separator:ga0f954b031a8e2a857a0fddf87a9a1368"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gada44ab158250b8e94258b9d8fd3a63dd"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gada44ab158250b8e94258b9d8fd3a63dd">SAI_ReadData</a> (I2S_Type *base, uint32_t channel)</td></tr>
<tr class="memdesc:gada44ab158250b8e94258b9d8fd3a63dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads data from SAI FIFO. <a href="#gada44ab158250b8e94258b9d8fd3a63dd">More...</a><br/></td></tr>
<tr class="separator:gada44ab158250b8e94258b9d8fd3a63dd"><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>
Transactional</h2></td></tr>
<tr class="memitem:ga69eaf09522d88c69b47ec104c11875de"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga69eaf09522d88c69b47ec104c11875de">SAI_TransferTxCreateHandle</a> (I2S_Type *base, sai_handle_t *handle, <a class="el" href="group__sai.html#gacda077e13dd34cd0fa1e865354591fe2">sai_transfer_callback_t</a> callback, void *userData)</td></tr>
<tr class="memdesc:ga69eaf09522d88c69b47ec104c11875de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the SAI Tx handle. <a href="#ga69eaf09522d88c69b47ec104c11875de">More...</a><br/></td></tr>
<tr class="separator:ga69eaf09522d88c69b47ec104c11875de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4c29a38ae0802fa81e304eee337ecf6b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga4c29a38ae0802fa81e304eee337ecf6b">SAI_TransferRxCreateHandle</a> (I2S_Type *base, sai_handle_t *handle, <a class="el" href="group__sai.html#gacda077e13dd34cd0fa1e865354591fe2">sai_transfer_callback_t</a> callback, void *userData)</td></tr>
<tr class="memdesc:ga4c29a38ae0802fa81e304eee337ecf6b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the SAI Rx handle. <a href="#ga4c29a38ae0802fa81e304eee337ecf6b">More...</a><br/></td></tr>
<tr class="separator:ga4c29a38ae0802fa81e304eee337ecf6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga636cdc91fc752587bfd449fbf5f540bb"><td class="memItemLeft" align="right" valign="top">status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga636cdc91fc752587bfd449fbf5f540bb">SAI_TransferTxSetFormat</a> (I2S_Type *base, sai_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:ga636cdc91fc752587bfd449fbf5f540bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configures the SAI Tx audio format. <a href="#ga636cdc91fc752587bfd449fbf5f540bb">More...</a><br/></td></tr>
<tr class="separator:ga636cdc91fc752587bfd449fbf5f540bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf9253863ef8232b06e82b5c6b69f20c1"><td class="memItemLeft" align="right" valign="top">status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gaf9253863ef8232b06e82b5c6b69f20c1">SAI_TransferRxSetFormat</a> (I2S_Type *base, sai_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:gaf9253863ef8232b06e82b5c6b69f20c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configures the SAI Rx audio format. <a href="#gaf9253863ef8232b06e82b5c6b69f20c1">More...</a><br/></td></tr>
<tr class="separator:gaf9253863ef8232b06e82b5c6b69f20c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaefe0557861a223913d7b1d8959a56995"><td class="memItemLeft" align="right" valign="top">status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gaefe0557861a223913d7b1d8959a56995">SAI_TransferSendNonBlocking</a> (I2S_Type *base, sai_handle_t *handle, <a class="el" href="group__sai.html#structsai__transfer__t">sai_transfer_t</a> *xfer)</td></tr>
<tr class="memdesc:gaefe0557861a223913d7b1d8959a56995"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs an interrupt non-blocking send transfer on SAI. <a href="#gaefe0557861a223913d7b1d8959a56995">More...</a><br/></td></tr>
<tr class="separator:gaefe0557861a223913d7b1d8959a56995"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad23a55af8054fbd0cb8cbb175f2e497c"><td class="memItemLeft" align="right" valign="top">status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gad23a55af8054fbd0cb8cbb175f2e497c">SAI_TransferReceiveNonBlocking</a> (I2S_Type *base, sai_handle_t *handle, <a class="el" href="group__sai.html#structsai__transfer__t">sai_transfer_t</a> *xfer)</td></tr>
<tr class="memdesc:gad23a55af8054fbd0cb8cbb175f2e497c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs an interrupt non-blocking receive transfer on SAI. <a href="#gad23a55af8054fbd0cb8cbb175f2e497c">More...</a><br/></td></tr>
<tr class="separator:gad23a55af8054fbd0cb8cbb175f2e497c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac2b7aaa215232aa8e12eb751b0edd90f"><td class="memItemLeft" align="right" valign="top">status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gac2b7aaa215232aa8e12eb751b0edd90f">SAI_TransferGetSendCount</a> (I2S_Type *base, sai_handle_t *handle, size_t *count)</td></tr>
<tr class="memdesc:gac2b7aaa215232aa8e12eb751b0edd90f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a set byte count. <a href="#gac2b7aaa215232aa8e12eb751b0edd90f">More...</a><br/></td></tr>
<tr class="separator:gac2b7aaa215232aa8e12eb751b0edd90f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafb739944ba12a66543842993c1716464"><td class="memItemLeft" align="right" valign="top">status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gafb739944ba12a66543842993c1716464">SAI_TransferGetReceiveCount</a> (I2S_Type *base, sai_handle_t *handle, size_t *count)</td></tr>
<tr class="memdesc:gafb739944ba12a66543842993c1716464"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a received byte count. <a href="#gafb739944ba12a66543842993c1716464">More...</a><br/></td></tr>
<tr class="separator:gafb739944ba12a66543842993c1716464"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9fca6aa3b5cbcf05ca2c0b6637b476e7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga9fca6aa3b5cbcf05ca2c0b6637b476e7">SAI_TransferAbortSend</a> (I2S_Type *base, sai_handle_t *handle)</td></tr>
<tr class="memdesc:ga9fca6aa3b5cbcf05ca2c0b6637b476e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Aborts the current send. <a href="#ga9fca6aa3b5cbcf05ca2c0b6637b476e7">More...</a><br/></td></tr>
<tr class="separator:ga9fca6aa3b5cbcf05ca2c0b6637b476e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab2859ed8b6805a962d45d5eb16a9095f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gab2859ed8b6805a962d45d5eb16a9095f">SAI_TransferAbortReceive</a> (I2S_Type *base, sai_handle_t *handle)</td></tr>
<tr class="memdesc:gab2859ed8b6805a962d45d5eb16a9095f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Aborts the the current IRQ receive. <a href="#gab2859ed8b6805a962d45d5eb16a9095f">More...</a><br/></td></tr>
<tr class="separator:gab2859ed8b6805a962d45d5eb16a9095f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga40d3fede9289fcea2706679138ce466a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ga40d3fede9289fcea2706679138ce466a">SAI_TransferTxHandleIRQ</a> (I2S_Type *base, sai_handle_t *handle)</td></tr>
<tr class="memdesc:ga40d3fede9289fcea2706679138ce466a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tx interrupt handler. <a href="#ga40d3fede9289fcea2706679138ce466a">More...</a><br/></td></tr>
<tr class="separator:ga40d3fede9289fcea2706679138ce466a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab66ff18cc17137d132a3b5c8accbdb34"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#gab66ff18cc17137d132a3b5c8accbdb34">SAI_TransferRxHandleIRQ</a> (I2S_Type *base, sai_handle_t *handle)</td></tr>
<tr class="memdesc:gab66ff18cc17137d132a3b5c8accbdb34"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tx interrupt handler. <a href="#gab66ff18cc17137d132a3b5c8accbdb34">More...</a><br/></td></tr>
<tr class="separator:gab66ff18cc17137d132a3b5c8accbdb34"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="structsai__config__t" id="structsai__config__t"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct sai_config_t</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:ae6b6e06a6051825c0797e1ab7fce5f92"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6b6e06a6051825c0797e1ab7fce5f92"></a>
<a class="el" href="group__sai.html#gad13dff47e2ed5ce5d8eae47df8ac8e0f">sai_protocol_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ae6b6e06a6051825c0797e1ab7fce5f92">protocol</a></td></tr>
<tr class="memdesc:ae6b6e06a6051825c0797e1ab7fce5f92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Audio bus protocol in SAI. <br/></td></tr>
<tr class="separator:ae6b6e06a6051825c0797e1ab7fce5f92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c625b880a5721c9bf58ab081c08fea5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1c625b880a5721c9bf58ab081c08fea5"></a>
<a class="el" href="group__sai.html#ga88390dba856027f775cac9e6f6ecbc17">sai_sync_mode_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#a1c625b880a5721c9bf58ab081c08fea5">syncMode</a></td></tr>
<tr class="memdesc:a1c625b880a5721c9bf58ab081c08fea5"><td class="mdescLeft">&#160;</td><td class="mdescRight">SAI sync mode, control Tx/Rx clock sync. <br/></td></tr>
<tr class="separator:a1c625b880a5721c9bf58ab081c08fea5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8529f925b2790d1727a945cd3b966c27"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8529f925b2790d1727a945cd3b966c27"></a>
<a class="el" href="group__sai.html#gad4559fc57adfd1eb3596f03d9012e5ae">sai_mclk_source_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#a8529f925b2790d1727a945cd3b966c27">mclkSource</a></td></tr>
<tr class="memdesc:a8529f925b2790d1727a945cd3b966c27"><td class="mdescLeft">&#160;</td><td class="mdescRight">Master Clock source. <br/></td></tr>
<tr class="separator:a8529f925b2790d1727a945cd3b966c27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a156dc7868da25bfc262bfac4bd4499a1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a156dc7868da25bfc262bfac4bd4499a1"></a>
<a class="el" href="group__sai.html#ga4922f5f6332e7cb0715b6ebf70a4bf87">sai_bclk_source_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#a156dc7868da25bfc262bfac4bd4499a1">bclkSource</a></td></tr>
<tr class="memdesc:a156dc7868da25bfc262bfac4bd4499a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bit Clock source. <br/></td></tr>
<tr class="separator:a156dc7868da25bfc262bfac4bd4499a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c16d7b69db892ed087ced965280be77"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c16d7b69db892ed087ced965280be77"></a>
<a class="el" href="group__sai.html#gaa968c964aac0ab72a6957d89cb7b5bb0">sai_master_slave_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#a2c16d7b69db892ed087ced965280be77">masterSlave</a></td></tr>
<tr class="memdesc:a2c16d7b69db892ed087ced965280be77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Master or slave. <br/></td></tr>
<tr class="separator:a2c16d7b69db892ed087ced965280be77"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div>
</div>
<a name="structsai__transfer__format__t" id="structsai__transfer__format__t"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct sai_transfer_format_t</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:a629aeb07579875fda77e38851c683ae0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a629aeb07579875fda77e38851c683ae0"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#a629aeb07579875fda77e38851c683ae0">sampleRate_Hz</a></td></tr>
<tr class="memdesc:a629aeb07579875fda77e38851c683ae0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sample rate of audio data. <br/></td></tr>
<tr class="separator:a629aeb07579875fda77e38851c683ae0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4f8f19e4e01850841127ca7d0920302"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad4f8f19e4e01850841127ca7d0920302"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ad4f8f19e4e01850841127ca7d0920302">bitWidth</a></td></tr>
<tr class="memdesc:ad4f8f19e4e01850841127ca7d0920302"><td class="mdescLeft">&#160;</td><td class="mdescRight">Data length of audio data, usually 8/16/24/32 bits. <br/></td></tr>
<tr class="separator:ad4f8f19e4e01850841127ca7d0920302"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1398f0cd36eabc05f7bc448db6355562"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1398f0cd36eabc05f7bc448db6355562"></a>
<a class="el" href="group__sai.html#ga23ffdf03cf1409d3385f3ead175a97c4">sai_mono_stereo_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#a1398f0cd36eabc05f7bc448db6355562">stereo</a></td></tr>
<tr class="memdesc:a1398f0cd36eabc05f7bc448db6355562"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mono or stereo. <br/></td></tr>
<tr class="separator:a1398f0cd36eabc05f7bc448db6355562"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26e51457310ccb2a7cfeb7eec8068ae7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a26e51457310ccb2a7cfeb7eec8068ae7"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#a26e51457310ccb2a7cfeb7eec8068ae7">masterClockHz</a></td></tr>
<tr class="memdesc:a26e51457310ccb2a7cfeb7eec8068ae7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Master clock frequency in Hz. <br/></td></tr>
<tr class="separator:a26e51457310ccb2a7cfeb7eec8068ae7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9e9a371b0922bb1a82b2a06e11b9d70"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#ac9e9a371b0922bb1a82b2a06e11b9d70">channel</a></td></tr>
<tr class="memdesc:ac9e9a371b0922bb1a82b2a06e11b9d70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Data channel used in transfer. <a href="#ac9e9a371b0922bb1a82b2a06e11b9d70">More...</a><br/></td></tr>
<tr class="separator:ac9e9a371b0922bb1a82b2a06e11b9d70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2df4853c14ae76c214bddc23787e2327"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2df4853c14ae76c214bddc23787e2327"></a>
<a class="el" href="group__sai.html#gad13dff47e2ed5ce5d8eae47df8ac8e0f">sai_protocol_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#a2df4853c14ae76c214bddc23787e2327">protocol</a></td></tr>
<tr class="memdesc:a2df4853c14ae76c214bddc23787e2327"><td class="mdescLeft">&#160;</td><td class="mdescRight">Which audio protocol used. <br/></td></tr>
<tr class="separator:a2df4853c14ae76c214bddc23787e2327"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="ac9e9a371b0922bb1a82b2a06e11b9d70"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t sai_transfer_format_t::channel</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div>
</div>
<a name="structsai__transfer__t" id="structsai__transfer__t"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct sai_transfer_t</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:a5a8e66b73932caa8eaf99df59127e389"><td class="memItemLeft" align="right" valign="top">uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#a5a8e66b73932caa8eaf99df59127e389">data</a></td></tr>
<tr class="memdesc:a5a8e66b73932caa8eaf99df59127e389"><td class="mdescLeft">&#160;</td><td class="mdescRight">Data start address to transfer. <a href="#a5a8e66b73932caa8eaf99df59127e389">More...</a><br/></td></tr>
<tr class="separator:a5a8e66b73932caa8eaf99df59127e389"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9518c75eb06dadc3b73f44ee49f4e0ff"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#a9518c75eb06dadc3b73f44ee49f4e0ff">dataSize</a></td></tr>
<tr class="memdesc:a9518c75eb06dadc3b73f44ee49f4e0ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transfer size. <a href="#a9518c75eb06dadc3b73f44ee49f4e0ff">More...</a><br/></td></tr>
<tr class="separator:a9518c75eb06dadc3b73f44ee49f4e0ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="a5a8e66b73932caa8eaf99df59127e389"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t* sai_transfer_t::data</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a9518c75eb06dadc3b73f44ee49f4e0ff"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_t sai_transfer_t::dataSize</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div>
</div>
<a name="struct__sai__handle" id="struct__sai__handle"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct _sai_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:a5b505d55e77d3b5329b368d3007ce816"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b505d55e77d3b5329b368d3007ce816"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#a5b505d55e77d3b5329b368d3007ce816">state</a></td></tr>
<tr class="memdesc:a5b505d55e77d3b5329b368d3007ce816"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transfer status. <br/></td></tr>
<tr class="separator:a5b505d55e77d3b5329b368d3007ce816"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05bc395932b5262476fa9a10fde9ede5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05bc395932b5262476fa9a10fde9ede5"></a>
<a class="el" href="group__sai.html#gacda077e13dd34cd0fa1e865354591fe2">sai_transfer_callback_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#a05bc395932b5262476fa9a10fde9ede5">callback</a></td></tr>
<tr class="memdesc:a05bc395932b5262476fa9a10fde9ede5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback function called at transfer event. <br/></td></tr>
<tr class="separator:a05bc395932b5262476fa9a10fde9ede5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a593e606183fad166fae74bd5e5cc70b5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a593e606183fad166fae74bd5e5cc70b5"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#a593e606183fad166fae74bd5e5cc70b5">userData</a></td></tr>
<tr class="memdesc:a593e606183fad166fae74bd5e5cc70b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback parameter passed to callback function. <br/></td></tr>
<tr class="separator:a593e606183fad166fae74bd5e5cc70b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6031e7b8e826009f5f2964b6a53bb66b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6031e7b8e826009f5f2964b6a53bb66b"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#a6031e7b8e826009f5f2964b6a53bb66b">bitWidth</a></td></tr>
<tr class="memdesc:a6031e7b8e826009f5f2964b6a53bb66b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bit width for transfer, 8/16/24/32 bits. <br/></td></tr>
<tr class="separator:a6031e7b8e826009f5f2964b6a53bb66b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f25131b0b0e2f2e7483848697465d5e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f25131b0b0e2f2e7483848697465d5e"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#a0f25131b0b0e2f2e7483848697465d5e">channel</a></td></tr>
<tr class="memdesc:a0f25131b0b0e2f2e7483848697465d5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transfer channel. <br/></td></tr>
<tr class="separator:a0f25131b0b0e2f2e7483848697465d5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae598be176e033f2849b6bd567e1a09bc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae598be176e033f2849b6bd567e1a09bc"></a>
<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.html#ae598be176e033f2849b6bd567e1a09bc">saiQueue</a> [<a class="el" href="group__sai.html#ga580bf35fe1f08d7bb054bee399f8b085">SAI_XFER_QUEUE_SIZE</a>]</td></tr>
<tr class="memdesc:ae598be176e033f2849b6bd567e1a09bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transfer queue storing queued transfer. <br/></td></tr>
<tr class="separator:ae598be176e033f2849b6bd567e1a09bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43e75ec27110a0e71ebfbc0be8d69c25"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a43e75ec27110a0e71ebfbc0be8d69c25"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#a43e75ec27110a0e71ebfbc0be8d69c25">transferSize</a> [<a class="el" href="group__sai.html#ga580bf35fe1f08d7bb054bee399f8b085">SAI_XFER_QUEUE_SIZE</a>]</td></tr>
<tr class="memdesc:a43e75ec27110a0e71ebfbc0be8d69c25"><td class="mdescLeft">&#160;</td><td class="mdescRight">Data bytes need to transfer. <br/></td></tr>
<tr class="separator:a43e75ec27110a0e71ebfbc0be8d69c25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9bc00ccd6c986f28ca3cbd0c45469b59"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9bc00ccd6c986f28ca3cbd0c45469b59"></a>
volatile uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#a9bc00ccd6c986f28ca3cbd0c45469b59">queueUser</a></td></tr>
<tr class="memdesc:a9bc00ccd6c986f28ca3cbd0c45469b59"><td class="mdescLeft">&#160;</td><td class="mdescRight">Index for user to queue transfer. <br/></td></tr>
<tr class="separator:a9bc00ccd6c986f28ca3cbd0c45469b59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18dfdb245cb737f8a66976b707d3d487"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18dfdb245cb737f8a66976b707d3d487"></a>
volatile uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sai.html#a18dfdb245cb737f8a66976b707d3d487">queueDriver</a></td></tr>
<tr class="memdesc:a18dfdb245cb737f8a66976b707d3d487"><td class="mdescLeft">&#160;</td><td class="mdescRight">Index for driver to get the transfer data and size. <br/></td></tr>
<tr class="separator:a18dfdb245cb737f8a66976b707d3d487"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga580bf35fe1f08d7bb054bee399f8b085"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SAI_XFER_QUEUE_SIZE&#160;&#160;&#160;(4)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="ga143ecba4f3b3e833be0c38baeab02330"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__sai.html#ga143ecba4f3b3e833be0c38baeab02330">_sai_status_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga143ecba4f3b3e833be0c38baeab02330ae095b9b1a3ec7b998d722b1e1d73ca44"></a>kStatus_SAI_TxBusy</em>&nbsp;</td><td class="fielddoc">
<p>SAI Tx is busy. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga143ecba4f3b3e833be0c38baeab02330a8e432517b16b5784a72a95e0caf7bb4a"></a>kStatus_SAI_RxBusy</em>&nbsp;</td><td class="fielddoc">
<p>SAI Rx is busy. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga143ecba4f3b3e833be0c38baeab02330a5f17818e41e2fb07e35e43e1a03bfeb9"></a>kStatus_SAI_TxError</em>&nbsp;</td><td class="fielddoc">
<p>SAI Tx FIFO error. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga143ecba4f3b3e833be0c38baeab02330a0d8c8cec03abcd722d2ec4358451461c"></a>kStatus_SAI_RxError</em>&nbsp;</td><td class="fielddoc">
<p>SAI Rx FIFO error. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga143ecba4f3b3e833be0c38baeab02330a19680647d09a7437afd6b6ae7013095e"></a>kStatus_SAI_QueueFull</em>&nbsp;</td><td class="fielddoc">
<p>SAI transfer queue is full. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga143ecba4f3b3e833be0c38baeab02330a2a58fb377508baa31df58beb5f406761"></a>kStatus_SAI_TxIdle</em>&nbsp;</td><td class="fielddoc">
<p>SAI Tx is idle. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga143ecba4f3b3e833be0c38baeab02330a0f398d330abd6df4255be13d39968e1d"></a>kStatus_SAI_RxIdle</em>&nbsp;</td><td class="fielddoc">
<p>SAI Rx is idle. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gad13dff47e2ed5ce5d8eae47df8ac8e0f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__sai.html#gad13dff47e2ed5ce5d8eae47df8ac8e0f">sai_protocol_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ggad13dff47e2ed5ce5d8eae47df8ac8e0fa5c6ddb713e2ebd5e243d5d8156869baf"></a>kSAI_BusLeftJustified</em>&nbsp;</td><td class="fielddoc">
<p>Uses left justified format. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad13dff47e2ed5ce5d8eae47df8ac8e0faebff095e8a510ada79aab2c90df6c4ef"></a>kSAI_BusRightJustified</em>&nbsp;</td><td class="fielddoc">
<p>Uses right justified format. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad13dff47e2ed5ce5d8eae47df8ac8e0fa67d163f59267b3c6f6dfb731de711197"></a>kSAI_BusI2S</em>&nbsp;</td><td class="fielddoc">
<p>Uses I2S format. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad13dff47e2ed5ce5d8eae47df8ac8e0fa1a4da830cfb4f08554a690de65d2870f"></a>kSAI_BusPCMA</em>&nbsp;</td><td class="fielddoc">
<p>Uses I2S PCM A format. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad13dff47e2ed5ce5d8eae47df8ac8e0fa6b5e627cbe3644cf561eb0997699aefe"></a>kSAI_BusPCMB</em>&nbsp;</td><td class="fielddoc">
<p>Uses I2S PCM B format. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gaa968c964aac0ab72a6957d89cb7b5bb0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__sai.html#gaa968c964aac0ab72a6957d89cb7b5bb0">sai_master_slave_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ggaa968c964aac0ab72a6957d89cb7b5bb0ace27a481cd1aee827602f2997e9e9d24"></a>kSAI_Master</em>&nbsp;</td><td class="fielddoc">
<p>Master mode. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggaa968c964aac0ab72a6957d89cb7b5bb0afc74ad2cca556b75857bfcb3c2f754b3"></a>kSAI_Slave</em>&nbsp;</td><td class="fielddoc">
<p>Slave mode. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="ga23ffdf03cf1409d3385f3ead175a97c4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__sai.html#ga23ffdf03cf1409d3385f3ead175a97c4">sai_mono_stereo_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga23ffdf03cf1409d3385f3ead175a97c4a68780a0cf179c054ccccdd0d57fb780e"></a>kSAI_Stereo</em>&nbsp;</td><td class="fielddoc">
<p>Stereo sound. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga23ffdf03cf1409d3385f3ead175a97c4a06bf33c6e548abd3cd5136b4e8d7bd29"></a>kSAI_MonoLeft</em>&nbsp;</td><td class="fielddoc">
<p>Only left channel have sound. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga23ffdf03cf1409d3385f3ead175a97c4a2763e95289b6d3f7015cba718964580b"></a>kSAI_MonoRight</em>&nbsp;</td><td class="fielddoc">
<p>Only Right channel have sound. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="ga88390dba856027f775cac9e6f6ecbc17"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__sai.html#ga88390dba856027f775cac9e6f6ecbc17">sai_sync_mode_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga88390dba856027f775cac9e6f6ecbc17a1eedfe4039fefc137958a911f67840c1"></a>kSAI_ModeAsync</em>&nbsp;</td><td class="fielddoc">
<p>Asynchronous mode. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga88390dba856027f775cac9e6f6ecbc17a8a39fe8640d0a3a2de851e41bc3ebbdd"></a>kSAI_ModeSync</em>&nbsp;</td><td class="fielddoc">
<p>Synchronous mode (with receiver or transmit) </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga88390dba856027f775cac9e6f6ecbc17a87f5fdf3addd5b7dcb91d6bca043a791"></a>kSAI_ModeSyncWithOtherTx</em>&nbsp;</td><td class="fielddoc">
<p>Synchronous with another SAI transmit. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga88390dba856027f775cac9e6f6ecbc17ac3992e47e86faa518c9b1b26da64aa5c"></a>kSAI_ModeSyncWithOtherRx</em>&nbsp;</td><td class="fielddoc">
<p>Synchronous with another SAI receiver. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gad4559fc57adfd1eb3596f03d9012e5ae"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__sai.html#gad4559fc57adfd1eb3596f03d9012e5ae">sai_mclk_source_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ggad4559fc57adfd1eb3596f03d9012e5aeaa996ab18c8b18160b7b70b7b23eecb8d"></a>kSAI_MclkSourceSysclk</em>&nbsp;</td><td class="fielddoc">
<p>Master clock from the system clock. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad4559fc57adfd1eb3596f03d9012e5aeac5a9692e8334ad2542c5a9221704ac22"></a>kSAI_MclkSourceSelect1</em>&nbsp;</td><td class="fielddoc">
<p>Master clock from source 1. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad4559fc57adfd1eb3596f03d9012e5aea18d79884e3de46ce85e46560ac84e04c"></a>kSAI_MclkSourceSelect2</em>&nbsp;</td><td class="fielddoc">
<p>Master clock from source 2. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggad4559fc57adfd1eb3596f03d9012e5aea148502f7a9db92e579c19cb0d78db2cf"></a>kSAI_MclkSourceSelect3</em>&nbsp;</td><td class="fielddoc">
<p>Master clock from source 3. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="ga4922f5f6332e7cb0715b6ebf70a4bf87"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__sai.html#ga4922f5f6332e7cb0715b6ebf70a4bf87">sai_bclk_source_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga4922f5f6332e7cb0715b6ebf70a4bf87a76edb348d999ad21e50f9d46d46f7e4c"></a>kSAI_BclkSourceBusclk</em>&nbsp;</td><td class="fielddoc">
<p>Bit clock using bus clock. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga4922f5f6332e7cb0715b6ebf70a4bf87ab4c297bd65ee5ef56c49808b8ac0d94d"></a>kSAI_BclkSourceMclkDiv</em>&nbsp;</td><td class="fielddoc">
<p>Bit clock using master clock divider. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga4922f5f6332e7cb0715b6ebf70a4bf87ab812a4070f7960ee602e14c9af93873f"></a>kSAI_BclkSourceOtherSai0</em>&nbsp;</td><td class="fielddoc">
<p>Bit clock from other SAI device. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga4922f5f6332e7cb0715b6ebf70a4bf87a4174df66b1e3f83cd8456564517c25b6"></a>kSAI_BclkSourceOtherSai1</em>&nbsp;</td><td class="fielddoc">
<p>Bit clock from other SAI device. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="ga842f8f2052288ad264dd45e8b652feb3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__sai.html#ga842f8f2052288ad264dd45e8b652feb3">_sai_interrupt_enable_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga842f8f2052288ad264dd45e8b652feb3a544d76157d9e4e99a322e31b03f2de99"></a>kSAI_WordStartInterruptEnable</em>&nbsp;</td><td class="fielddoc">
<p>Word start flag, means the first word in a frame detected. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga842f8f2052288ad264dd45e8b652feb3a3adb555d2455aa86878f78a0c0ef6566"></a>kSAI_SyncErrorInterruptEnable</em>&nbsp;</td><td class="fielddoc">
<p>Sync error flag, means the sync error is detected. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga842f8f2052288ad264dd45e8b652feb3a0557da436cdad3e9551e4c2ab3319526"></a>kSAI_FIFOWarningInterruptEnable</em>&nbsp;</td><td class="fielddoc">
<p>FIFO warning flag, means the FIFO is empty. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga842f8f2052288ad264dd45e8b652feb3a1eb2783c3d30845f08cb7b613d92d84b"></a>kSAI_FIFOErrorInterruptEnable</em>&nbsp;</td><td class="fielddoc">
<p>FIFO error flag. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="ga77974e76dbf8ccb44e36eb003a159443"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__sai.html#ga77974e76dbf8ccb44e36eb003a159443">_sai_dma_enable_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga77974e76dbf8ccb44e36eb003a159443aa6bcd82f3ff9e711f85f1c05ff288eab"></a>kSAI_FIFOWarningDMAEnable</em>&nbsp;</td><td class="fielddoc">
<p>FIFO warning caused by the DMA request. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="ga68a5da2423e4fc5dc11ed493b0b3bb93"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__sai.html#ga68a5da2423e4fc5dc11ed493b0b3bb93">_sai_flags</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga68a5da2423e4fc5dc11ed493b0b3bb93a8856ff23f0703c9a170163edcee534ea"></a>kSAI_WordStartFlag</em>&nbsp;</td><td class="fielddoc">
<p>Word start flag, means the first word in a frame detected. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga68a5da2423e4fc5dc11ed493b0b3bb93ad35f8fa189ca7adc41905dc692aea237"></a>kSAI_SyncErrorFlag</em>&nbsp;</td><td class="fielddoc">
<p>Sync error flag, means the sync error is detected. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga68a5da2423e4fc5dc11ed493b0b3bb93a66affbcb587814dc0df6f12733ea3f5c"></a>kSAI_FIFOErrorFlag</em>&nbsp;</td><td class="fielddoc">
<p>FIFO error flag. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga68a5da2423e4fc5dc11ed493b0b3bb93a41f8ba146a17136cebefb1ef142c4563"></a>kSAI_FIFOWarningFlag</em>&nbsp;</td><td class="fielddoc">
<p>FIFO warning flag. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gae33638b9b4e26245e21faa2ed10bbf7f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__sai.html#gae33638b9b4e26245e21faa2ed10bbf7f">sai_reset_type_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ggae33638b9b4e26245e21faa2ed10bbf7fa67ca93a283d762ba72176ef609bc4134"></a>kSAI_ResetTypeSoftware</em>&nbsp;</td><td class="fielddoc">
<p>Software reset, reset the logic state. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggae33638b9b4e26245e21faa2ed10bbf7fa9749b5efe5bb45db10089360992a683a"></a>kSAI_ResetTypeFIFO</em>&nbsp;</td><td class="fielddoc">
<p>FIFO reset, reset the FIFO read and write pointer. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggae33638b9b4e26245e21faa2ed10bbf7fae75ddd8d7c742dce4aef59aff2c81f38"></a>kSAI_ResetAll</em>&nbsp;</td><td class="fielddoc">
<p>All reset. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="ga8d668e297c3e93bbc326c44538fefce5"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__sai.html#ga8d668e297c3e93bbc326c44538fefce5">sai_sample_rate_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga8d668e297c3e93bbc326c44538fefce5a33faf3aa4adc2430b4892a60bf82f847"></a>kSAI_SampleRate8KHz</em>&nbsp;</td><td class="fielddoc">
<p>Sample rate 8000 Hz. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga8d668e297c3e93bbc326c44538fefce5a20a0ee7adde7aca59883b3f7b5698d98"></a>kSAI_SampleRate11025Hz</em>&nbsp;</td><td class="fielddoc">
<p>Sample rate 11025 Hz. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga8d668e297c3e93bbc326c44538fefce5ab6f2876028ff4201e6e9411bd450e5e9"></a>kSAI_SampleRate12KHz</em>&nbsp;</td><td class="fielddoc">
<p>Sample rate 12000 Hz. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga8d668e297c3e93bbc326c44538fefce5a37f8460732967ce92f540c44d89b45ae"></a>kSAI_SampleRate16KHz</em>&nbsp;</td><td class="fielddoc">
<p>Sample rate 16000 Hz. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga8d668e297c3e93bbc326c44538fefce5a932187b8e03e6c60e5f6665f55e3f209"></a>kSAI_SampleRate22050Hz</em>&nbsp;</td><td class="fielddoc">
<p>Sample rate 22050 Hz. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga8d668e297c3e93bbc326c44538fefce5aec9824e27135f9641e61399b0c7ee72c"></a>kSAI_SampleRate24KHz</em>&nbsp;</td><td class="fielddoc">
<p>Sample rate 24000 Hz. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga8d668e297c3e93bbc326c44538fefce5aa745cb456e46ad4982c3d58882fb34a0"></a>kSAI_SampleRate32KHz</em>&nbsp;</td><td class="fielddoc">
<p>Sample rate 32000 Hz. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga8d668e297c3e93bbc326c44538fefce5aa00db6732444bb1976f130b8a283276c"></a>kSAI_SampleRate44100Hz</em>&nbsp;</td><td class="fielddoc">
<p>Sample rate 44100 Hz. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga8d668e297c3e93bbc326c44538fefce5a3539b8834c98c260c99b6092e7766cfc"></a>kSAI_SampleRate48KHz</em>&nbsp;</td><td class="fielddoc">
<p>Sample rate 48000 Hz. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga8d668e297c3e93bbc326c44538fefce5a345e0cda3185af26335f3720e0691aca"></a>kSAI_SampleRate96KHz</em>&nbsp;</td><td class="fielddoc">
<p>Sample rate 96000 Hz. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gae357d8842863ba610f57acd1e1f35528"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__sai.html#gae357d8842863ba610f57acd1e1f35528">sai_word_width_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ggae357d8842863ba610f57acd1e1f35528ac282421ee51ea251da06e459af3014a1"></a>kSAI_WordWidth8bits</em>&nbsp;</td><td class="fielddoc">
<p>Audio data width 8 bits. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggae357d8842863ba610f57acd1e1f35528a0328fc45f36f361f958cacd8378d4923"></a>kSAI_WordWidth16bits</em>&nbsp;</td><td class="fielddoc">
<p>Audio data width 16 bits. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggae357d8842863ba610f57acd1e1f35528a98f99f6e508d609333313277057d29a0"></a>kSAI_WordWidth24bits</em>&nbsp;</td><td class="fielddoc">
<p>Audio data width 24 bits. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggae357d8842863ba610f57acd1e1f35528a238d482a0f4a707bc199f5c54c168233"></a>kSAI_WordWidth32bits</em>&nbsp;</td><td class="fielddoc">
<p>Audio data width 32 bits. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="gae30b99a76b3189b36d19cff113a42fdf"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_TxInit </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">const <a class="el" href="group__sai.html#structsai__config__t">sai_config_t</a> *&#160;</td>
<td class="paramname"><em>config</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Ungates the SAI clock, resets the module, and configures SAI Tx with a configuration structure. The configuration structure can be custom filled or set with default values by <a class="el" href="group__sai.html#gacea3121e96a50e2ceb2dee437aac8c56" title="Sets the SAI Tx configuration structure to default values. ">SAI_TxGetDefaultConfig()</a>.</p>
<dl class="section note"><dt>Note</dt><dd>This API should be called at the beginning of the application to use the SAI driver. Otherwise, accessing the SAIM module can cause a hard fault because the clock is not enabled.</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">config</td><td>SAI configuration structure. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gacc398a5283804e04e006218810070e57"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_RxInit </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">const <a class="el" href="group__sai.html#structsai__config__t">sai_config_t</a> *&#160;</td>
<td class="paramname"><em>config</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Ungates the SAI clock, resets the module, and configures the SAI Rx with a configuration structure. The configuration structure can be custom filled or set with default values by <a class="el" href="group__sai.html#gac047637738322f87496c5ccc8fdf20d1" title="Sets the SAI Rx configuration structure to default values. ">SAI_RxGetDefaultConfig()</a>.</p>
<dl class="section note"><dt>Note</dt><dd>This API should be called at the beginning of the application to use the SAI driver. Otherwise, accessing the SAI module can cause a hard fault because the clock is not enabled.</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">config</td><td>SAI configuration structure. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gacea3121e96a50e2ceb2dee437aac8c56"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_TxGetDefaultConfig </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__sai.html#structsai__config__t">sai_config_t</a> *&#160;</td>
<td class="paramname"><em>config</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This API initializes the configuration structure for use in SAI_TxConfig(). The initialized structure can remain unchanged in SAI_TxConfig(), or it can be modified before calling SAI_TxConfig(). Example: </p>
<div class="fragment"><div class="line"><a class="code" href="group__sai.html#structsai__config__t">sai_config_t</a> config;</div>
<div class="line"><a class="code" href="group__sai.html#gacea3121e96a50e2ceb2dee437aac8c56">SAI_TxGetDefaultConfig</a>(&amp;config);</div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>pointer to master configuration structure </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac047637738322f87496c5ccc8fdf20d1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_RxGetDefaultConfig </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__sai.html#structsai__config__t">sai_config_t</a> *&#160;</td>
<td class="paramname"><em>config</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This API initializes the configuration structure for use in SAI_RxConfig(). The initialized structure can remain unchanged in SAI_RxConfig() or it can be modified before calling SAI_RxConfig(). Example: </p>
<div class="fragment"><div class="line"><a class="code" href="group__sai.html#structsai__config__t">sai_config_t</a> config;</div>
<div class="line"><a class="code" href="group__sai.html#gac047637738322f87496c5ccc8fdf20d1">SAI_RxGetDefaultConfig</a>(&amp;config);</div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>pointer to master configuration structure </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gae3acf95d83128d355a2935bb7ccd85ea"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_Deinit </td>
<td>(</td>
<td class="paramtype">I2S_Type *&#160;</td>
<td class="paramname"><em>base</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This API gates the SAI clock. The SAI module can't operate unless SAI_TxInit or SAI_RxInit is called to enable the clock.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SAI base pointer </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga66657a9e3eb593e979389cc1136fd277"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_TxReset </td>
<td>(</td>
<td class="paramtype">I2S_Type *&#160;</td>
<td class="paramname"><em>base</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function enables the software reset and FIFO reset of SAI Tx. After reset, clear the reset bit.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SAI base pointer </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga76c8fce1a9222a408a073873a27430f0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_RxReset </td>
<td>(</td>
<td class="paramtype">I2S_Type *&#160;</td>
<td class="paramname"><em>base</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function enables the software reset and FIFO reset of SAI Rx. After reset, clear the reset bit.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SAI base pointer </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga32b2f06766a8bb92dd778a152dfd8b2e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_TxEnable </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">bool&#160;</td>
<td class="paramname"><em>enable</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">enable</td><td>True means enable SAI Tx, false means disable. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaeaa118415a867f016efa6af3e0d06e17"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_RxEnable </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">bool&#160;</td>
<td class="paramname"><em>enable</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">enable</td><td>True means enable SAI Rx, false means disable. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga1cd557fc5610173b3f5007f9594db2ae"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static uint32_t SAI_TxGetStatusFlag </td>
<td>(</td>
<td class="paramtype">I2S_Type *&#160;</td>
<td class="paramname"><em>base</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </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>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SAI Tx status flag value. Use the Status Mask to get the status value needed. </dd></dl>
</div>
</div>
<a class="anchor" id="ga11127bb45b18dfa9d897046ab69b218d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void SAI_TxClearStatusFlags </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">uint32_t&#160;</td>
<td class="paramname"><em>mask</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </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">mask</td><td>State mask. It can be a combination of the following source if defined: <ul>
<li>kSAI_WordStartFlag </li>
<li>kSAI_SyncErrorFlag </li>
<li>kSAI_FIFOErrorFlag </li>
</ul>
</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga9857a73c0d40d12438a9bd336e237dfe"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static uint32_t SAI_RxGetStatusFlag </td>
<td>(</td>
<td class="paramtype">I2S_Type *&#160;</td>
<td class="paramname"><em>base</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </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>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SAI Rx status flag value. Use the Status Mask to get the status value needed. </dd></dl>
</div>
</div>
<a class="anchor" id="ga3329969cbf718114c37f10d88e527669"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void SAI_RxClearStatusFlags </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">uint32_t&#160;</td>
<td class="paramname"><em>mask</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </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">mask</td><td>State mask. It can be a combination of the following source if defined: <ul>
<li>kSAI_WordStartFlag </li>
<li>kSAI_SyncErrorFlag </li>
<li>kSAI_FIFOErrorFlag </li>
</ul>
</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gae298cb3fe881e951a8e291028d7cf3df"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void SAI_TxEnableInterrupts </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">uint32_t&#160;</td>
<td class="paramname"><em>mask</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </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">mask</td><td>interrupt source The parameter can be a combination of the following source if defined: <ul>
<li>kSAI_WordStartInterruptEnable </li>
<li>kSAI_SyncErrorInterruptEnable </li>
<li>kSAI_FIFOWarningInterruptEnable </li>
<li>kSAI_FIFORequestInterruptEnable </li>
<li>kSAI_FIFOErrorInterruptEnable </li>
</ul>
</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga43c4f7cbaf1188f9fd15c8c3a017870a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void SAI_RxEnableInterrupts </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">uint32_t&#160;</td>
<td class="paramname"><em>mask</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </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">mask</td><td>interrupt source The parameter can be a combination of the following source if defined: <ul>
<li>kSAI_WordStartInterruptEnable </li>
<li>kSAI_SyncErrorInterruptEnable </li>
<li>kSAI_FIFOWarningInterruptEnable </li>
<li>kSAI_FIFORequestInterruptEnable </li>
<li>kSAI_FIFOErrorInterruptEnable </li>
</ul>
</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga5baa11cc20615c1a9b32eea5f6021e66"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void SAI_TxDisableInterrupts </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">uint32_t&#160;</td>
<td class="paramname"><em>mask</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </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">mask</td><td>interrupt source The parameter can be a combination of the following source if defined: <ul>
<li>kSAI_WordStartInterruptEnable </li>
<li>kSAI_SyncErrorInterruptEnable </li>
<li>kSAI_FIFOWarningInterruptEnable </li>
<li>kSAI_FIFORequestInterruptEnable </li>
<li>kSAI_FIFOErrorInterruptEnable </li>
</ul>
</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga9cbeb122b61a580d052438157661c46f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void SAI_RxDisableInterrupts </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">uint32_t&#160;</td>
<td class="paramname"><em>mask</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </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">mask</td><td>interrupt source The parameter can be a combination of the following source if defined: <ul>
<li>kSAI_WordStartInterruptEnable </li>
<li>kSAI_SyncErrorInterruptEnable </li>
<li>kSAI_FIFOWarningInterruptEnable </li>
<li>kSAI_FIFORequestInterruptEnable </li>
<li>kSAI_FIFOErrorInterruptEnable </li>
</ul>
</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga131a59354eae81bb20068b7c5e805f9a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void SAI_TxEnableDMA </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">uint32_t&#160;</td>
<td class="paramname"><em>mask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>enable</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </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">mask</td><td>DMA source The parameter can be combination of the following source if defined: <ul>
<li>kSAI_FIFOWarningDMAEnable </li>
<li>kSAI_FIFORequestDMAEnable </li>
</ul>
</td></tr>
<tr><td class="paramname">enable</td><td>True means enable DMA, false means disable DMA. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga8061229e53203dfca2ed45b2f7648ca5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void SAI_RxEnableDMA </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">uint32_t&#160;</td>
<td class="paramname"><em>mask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>enable</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </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">mask</td><td>DMA source The parameter can be a combination of the following source if defined: <ul>
<li>kSAI_FIFOWarningDMAEnable </li>
<li>kSAI_FIFORequestDMAEnable </li>
</ul>
</td></tr>
<tr><td class="paramname">enable</td><td>True means enable DMA, false means disable DMA. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac19d42fce7cc3f6ab68f279be959f3bb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static uint32_t SAI_TxGetDataRegisterAddress </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">uint32_t&#160;</td>
<td class="paramname"><em>channel</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This API is used to provide a transfer address for SAI DMA transfer configuration.</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">channel</td><td>Which data channel used. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>data register address. </dd></dl>
</div>
</div>
<a class="anchor" id="ga2b90519b672bb8cb8b0aa6386f66c251"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static uint32_t SAI_RxGetDataRegisterAddress </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">uint32_t&#160;</td>
<td class="paramname"><em>channel</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This API is used to provide a transfer address for SAI DMA transfer configuration.</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">channel</td><td>Which data channel used. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>data register address. </dd></dl>
</div>
</div>
<a class="anchor" id="gaeeab03e24aa74980dd770d9e740c0b06"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_TxSetFormat </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="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.</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">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>
</div>
</div>
<a class="anchor" id="ga542afa36d64a6848bf174cb0e695b42b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_RxSetFormat </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="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.</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">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>
</div>
</div>
<a class="anchor" id="ga32e4d2e732142517cc9ae2c1d12ee641"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_WriteBlocking </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">uint32_t&#160;</td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>bitWidth</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>size</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 function blocks by polling until data is ready to be sent.</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">channel</td><td>Data channel used. </td></tr>
<tr><td class="paramname">bitWidth</td><td>How many bits in a audio word, usually 8/16/24/32 bits. </td></tr>
<tr><td class="paramname">buffer</td><td>Pointer to the data to be written. </td></tr>
<tr><td class="paramname">size</td><td>Bytes to be written. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga6299cd60dee1e684683f3473a62e831b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void SAI_WriteData </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">uint32_t&#160;</td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </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">channel</td><td>Data channel used. </td></tr>
<tr><td class="paramname">data</td><td>Data needs to be written. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga0f954b031a8e2a857a0fddf87a9a1368"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_ReadBlocking </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">uint32_t&#160;</td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>bitWidth</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>size</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 function blocks by polling until data is ready to be sent.</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">channel</td><td>Data channel used. </td></tr>
<tr><td class="paramname">bitWidth</td><td>How many bits in a audio word, usually 8/16/24/32 bits. </td></tr>
<tr><td class="paramname">buffer</td><td>Pointer to the data to be read. </td></tr>
<tr><td class="paramname">size</td><td>Bytes to be read. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gada44ab158250b8e94258b9d8fd3a63dd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static uint32_t SAI_ReadData </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">uint32_t&#160;</td>
<td class="paramname"><em>channel</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </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">channel</td><td>Data channel used. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Data in SAI FIFO. </dd></dl>
</div>
</div>
<a class="anchor" id="ga69eaf09522d88c69b47ec104c11875de"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_TransferTxCreateHandle </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_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#gacda077e13dd34cd0fa1e865354591fe2">sai_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">
<p>This function initializes the Tx handle for SAI Tx transactional APIs. Call this function one time to get the handle initialized.</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 handle pointer. </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>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga4c29a38ae0802fa81e304eee337ecf6b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_TransferRxCreateHandle </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_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#gacda077e13dd34cd0fa1e865354591fe2">sai_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">
<p>This function initializes the Rx handle for SAI Rx transactional APIs. Call this function one time to get the handle initialized.</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 handle pointer. </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>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga636cdc91fc752587bfd449fbf5f540bb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">status_t SAI_TransferTxSetFormat </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_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.</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 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 a master clock, this value should equal to masterClockHz in format. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status of this function. Return value is one of status_t. </dd></dl>
</div>
</div>
<a class="anchor" id="gaf9253863ef8232b06e82b5c6b69f20c1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">status_t SAI_TransferRxSetFormat </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_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.</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 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="section return"><dt>Returns</dt><dd>Status of this function. Return value is one of status_t. </dd></dl>
</div>
</div>
<a class="anchor" id="gaefe0557861a223913d7b1d8959a56995"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">status_t SAI_TransferSendNonBlocking </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_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 API returns immediately after the transfer initiates. Call the SAI_TxGetTransferStatusIRQ to poll the transfer status and check whether the transfer is finished. If the return status is not kStatus_SAI_Busy, the 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>pointer to sai_handle_t structure which stores the transfer state </td></tr>
<tr><td class="paramname">xfer</td><td>pointer to <a class="el" href="group__sai.html#structsai__transfer__t" title="SAI transfer structure. ">sai_transfer_t</a> 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>Successfully started the data receive. </td></tr>
<tr><td class="paramname">kStatus_SAI_TxBusy</td><td>Previous receive still not finished. </td></tr>
<tr><td class="paramname">kStatus_InvalidArgument</td><td>The input parameter is invalid. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gad23a55af8054fbd0cb8cbb175f2e497c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">status_t SAI_TransferReceiveNonBlocking </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_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 API returns immediately after the transfer initiates. Call the SAI_RxGetTransferStatusIRQ to poll the transfer status and check whether the transfer is finished. If the return status is not kStatus_SAI_Busy, the 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>pointer to sai_handle_t structure which stores the transfer state </td></tr>
<tr><td class="paramname">xfer</td><td>pointer to <a class="el" href="group__sai.html#structsai__transfer__t" title="SAI transfer structure. ">sai_transfer_t</a> 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>Successfully started the data receive. </td></tr>
<tr><td class="paramname">kStatus_SAI_RxBusy</td><td>Previous receive still not finished. </td></tr>
<tr><td class="paramname">kStatus_InvalidArgument</td><td>The input parameter is invalid. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac2b7aaa215232aa8e12eb751b0edd90f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">status_t SAI_TransferGetSendCount </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_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>pointer to sai_handle_t structure which stores the transfer state. </td></tr>
<tr><td class="paramname">count</td><td>Bytes count sent. </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 not a non-blocking transaction currently in progress. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gafb739944ba12a66543842993c1716464"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">status_t SAI_TransferGetReceiveCount </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_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>pointer to sai_handle_t structure which stores the transfer state. </td></tr>
<tr><td class="paramname">count</td><td>Bytes count received. </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 not a non-blocking transaction currently in progress. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga9fca6aa3b5cbcf05ca2c0b6637b476e7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_TransferAbortSend </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_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="section note"><dt>Note</dt><dd>This API can be called any time when an interrupt non-blocking transfer initiates to abort the transfer early.</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>pointer to sai_handle_t structure which stores the transfer state. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gab2859ed8b6805a962d45d5eb16a9095f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_TransferAbortReceive </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_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="section note"><dt>Note</dt><dd>This API can be called any time when an interrupt non-blocking transfer initiates to abort the transfer early.</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>pointer to sai_handle_t structure which stores the transfer state. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga40d3fede9289fcea2706679138ce466a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_TransferTxHandleIRQ </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_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>pointer to sai_handle_t structure. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gab66ff18cc17137d132a3b5c8accbdb34"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SAI_TransferRxHandleIRQ </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_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>pointer to sai_handle_t structure. </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 Freescale Semiconductor, Inc. All rights reserved.
</li>
</ul>
</div>
</body>
</html>