Files
KSDK_2.0_MK22FN512xxx12/docs/Kinetis SDK v.2.0 API Reference Manual/group__spi__driver.html
2016-08-09 18:06:35 +02:00

1894 lines
117 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>Kinetis SDK v.2.0 API Reference Manual: SPI Driver</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="fs_logo.gif"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">Kinetis SDK v.2.0 API Reference Manual
&#160;<span id="projectnumber">Rev. 0</span>
</div>
<div id="projectbrief">Freescale Semiconductor, Inc.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>API&#160;Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('group__spi__driver.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="#files">Files</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">SPI Driver<div class="ingroups"><a class="el" href="group__spi.html">SPI: Serial Peripheral Interface Driver</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p><h1><a class="anchor" id="SPIOvw"></a>
Overview</h1>
<a href="#details">More...</a></p>
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<p>SPI driver includes functional APIs and transactional APIs.</p>
<p>Functional APIs are feature/property target low level APIs. Functional APIs can be used for SPI initialization/configuration/operation for optimization/customization purpose. Using the functional API requires the knowledge of the SPI peripheral and how to organize functional APIs to meet the application requirements. All functional API use the peripheral base address as the first parameter. SPI 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 spi_handle_t as the first parameter. Initialize the handle by calling the <a class="el" href="group__spi__driver.html#ga6cf3e807307ecb22578cc9088adafcf2" title="Initializes the SPI master handle. ">SPI_MasterTransferCreateHandle()</a> or <a class="el" href="group__spi__driver.html#ga7b96130e93f13360909634c8fd5989b2" title="Initializes the SPI slave handle. ">SPI_SlaveTransferCreateHandle()</a> API.</p>
<p>Transactional APIs support asynchronous transfer. This means that the functions <a class="el" href="group__spi__driver.html#ga820c78a32fa29735168d2e517f4881a1" title="Performs a non-blocking SPI interrupt transfer. ">SPI_MasterTransferNonBlocking()</a> and <a class="el" href="group__spi__driver.html#gae37917cb354e36acd1b1ca906d2ffe1c" title="Performs a non-blocking SPI slave interrupt transfer. ">SPI_SlaveTransferNonBlocking()</a> set up the interrupt for data transfer. When the transfer completes, the upper layer is notified through a callback function with the kStatus_SPI_Idle status.</p>
<h1><a class="anchor" id="SPICase"></a>
Typical use case</h1>
<h2><a class="anchor" id="SPICaseInterrupt"></a>
SPI master transfer using an interrupt method</h2>
<div class="fragment"><div class="line"><span class="preprocessor">#define BUFFER_LEN (64)</span></div>
<div class="line"><span class="preprocessor"></span>spi_master_handle_t spiHandle;</div>
<div class="line"><a class="code" href="group__spi__driver.html#structspi__master__config__t">spi_master_config_t</a> masterConfig;</div>
<div class="line"><a class="code" href="group__spi__driver.html#structspi__transfer__t">spi_transfer_t</a> xfer;</div>
<div class="line"><span class="keyword">volatile</span> <span class="keywordtype">bool</span> isFinished = <span class="keyword">false</span>;</div>
<div class="line"></div>
<div class="line"><span class="keyword">const</span> uint8_t sendData[BUFFER_LEN] = [......];</div>
<div class="line">uint8_t receiveBuff[BUFFER_LEN];</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> SPI_UserCallback(SPI_Type *base, spi_master_handle_t *handle, status_t status, <span class="keywordtype">void</span> *userData)</div>
<div class="line">{</div>
<div class="line"> isFinished = <span class="keyword">true</span>;</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__spi__driver.html#ga45c08fc078ae334b79fb844379140838">SPI_MasterGetDefaultConfig</a>(&amp;masterConfig);</div>
<div class="line"></div>
<div class="line"> <a class="code" href="group__spi__driver.html#ga3fe5b421b088cc98222b8a214069574b">SPI_MasterInit</a>(SPI0, &amp;masterConfig);</div>
<div class="line"> <a class="code" href="group__spi__driver.html#ga6cf3e807307ecb22578cc9088adafcf2">SPI_MasterTransferCreateHandle</a>(SPI0, &amp;spiHandle, SPI_UserCallback, NULL);</div>
<div class="line"></div>
<div class="line"> <span class="comment">// Prepare to send.</span></div>
<div class="line"> xfer.<a class="code" href="group__spi__driver.html#addc4f20760a1a62c4d20cdf9443f3af3">txData</a> = sendData;</div>
<div class="line"> xfer.<a class="code" href="group__spi__driver.html#a28b878b99d5ec790b5c8f3bafe140da0">rxData</a> = receiveBuff;</div>
<div class="line"> xfer.<a class="code" href="group__spi__driver.html#ae003337c9398e5f5e3189f5b2ba6335b">dataSize</a> = BUFFER_LEN;</div>
<div class="line"></div>
<div class="line"> <span class="comment">// Send out.</span></div>
<div class="line"> <a class="code" href="group__spi__driver.html#ga820c78a32fa29735168d2e517f4881a1">SPI_MasterTransferNonBlocking</a>(SPI0, &amp;spiHandle, &amp;xfer);</div>
<div class="line"></div>
<div class="line"> <span class="comment">// Wait send finished.</span></div>
<div class="line"> <span class="keywordflow">while</span> (!isFinished)</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="SPICaseDma"></a>
SPI Send/receive using a DMA method</h2>
<div class="fragment"><div class="line"><span class="preprocessor">#define BUFFER_LEN (64)</span></div>
<div class="line"><span class="preprocessor"></span>spi_dma_handle_t spiHandle;</div>
<div class="line"><a class="code" href="group__dma__driver.html#structdma__handle__t">dma_handle_t</a> g_spiTxDmaHandle;</div>
<div class="line"><a class="code" href="group__dma__driver.html#structdma__handle__t">dma_handle_t</a> g_spiRxDmaHandle;</div>
<div class="line">spi_config_t masterConfig;</div>
<div class="line"><a class="code" href="group__spi__driver.html#structspi__transfer__t">spi_transfer_t</a> xfer;</div>
<div class="line"><span class="keyword">volatile</span> <span class="keywordtype">bool</span> isFinished;</div>
<div class="line">uint8_t sendData[BUFFER_LEN] = ...;</div>
<div class="line">uint8_t receiveBuff[BUFFER_LEN];</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> SPI_UserCallback(SPI_Type *base, spi_dma_handle_t *handle, status_t status, <span class="keywordtype">void</span> *userData)</div>
<div class="line">{</div>
<div class="line"> isFinished = <span class="keyword">true</span>;</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__spi__driver.html#ga45c08fc078ae334b79fb844379140838">SPI_MasterGetDefaultConfig</a>(&amp;masterConfig);</div>
<div class="line"> <a class="code" href="group__spi__driver.html#ga3fe5b421b088cc98222b8a214069574b">SPI_MasterInit</a>(SPI0, &amp;masterConfig);</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#gaeef2299701369971128b0be4d5237e3d">DMAMUX_SetSource</a>(DMAMUX0, SPI_TX_DMA_CHANNEL, SPI_TX_DMA_REQUEST);</div>
<div class="line"> <a class="code" href="group__dmamux.html#gaecac68802d961c31a06389caa97387f5">DMAMUX_EnableChannel</a>(DMAMUX0, SPI_TX_DMA_CHANNEL);</div>
<div class="line"> <a class="code" href="group__dmamux.html#gaeef2299701369971128b0be4d5237e3d">DMAMUX_SetSource</a>(DMAMUX0, SPI_RX_DMA_CHANNEL, SPI_RX_DMA_REQUEST);</div>
<div class="line"> <a class="code" href="group__dmamux.html#gaecac68802d961c31a06389caa97387f5">DMAMUX_EnableChannel</a>(DMAMUX0, SPI_RX_DMA_CHANNEL);</div>
<div class="line"></div>
<div class="line"> <a class="code" href="group__dma__driver.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"><span class="comment"> DMA_CreateHandle(&amp;g_spiTxDmaHandle, DMA0, SPI_TX_DMA_CHANNEL);</span></div>
<div class="line"><span class="comment"> DMA_CreateHandle(&amp;g_spiRxDmaHandle, DMA0, SPI_RX_DMA_CHANNEL);</span></div>
<div class="line"><span class="comment"></span></div>
<div class="line"><span class="comment"> SPI_MasterTransferCreateHandleDMA(SPI0, spiHandle, &amp;g_spiTxDmaHandle, &amp;g_spiRxDmaHandle, SPI_UserCallback, NULL);</span></div>
<div class="line"><span class="comment"></span></div>
<div class="line"><span class="comment"> // Prepares to send.</span></div>
<div class="line"><span class="comment"> xfer.txData = sendData;</span></div>
<div class="line"><span class="comment"> xfer.rxData = receiveBuff;</span></div>
<div class="line"><span class="comment"> xfer.dataSize = BUFFER_LEN;</span></div>
<div class="line"><span class="comment"></span></div>
<div class="line"><span class="comment"> // Sends out.</span></div>
<div class="line"><span class="comment"> SPI_MasterTransferDMA(SPI0, &amp;spiHandle, &amp;xfer);</span></div>
<div class="line"><span class="comment"></span></div>
<div class="line"><span class="comment"> // Waits for send to complete.</span></div>
<div class="line"><span class="comment"> while (!isFinished)</span></div>
<div class="line"><span class="comment"> {</span></div>
<div class="line"><span class="comment"> }</span></div>
<div class="line"><span class="comment"></span></div>
<div class="line"><span class="comment"> // ...</span></div>
<div class="line"><span class="comment">}</span></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__spi__dma__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__dma__driver.html">SPI DMA 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="files"></a>
Files</h2></td></tr>
<tr class="memitem:fsl__spi_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fsl__spi_8h.html">fsl_spi.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:structspi__master__config__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#structspi__master__config__t">spi_master_config_t</a></td></tr>
<tr class="memdesc:structspi__master__config__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI master user configure structure. <a href="group__spi__driver.html#structspi__master__config__t">More...</a><br/></td></tr>
<tr class="separator:structspi__master__config__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structspi__slave__config__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#structspi__slave__config__t">spi_slave_config_t</a></td></tr>
<tr class="memdesc:structspi__slave__config__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI slave user configure structure. <a href="group__spi__driver.html#structspi__slave__config__t">More...</a><br/></td></tr>
<tr class="separator:structspi__slave__config__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:structspi__transfer__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#structspi__transfer__t">spi_transfer_t</a></td></tr>
<tr class="memdesc:structspi__transfer__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI transfer structure. <a href="group__spi__driver.html#structspi__transfer__t">More...</a><br/></td></tr>
<tr class="separator:structspi__transfer__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:struct__spi__master__handle"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#struct__spi__master__handle">spi_master_handle_t</a></td></tr>
<tr class="memdesc:struct__spi__master__handle"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI transfer handle structure. <a href="group__spi__driver.html#struct__spi__master__handle">More...</a><br/></td></tr>
<tr class="separator:struct__spi__master__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:ga1541129ba8262e1649592b5109e2074c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ga1541129ba8262e1649592b5109e2074c">SPI_DUMMYDATA</a>&#160;&#160;&#160;(0xFFU)</td></tr>
<tr class="memdesc:ga1541129ba8262e1649592b5109e2074c"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI dummy transfer data, the data is sent while txBuff is NULL. <a href="#ga1541129ba8262e1649592b5109e2074c">More...</a><br/></td></tr>
<tr class="separator:ga1541129ba8262e1649592b5109e2074c"><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:gad267cfee3a876b2860217ff94f03f574"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad267cfee3a876b2860217ff94f03f574"></a>
typedef spi_master_handle_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#gad267cfee3a876b2860217ff94f03f574">spi_slave_handle_t</a></td></tr>
<tr class="memdesc:gad267cfee3a876b2860217ff94f03f574"><td class="mdescLeft">&#160;</td><td class="mdescRight">Slave handle is the same with master handle. <br/></td></tr>
<tr class="separator:gad267cfee3a876b2860217ff94f03f574"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae9bd140aeb645efab6c7552b3994e01a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae9bd140aeb645efab6c7552b3994e01a"></a>
typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#gae9bd140aeb645efab6c7552b3994e01a">spi_master_callback_t</a> )(SPI_Type *base, spi_master_handle_t *handle, status_t status, void *userData)</td></tr>
<tr class="memdesc:gae9bd140aeb645efab6c7552b3994e01a"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI master callback for finished transmit. <br/></td></tr>
<tr class="separator:gae9bd140aeb645efab6c7552b3994e01a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga86b45b85e036adc762eed5bcd2a0491d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga86b45b85e036adc762eed5bcd2a0491d"></a>
typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ga86b45b85e036adc762eed5bcd2a0491d">spi_slave_callback_t</a> )(SPI_Type *base, <a class="el" href="group__spi__driver.html#gad267cfee3a876b2860217ff94f03f574">spi_slave_handle_t</a> *handle, status_t status, void *userData)</td></tr>
<tr class="memdesc:ga86b45b85e036adc762eed5bcd2a0491d"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI master callback for finished transmit. <br/></td></tr>
<tr class="separator:ga86b45b85e036adc762eed5bcd2a0491d"><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:ga3fa79a6717ea4e1e74de2dadaa468edd"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ga3fa79a6717ea4e1e74de2dadaa468edd">_spi_status</a> { <br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#gga3fa79a6717ea4e1e74de2dadaa468edda703abdf7900047c4d13536480f3463ab">kStatus_SPI_Busy</a> = MAKE_STATUS(kStatusGroup_SPI, 0),
<br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#gga3fa79a6717ea4e1e74de2dadaa468edda4e32c5b06dccaf4b81e2fd1679e1b560">kStatus_SPI_Idle</a> = MAKE_STATUS(kStatusGroup_SPI, 1),
<br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#gga3fa79a6717ea4e1e74de2dadaa468edda2ff91d774e93aed936b87ffaa18aaf9e">kStatus_SPI_Error</a> = MAKE_STATUS(kStatusGroup_SPI, 2)
<br/>
}</td></tr>
<tr class="memdesc:ga3fa79a6717ea4e1e74de2dadaa468edd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return status for the SPI driver. <a href="group__spi__driver.html#ga3fa79a6717ea4e1e74de2dadaa468edd">More...</a><br/></td></tr>
<tr class="separator:ga3fa79a6717ea4e1e74de2dadaa468edd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3e5a7cd043c9596779bc23b34cb3d1f9"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ga3e5a7cd043c9596779bc23b34cb3d1f9">spi_clock_polarity_t</a> { <br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#gga3e5a7cd043c9596779bc23b34cb3d1f9a031c0ee2693cf1fd621e8b8cba676629">kSPI_ClockPolarityActiveHigh</a> = 0x0U,
<br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#gga3e5a7cd043c9596779bc23b34cb3d1f9acfc8257079c9604086622df6de326aea">kSPI_ClockPolarityActiveLow</a>
<br/>
}</td></tr>
<tr class="memdesc:ga3e5a7cd043c9596779bc23b34cb3d1f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI clock polarity configuration. <a href="group__spi__driver.html#ga3e5a7cd043c9596779bc23b34cb3d1f9">More...</a><br/></td></tr>
<tr class="separator:ga3e5a7cd043c9596779bc23b34cb3d1f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9ad313685ade497f5cbcb71c74a1b4dc"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ga9ad313685ade497f5cbcb71c74a1b4dc">spi_clock_phase_t</a> { <br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#gga9ad313685ade497f5cbcb71c74a1b4dcad15d61c6fd642f13101edbf401d0c72e">kSPI_ClockPhaseFirstEdge</a> = 0x0U,
<br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#gga9ad313685ade497f5cbcb71c74a1b4dca18a98985c1f7dd56175e4a2724db3675">kSPI_ClockPhaseSecondEdge</a>
<br/>
}</td></tr>
<tr class="memdesc:ga9ad313685ade497f5cbcb71c74a1b4dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI clock phase configuration. <a href="group__spi__driver.html#ga9ad313685ade497f5cbcb71c74a1b4dc">More...</a><br/></td></tr>
<tr class="separator:ga9ad313685ade497f5cbcb71c74a1b4dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa68518c16202382c2e1f1c7c66a9d53d"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#gaa68518c16202382c2e1f1c7c66a9d53d">spi_shift_direction_t</a> { <br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#ggaa68518c16202382c2e1f1c7c66a9d53dae7b997e8cff761aab865cbd42c4c3989">kSPI_MsbFirst</a> = 0x0U,
<br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#ggaa68518c16202382c2e1f1c7c66a9d53da20ac53684c3e1ad338553cecbfab94a9">kSPI_LsbFirst</a>
<br/>
}</td></tr>
<tr class="memdesc:gaa68518c16202382c2e1f1c7c66a9d53d"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI data shifter direction options. <a href="group__spi__driver.html#gaa68518c16202382c2e1f1c7c66a9d53d">More...</a><br/></td></tr>
<tr class="separator:gaa68518c16202382c2e1f1c7c66a9d53d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2e5a238c65f35a2d82cc1c55927030fe"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ga2e5a238c65f35a2d82cc1c55927030fe">spi_ss_output_mode_t</a> { <br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#gga2e5a238c65f35a2d82cc1c55927030fea3825177650b5d4bfb5dc603f0ce41381">kSPI_SlaveSelectAsGpio</a> = 0x0U,
<br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#gga2e5a238c65f35a2d82cc1c55927030feafdcbdc624d6c2f057147e2aa3cae4635">kSPI_SlaveSelectFaultInput</a> = 0x2U,
<br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#gga2e5a238c65f35a2d82cc1c55927030fead724fc04589d03b524ef2dfef6b0f4a1">kSPI_SlaveSelectAutomaticOutput</a> = 0x3U
<br/>
}</td></tr>
<tr class="memdesc:ga2e5a238c65f35a2d82cc1c55927030fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI slave select output mode options. <a href="group__spi__driver.html#ga2e5a238c65f35a2d82cc1c55927030fe">More...</a><br/></td></tr>
<tr class="separator:ga2e5a238c65f35a2d82cc1c55927030fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab55fee4d636428392047e3355f33a36f"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#gab55fee4d636428392047e3355f33a36f">spi_pin_mode_t</a> { <br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#ggab55fee4d636428392047e3355f33a36fa7ba3d5ffce8458f91a9594e7ffe2b32d">kSPI_PinModeNormal</a> = 0x0U,
<br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#ggab55fee4d636428392047e3355f33a36fad778c9cc9e3d5a5c4e8061793cf50fdc">kSPI_PinModeInput</a> = 0x1U,
<br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#ggab55fee4d636428392047e3355f33a36fad5b79c8eba688dbfb4b9973348521de7">kSPI_PinModeOutput</a> = 0x3U
<br/>
}</td></tr>
<tr class="memdesc:gab55fee4d636428392047e3355f33a36f"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI pin mode options. <a href="group__spi__driver.html#gab55fee4d636428392047e3355f33a36f">More...</a><br/></td></tr>
<tr class="separator:gab55fee4d636428392047e3355f33a36f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa7bfe75c1f0ea3b349f19a3de19b24e4"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#gaa7bfe75c1f0ea3b349f19a3de19b24e4">spi_data_bitcount_mode_t</a> { <br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#ggaa7bfe75c1f0ea3b349f19a3de19b24e4a1a0723fd8cd73f361ca2770ad74a6324">kSPI_8BitMode</a> = 0x0U,
<br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#ggaa7bfe75c1f0ea3b349f19a3de19b24e4a740c43589ebe839f3adc77b8ca484ea4">kSPI_16BitMode</a>
<br/>
}</td></tr>
<tr class="memdesc:gaa7bfe75c1f0ea3b349f19a3de19b24e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI data length mode options. <a href="group__spi__driver.html#gaa7bfe75c1f0ea3b349f19a3de19b24e4">More...</a><br/></td></tr>
<tr class="separator:gaa7bfe75c1f0ea3b349f19a3de19b24e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaedd690a0f91a0a9eb0fd573b57e31f67"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#gaedd690a0f91a0a9eb0fd573b57e31f67">_spi_interrupt_enable</a> { <br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#ggaedd690a0f91a0a9eb0fd573b57e31f67aa317b77c827ed1462b766dddd93f7f10">kSPI_RxFullAndModfInterruptEnable</a> = 0x1U,
<br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#ggaedd690a0f91a0a9eb0fd573b57e31f67abe157750a1660d839a66197c56ac5096">kSPI_TxEmptyInterruptEnable</a> = 0x2U,
<br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#ggaedd690a0f91a0a9eb0fd573b57e31f67a95cc9167ada10046534dc22549c6a99e">kSPI_MatchInterruptEnable</a> = 0x4U
<br/>
}</td></tr>
<tr class="memdesc:gaedd690a0f91a0a9eb0fd573b57e31f67"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI interrupt sources. <a href="group__spi__driver.html#gaedd690a0f91a0a9eb0fd573b57e31f67">More...</a><br/></td></tr>
<tr class="separator:gaedd690a0f91a0a9eb0fd573b57e31f67"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaea776f478792865a85b7311e6ff5896c"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#gaea776f478792865a85b7311e6ff5896c">_spi_flags</a> { <br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#ggaea776f478792865a85b7311e6ff5896cacc0e5c67e296cc20197afaca46f22953">kSPI_RxBufferFullFlag</a> = SPI_S_SPRF_MASK,
<br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#ggaea776f478792865a85b7311e6ff5896ca9c24fe83960ed64638f06eeb17643da5">kSPI_MatchFlag</a> = SPI_S_SPMF_MASK,
<br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#ggaea776f478792865a85b7311e6ff5896ca07934a27954d951831e7cdb96c39afd7">kSPI_TxBufferEmptyFlag</a> = SPI_S_SPTEF_MASK,
<br/>
&#160;&#160;<a class="el" href="group__spi__driver.html#ggaea776f478792865a85b7311e6ff5896ca9eca4e759c879e3b264d052c234a09d1">kSPI_ModeFaultFlag</a> = SPI_S_MODF_MASK
<br/>
}</td></tr>
<tr class="memdesc:gaea776f478792865a85b7311e6ff5896c"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI status flags. <a href="group__spi__driver.html#gaea776f478792865a85b7311e6ff5896c">More...</a><br/></td></tr>
<tr class="separator:gaea776f478792865a85b7311e6ff5896c"><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:gaeb6046de02dffe9248de71332fac246e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#gaeb6046de02dffe9248de71332fac246e">FSL_SPI_DRIVER_VERSION</a>&#160;&#160;&#160;(<a class="el" href="group__flash__driver.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2, 0, 0))</td></tr>
<tr class="memdesc:gaeb6046de02dffe9248de71332fac246e"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI driver version 2.0.0. <a href="#gaeb6046de02dffe9248de71332fac246e">More...</a><br/></td></tr>
<tr class="separator:gaeb6046de02dffe9248de71332fac246e"><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:ga45c08fc078ae334b79fb844379140838"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ga45c08fc078ae334b79fb844379140838">SPI_MasterGetDefaultConfig</a> (<a class="el" href="group__spi__driver.html#structspi__master__config__t">spi_master_config_t</a> *config)</td></tr>
<tr class="memdesc:ga45c08fc078ae334b79fb844379140838"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the SPI master configuration structure to default values. <a href="#ga45c08fc078ae334b79fb844379140838">More...</a><br/></td></tr>
<tr class="separator:ga45c08fc078ae334b79fb844379140838"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3fe5b421b088cc98222b8a214069574b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ga3fe5b421b088cc98222b8a214069574b">SPI_MasterInit</a> (SPI_Type *base, const <a class="el" href="group__spi__driver.html#structspi__master__config__t">spi_master_config_t</a> *config, uint32_t srcClock_Hz)</td></tr>
<tr class="memdesc:ga3fe5b421b088cc98222b8a214069574b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the SPI with master configuration. <a href="#ga3fe5b421b088cc98222b8a214069574b">More...</a><br/></td></tr>
<tr class="separator:ga3fe5b421b088cc98222b8a214069574b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac000b63ed033f57a9eee342a8c8e67f2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#gac000b63ed033f57a9eee342a8c8e67f2">SPI_SlaveGetDefaultConfig</a> (<a class="el" href="group__spi__driver.html#structspi__slave__config__t">spi_slave_config_t</a> *config)</td></tr>
<tr class="memdesc:gac000b63ed033f57a9eee342a8c8e67f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the SPI slave configuration structure to default values. <a href="#gac000b63ed033f57a9eee342a8c8e67f2">More...</a><br/></td></tr>
<tr class="separator:gac000b63ed033f57a9eee342a8c8e67f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga91b214b5392fc8d5b73a5ebadc5ca363"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ga91b214b5392fc8d5b73a5ebadc5ca363">SPI_SlaveInit</a> (SPI_Type *base, const <a class="el" href="group__spi__driver.html#structspi__slave__config__t">spi_slave_config_t</a> *config)</td></tr>
<tr class="memdesc:ga91b214b5392fc8d5b73a5ebadc5ca363"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the SPI with slave configuration. <a href="#ga91b214b5392fc8d5b73a5ebadc5ca363">More...</a><br/></td></tr>
<tr class="separator:ga91b214b5392fc8d5b73a5ebadc5ca363"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaac0bc2b87ea2eb7eeba78d9449d4dbbf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#gaac0bc2b87ea2eb7eeba78d9449d4dbbf">SPI_Deinit</a> (SPI_Type *base)</td></tr>
<tr class="memdesc:gaac0bc2b87ea2eb7eeba78d9449d4dbbf"><td class="mdescLeft">&#160;</td><td class="mdescRight">De-initializes the SPI. <a href="#gaac0bc2b87ea2eb7eeba78d9449d4dbbf">More...</a><br/></td></tr>
<tr class="separator:gaac0bc2b87ea2eb7eeba78d9449d4dbbf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaae5df847701d3171c2e6787b33e2f1ed"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#gaae5df847701d3171c2e6787b33e2f1ed">SPI_Enable</a> (I2C_Type *base, bool enable)</td></tr>
<tr class="memdesc:gaae5df847701d3171c2e6787b33e2f1ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables or disables the SPI. <a href="#gaae5df847701d3171c2e6787b33e2f1ed">More...</a><br/></td></tr>
<tr class="separator:gaae5df847701d3171c2e6787b33e2f1ed"><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:gaaa5a317a68b409dfe20397b45e48d1f0"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#gaaa5a317a68b409dfe20397b45e48d1f0">SPI_GetStatusFlags</a> (SPI_Type *base)</td></tr>
<tr class="memdesc:gaaa5a317a68b409dfe20397b45e48d1f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the status flag. <a href="#gaaa5a317a68b409dfe20397b45e48d1f0">More...</a><br/></td></tr>
<tr class="separator:gaaa5a317a68b409dfe20397b45e48d1f0"><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:gac12d144816080c40ca86d762e31aacc4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#gac12d144816080c40ca86d762e31aacc4">SPI_EnableInterrupts</a> (SPI_Type *base, uint32_t mask)</td></tr>
<tr class="memdesc:gac12d144816080c40ca86d762e31aacc4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables the interrupt for the SPI. <a href="#gac12d144816080c40ca86d762e31aacc4">More...</a><br/></td></tr>
<tr class="separator:gac12d144816080c40ca86d762e31aacc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1c3de83156f45d3f91540a1ec5f92826"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ga1c3de83156f45d3f91540a1ec5f92826">SPI_DisableInterrupts</a> (SPI_Type *base, uint32_t mask)</td></tr>
<tr class="memdesc:ga1c3de83156f45d3f91540a1ec5f92826"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disables the interrupt for the SPI. <a href="#ga1c3de83156f45d3f91540a1ec5f92826">More...</a><br/></td></tr>
<tr class="separator:ga1c3de83156f45d3f91540a1ec5f92826"><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:ga740215d83c1238818dfd4689163f71de"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ga740215d83c1238818dfd4689163f71de">SPI_GetDataRegisterAddress</a> (SPI_Type *base)</td></tr>
<tr class="memdesc:ga740215d83c1238818dfd4689163f71de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the SPI tx/rx data register address. <a href="#ga740215d83c1238818dfd4689163f71de">More...</a><br/></td></tr>
<tr class="separator:ga740215d83c1238818dfd4689163f71de"><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:ga3ebe045018782edb3624026795d6269a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ga3ebe045018782edb3624026795d6269a">SPI_MasterSetBaudRate</a> (SPI_Type *base, uint32_t baudRate_Bps, uint32_t srcClock_Hz)</td></tr>
<tr class="memdesc:ga3ebe045018782edb3624026795d6269a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the baud rate for SPI transfer. <a href="#ga3ebe045018782edb3624026795d6269a">More...</a><br/></td></tr>
<tr class="separator:ga3ebe045018782edb3624026795d6269a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga981b773ced8cc0df2493691842a14e05"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ga981b773ced8cc0df2493691842a14e05">SPI_SetMatchData</a> (SPI_Type *base, uint32_t matchData)</td></tr>
<tr class="memdesc:ga981b773ced8cc0df2493691842a14e05"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the match data for SPI. <a href="#ga981b773ced8cc0df2493691842a14e05">More...</a><br/></td></tr>
<tr class="separator:ga981b773ced8cc0df2493691842a14e05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae28a41ba015e3bc92936459f83500cd0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#gae28a41ba015e3bc92936459f83500cd0">SPI_WriteBlocking</a> (SPI_Type *base, uint8_t *buffer, size_t size)</td></tr>
<tr class="memdesc:gae28a41ba015e3bc92936459f83500cd0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sends a buffer of data bytes using a blocking method. <a href="#gae28a41ba015e3bc92936459f83500cd0">More...</a><br/></td></tr>
<tr class="separator:gae28a41ba015e3bc92936459f83500cd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga74d8732386a607c263bd16c8294b08d6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ga74d8732386a607c263bd16c8294b08d6">SPI_WriteData</a> (SPI_Type *base, uint16_t data)</td></tr>
<tr class="memdesc:ga74d8732386a607c263bd16c8294b08d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes a data into the SPI data register. <a href="#ga74d8732386a607c263bd16c8294b08d6">More...</a><br/></td></tr>
<tr class="separator:ga74d8732386a607c263bd16c8294b08d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf23d3779b122e78fc07562bf5dbf3ac3"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#gaf23d3779b122e78fc07562bf5dbf3ac3">SPI_ReadData</a> (SPI_Type *base)</td></tr>
<tr class="memdesc:gaf23d3779b122e78fc07562bf5dbf3ac3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a data from the SPI data register. <a href="#gaf23d3779b122e78fc07562bf5dbf3ac3">More...</a><br/></td></tr>
<tr class="separator:gaf23d3779b122e78fc07562bf5dbf3ac3"><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:ga6cf3e807307ecb22578cc9088adafcf2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ga6cf3e807307ecb22578cc9088adafcf2">SPI_MasterTransferCreateHandle</a> (SPI_Type *base, spi_master_handle_t *handle, <a class="el" href="group__spi__driver.html#gae9bd140aeb645efab6c7552b3994e01a">spi_master_callback_t</a> callback, void *userData)</td></tr>
<tr class="memdesc:ga6cf3e807307ecb22578cc9088adafcf2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the SPI master handle. <a href="#ga6cf3e807307ecb22578cc9088adafcf2">More...</a><br/></td></tr>
<tr class="separator:ga6cf3e807307ecb22578cc9088adafcf2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5b05095245ecf01258e64cc0458fb2e9"><td class="memItemLeft" align="right" valign="top">status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ga5b05095245ecf01258e64cc0458fb2e9">SPI_MasterTransferBlocking</a> (SPI_Type *base, <a class="el" href="group__spi__driver.html#structspi__transfer__t">spi_transfer_t</a> *xfer)</td></tr>
<tr class="memdesc:ga5b05095245ecf01258e64cc0458fb2e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transfers a block of data using a polling method. <a href="#ga5b05095245ecf01258e64cc0458fb2e9">More...</a><br/></td></tr>
<tr class="separator:ga5b05095245ecf01258e64cc0458fb2e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga820c78a32fa29735168d2e517f4881a1"><td class="memItemLeft" align="right" valign="top">status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ga820c78a32fa29735168d2e517f4881a1">SPI_MasterTransferNonBlocking</a> (SPI_Type *base, spi_master_handle_t *handle, <a class="el" href="group__spi__driver.html#structspi__transfer__t">spi_transfer_t</a> *xfer)</td></tr>
<tr class="memdesc:ga820c78a32fa29735168d2e517f4881a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a non-blocking SPI interrupt transfer. <a href="#ga820c78a32fa29735168d2e517f4881a1">More...</a><br/></td></tr>
<tr class="separator:ga820c78a32fa29735168d2e517f4881a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabde0dccfb0783d103b9cf57e0202582f"><td class="memItemLeft" align="right" valign="top">status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#gabde0dccfb0783d103b9cf57e0202582f">SPI_MasterTransferGetCount</a> (SPI_Type *base, spi_master_handle_t *handle, size_t *count)</td></tr>
<tr class="memdesc:gabde0dccfb0783d103b9cf57e0202582f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the bytes of the SPI interrupt transferred. <a href="#gabde0dccfb0783d103b9cf57e0202582f">More...</a><br/></td></tr>
<tr class="separator:gabde0dccfb0783d103b9cf57e0202582f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae90962a54978acf05ca7780489301eb4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#gae90962a54978acf05ca7780489301eb4">SPI_MasterTransferAbort</a> (SPI_Type *base, spi_master_handle_t *handle)</td></tr>
<tr class="memdesc:gae90962a54978acf05ca7780489301eb4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Aborts an SPI transfer using interrupt. <a href="#gae90962a54978acf05ca7780489301eb4">More...</a><br/></td></tr>
<tr class="separator:gae90962a54978acf05ca7780489301eb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga645d041a92bde312d6cf64517c618c41"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ga645d041a92bde312d6cf64517c618c41">SPI_MasterTransferHandleIRQ</a> (SPI_Type *base, spi_master_handle_t *handle)</td></tr>
<tr class="memdesc:ga645d041a92bde312d6cf64517c618c41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interrupts the handler for the SPI. <a href="#ga645d041a92bde312d6cf64517c618c41">More...</a><br/></td></tr>
<tr class="separator:ga645d041a92bde312d6cf64517c618c41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7b96130e93f13360909634c8fd5989b2"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ga7b96130e93f13360909634c8fd5989b2">SPI_SlaveTransferCreateHandle</a> (SPI_Type *base, <a class="el" href="group__spi__driver.html#gad267cfee3a876b2860217ff94f03f574">spi_slave_handle_t</a> *handle, <a class="el" href="group__spi__driver.html#ga86b45b85e036adc762eed5bcd2a0491d">spi_slave_callback_t</a> callback, void *userData)</td></tr>
<tr class="memdesc:ga7b96130e93f13360909634c8fd5989b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the SPI slave handle. <a href="#ga7b96130e93f13360909634c8fd5989b2">More...</a><br/></td></tr>
<tr class="separator:ga7b96130e93f13360909634c8fd5989b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae37917cb354e36acd1b1ca906d2ffe1c"><td class="memItemLeft" align="right" valign="top">static status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#gae37917cb354e36acd1b1ca906d2ffe1c">SPI_SlaveTransferNonBlocking</a> (SPI_Type *base, <a class="el" href="group__spi__driver.html#gad267cfee3a876b2860217ff94f03f574">spi_slave_handle_t</a> *handle, <a class="el" href="group__spi__driver.html#structspi__transfer__t">spi_transfer_t</a> *xfer)</td></tr>
<tr class="memdesc:gae37917cb354e36acd1b1ca906d2ffe1c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a non-blocking SPI slave interrupt transfer. <a href="#gae37917cb354e36acd1b1ca906d2ffe1c">More...</a><br/></td></tr>
<tr class="separator:gae37917cb354e36acd1b1ca906d2ffe1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0dcd2ed8373d992ff93bb500e1442815"><td class="memItemLeft" align="right" valign="top">static status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ga0dcd2ed8373d992ff93bb500e1442815">SPI_SlaveTransferGetCount</a> (SPI_Type *base, <a class="el" href="group__spi__driver.html#gad267cfee3a876b2860217ff94f03f574">spi_slave_handle_t</a> *handle, size_t *count)</td></tr>
<tr class="memdesc:ga0dcd2ed8373d992ff93bb500e1442815"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the bytes of the SPI interrupt transferred. <a href="#ga0dcd2ed8373d992ff93bb500e1442815">More...</a><br/></td></tr>
<tr class="separator:ga0dcd2ed8373d992ff93bb500e1442815"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae719048431a3e4fb334f83bd824a407b"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#gae719048431a3e4fb334f83bd824a407b">SPI_SlaveTransferAbort</a> (SPI_Type *base, <a class="el" href="group__spi__driver.html#gad267cfee3a876b2860217ff94f03f574">spi_slave_handle_t</a> *handle)</td></tr>
<tr class="memdesc:gae719048431a3e4fb334f83bd824a407b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Aborts an SPI slave transfer using interrupt. <a href="#gae719048431a3e4fb334f83bd824a407b">More...</a><br/></td></tr>
<tr class="separator:gae719048431a3e4fb334f83bd824a407b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabf454f42532e8a41340efd398f9868fb"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#gabf454f42532e8a41340efd398f9868fb">SPI_SlaveTransferHandleIRQ</a> (SPI_Type *base, <a class="el" href="group__spi__driver.html#gad267cfee3a876b2860217ff94f03f574">spi_slave_handle_t</a> *handle)</td></tr>
<tr class="memdesc:gabf454f42532e8a41340efd398f9868fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interrupts a handler for the SPI slave. <a href="#gabf454f42532e8a41340efd398f9868fb">More...</a><br/></td></tr>
<tr class="separator:gabf454f42532e8a41340efd398f9868fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="structspi__master__config__t" id="structspi__master__config__t"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct spi_master_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:aa033bd20cfbb1a14f0fd43f4b31bb27e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa033bd20cfbb1a14f0fd43f4b31bb27e"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#aa033bd20cfbb1a14f0fd43f4b31bb27e">enableMaster</a></td></tr>
<tr class="memdesc:aa033bd20cfbb1a14f0fd43f4b31bb27e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable SPI at initialization time. <br/></td></tr>
<tr class="separator:aa033bd20cfbb1a14f0fd43f4b31bb27e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a72eacf86c213c982a8c3677c995cf955"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a72eacf86c213c982a8c3677c995cf955"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#a72eacf86c213c982a8c3677c995cf955">enableStopInWaitMode</a></td></tr>
<tr class="memdesc:a72eacf86c213c982a8c3677c995cf955"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI stop in wait mode. <br/></td></tr>
<tr class="separator:a72eacf86c213c982a8c3677c995cf955"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8d9a8c7a526b96cbe3105d6e06b1cce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8d9a8c7a526b96cbe3105d6e06b1cce"></a>
<a class="el" href="group__spi__driver.html#ga3e5a7cd043c9596779bc23b34cb3d1f9">spi_clock_polarity_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ac8d9a8c7a526b96cbe3105d6e06b1cce">polarity</a></td></tr>
<tr class="memdesc:ac8d9a8c7a526b96cbe3105d6e06b1cce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clock polarity. <br/></td></tr>
<tr class="separator:ac8d9a8c7a526b96cbe3105d6e06b1cce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a21b6f74dbeb89a81460cd618b7da042b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21b6f74dbeb89a81460cd618b7da042b"></a>
<a class="el" href="group__spi__driver.html#ga9ad313685ade497f5cbcb71c74a1b4dc">spi_clock_phase_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#a21b6f74dbeb89a81460cd618b7da042b">phase</a></td></tr>
<tr class="memdesc:a21b6f74dbeb89a81460cd618b7da042b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clock phase. <br/></td></tr>
<tr class="separator:a21b6f74dbeb89a81460cd618b7da042b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aace9261acfad8526f3d5b0b59346629a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aace9261acfad8526f3d5b0b59346629a"></a>
<a class="el" href="group__spi__driver.html#gaa68518c16202382c2e1f1c7c66a9d53d">spi_shift_direction_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#aace9261acfad8526f3d5b0b59346629a">direction</a></td></tr>
<tr class="memdesc:aace9261acfad8526f3d5b0b59346629a"><td class="mdescLeft">&#160;</td><td class="mdescRight">MSB or LSB. <br/></td></tr>
<tr class="separator:aace9261acfad8526f3d5b0b59346629a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4bef3df530a9f4209409ab332c6cf99f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4bef3df530a9f4209409ab332c6cf99f"></a>
<a class="el" href="group__spi__driver.html#ga2e5a238c65f35a2d82cc1c55927030fe">spi_ss_output_mode_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#a4bef3df530a9f4209409ab332c6cf99f">outputMode</a></td></tr>
<tr class="memdesc:a4bef3df530a9f4209409ab332c6cf99f"><td class="mdescLeft">&#160;</td><td class="mdescRight">SS pin setting. <br/></td></tr>
<tr class="separator:a4bef3df530a9f4209409ab332c6cf99f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adae6cf2b677f553a394f8ec3282a5531"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adae6cf2b677f553a394f8ec3282a5531"></a>
<a class="el" href="group__spi__driver.html#gab55fee4d636428392047e3355f33a36f">spi_pin_mode_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#adae6cf2b677f553a394f8ec3282a5531">pinMode</a></td></tr>
<tr class="memdesc:adae6cf2b677f553a394f8ec3282a5531"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI pin mode select. <br/></td></tr>
<tr class="separator:adae6cf2b677f553a394f8ec3282a5531"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7695987e044d80983fd98a43812b1ea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7695987e044d80983fd98a43812b1ea"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ae7695987e044d80983fd98a43812b1ea">baudRate_Bps</a></td></tr>
<tr class="memdesc:ae7695987e044d80983fd98a43812b1ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Baud Rate for SPI in Hz. <br/></td></tr>
<tr class="separator:ae7695987e044d80983fd98a43812b1ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div>
</div>
<a name="structspi__slave__config__t" id="structspi__slave__config__t"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct spi_slave_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:a9fcd3fae6d886c7dfd0c3fd4cd51e6fe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9fcd3fae6d886c7dfd0c3fd4cd51e6fe"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#a9fcd3fae6d886c7dfd0c3fd4cd51e6fe">enableSlave</a></td></tr>
<tr class="memdesc:a9fcd3fae6d886c7dfd0c3fd4cd51e6fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable SPI at initialization time. <br/></td></tr>
<tr class="separator:a9fcd3fae6d886c7dfd0c3fd4cd51e6fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05bf5a3d9a06ece1c2e45f532ebadabd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05bf5a3d9a06ece1c2e45f532ebadabd"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#a05bf5a3d9a06ece1c2e45f532ebadabd">enableStopInWaitMode</a></td></tr>
<tr class="memdesc:a05bf5a3d9a06ece1c2e45f532ebadabd"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI stop in wait mode. <br/></td></tr>
<tr class="separator:a05bf5a3d9a06ece1c2e45f532ebadabd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32c240620581fcb133877d4fbda21226"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a32c240620581fcb133877d4fbda21226"></a>
<a class="el" href="group__spi__driver.html#ga3e5a7cd043c9596779bc23b34cb3d1f9">spi_clock_polarity_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#a32c240620581fcb133877d4fbda21226">polarity</a></td></tr>
<tr class="memdesc:a32c240620581fcb133877d4fbda21226"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clock polarity. <br/></td></tr>
<tr class="separator:a32c240620581fcb133877d4fbda21226"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6d76d6b354491d5b43756fdf8ef07d6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac6d76d6b354491d5b43756fdf8ef07d6"></a>
<a class="el" href="group__spi__driver.html#ga9ad313685ade497f5cbcb71c74a1b4dc">spi_clock_phase_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ac6d76d6b354491d5b43756fdf8ef07d6">phase</a></td></tr>
<tr class="memdesc:ac6d76d6b354491d5b43756fdf8ef07d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clock phase. <br/></td></tr>
<tr class="separator:ac6d76d6b354491d5b43756fdf8ef07d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4eb458a0c1a0c0934eec53d71b78ffb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad4eb458a0c1a0c0934eec53d71b78ffb"></a>
<a class="el" href="group__spi__driver.html#gaa68518c16202382c2e1f1c7c66a9d53d">spi_shift_direction_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ad4eb458a0c1a0c0934eec53d71b78ffb">direction</a></td></tr>
<tr class="memdesc:ad4eb458a0c1a0c0934eec53d71b78ffb"><td class="mdescLeft">&#160;</td><td class="mdescRight">MSB or LSB. <br/></td></tr>
<tr class="separator:ad4eb458a0c1a0c0934eec53d71b78ffb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div>
</div>
<a name="structspi__transfer__t" id="structspi__transfer__t"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct spi_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:addc4f20760a1a62c4d20cdf9443f3af3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="addc4f20760a1a62c4d20cdf9443f3af3"></a>
uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#addc4f20760a1a62c4d20cdf9443f3af3">txData</a></td></tr>
<tr class="memdesc:addc4f20760a1a62c4d20cdf9443f3af3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send buffer. <br/></td></tr>
<tr class="separator:addc4f20760a1a62c4d20cdf9443f3af3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28b878b99d5ec790b5c8f3bafe140da0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28b878b99d5ec790b5c8f3bafe140da0"></a>
uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#a28b878b99d5ec790b5c8f3bafe140da0">rxData</a></td></tr>
<tr class="memdesc:a28b878b99d5ec790b5c8f3bafe140da0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Receive buffer. <br/></td></tr>
<tr class="separator:a28b878b99d5ec790b5c8f3bafe140da0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae003337c9398e5f5e3189f5b2ba6335b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae003337c9398e5f5e3189f5b2ba6335b"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ae003337c9398e5f5e3189f5b2ba6335b">dataSize</a></td></tr>
<tr class="memdesc:ae003337c9398e5f5e3189f5b2ba6335b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transfer bytes. <br/></td></tr>
<tr class="separator:ae003337c9398e5f5e3189f5b2ba6335b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2c944a611d5bd3267aef7658d06147b"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ac2c944a611d5bd3267aef7658d06147b">flags</a></td></tr>
<tr class="memdesc:ac2c944a611d5bd3267aef7658d06147b"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI control flag, useless to SPI. <a href="#ac2c944a611d5bd3267aef7658d06147b">More...</a><br/></td></tr>
<tr class="separator:ac2c944a611d5bd3267aef7658d06147b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="ac2c944a611d5bd3267aef7658d06147b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t spi_transfer_t::flags</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div>
</div>
<a name="struct__spi__master__handle" id="struct__spi__master__handle"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct _spi_master_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:a6cb4626f6b63c70fa21fe2e3338dc915"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6cb4626f6b63c70fa21fe2e3338dc915"></a>
uint8_t *volatile&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#a6cb4626f6b63c70fa21fe2e3338dc915">txData</a></td></tr>
<tr class="memdesc:a6cb4626f6b63c70fa21fe2e3338dc915"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transfer buffer. <br/></td></tr>
<tr class="separator:a6cb4626f6b63c70fa21fe2e3338dc915"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69f260bde2e1728233f835a148b2f51b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69f260bde2e1728233f835a148b2f51b"></a>
uint8_t *volatile&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#a69f260bde2e1728233f835a148b2f51b">rxData</a></td></tr>
<tr class="memdesc:a69f260bde2e1728233f835a148b2f51b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Receive buffer. <br/></td></tr>
<tr class="separator:a69f260bde2e1728233f835a148b2f51b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62fa101ddfc970e7b6bcba0b2eb6b869"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a62fa101ddfc970e7b6bcba0b2eb6b869"></a>
volatile size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#a62fa101ddfc970e7b6bcba0b2eb6b869">txRemainingBytes</a></td></tr>
<tr class="memdesc:a62fa101ddfc970e7b6bcba0b2eb6b869"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send data remaining in bytes. <br/></td></tr>
<tr class="separator:a62fa101ddfc970e7b6bcba0b2eb6b869"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23b2531ea36b53e42cd6b2a3780d3017"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a23b2531ea36b53e42cd6b2a3780d3017"></a>
volatile size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#a23b2531ea36b53e42cd6b2a3780d3017">rxRemainingBytes</a></td></tr>
<tr class="memdesc:a23b2531ea36b53e42cd6b2a3780d3017"><td class="mdescLeft">&#160;</td><td class="mdescRight">Receive data remaining in bytes. <br/></td></tr>
<tr class="separator:a23b2531ea36b53e42cd6b2a3780d3017"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7933252a37be998d127217f34f6fd16"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7933252a37be998d127217f34f6fd16"></a>
volatile uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ae7933252a37be998d127217f34f6fd16">state</a></td></tr>
<tr class="memdesc:ae7933252a37be998d127217f34f6fd16"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI internal state. <br/></td></tr>
<tr class="separator:ae7933252a37be998d127217f34f6fd16"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a415306f31fa29b548ee21a0f9aacc096"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a415306f31fa29b548ee21a0f9aacc096"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#a415306f31fa29b548ee21a0f9aacc096">transferSize</a></td></tr>
<tr class="memdesc:a415306f31fa29b548ee21a0f9aacc096"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bytes to be transferred. <br/></td></tr>
<tr class="separator:a415306f31fa29b548ee21a0f9aacc096"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5bb58dcd72b94be9f29c8072018cd5c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac5bb58dcd72b94be9f29c8072018cd5c"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ac5bb58dcd72b94be9f29c8072018cd5c">bytePerFrame</a></td></tr>
<tr class="memdesc:ac5bb58dcd72b94be9f29c8072018cd5c"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI mode, 2bytes or 1byte in a frame. <br/></td></tr>
<tr class="separator:ac5bb58dcd72b94be9f29c8072018cd5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b3ccbbfc594b100114784b63dc08040"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9b3ccbbfc594b100114784b63dc08040"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#a9b3ccbbfc594b100114784b63dc08040">watermark</a></td></tr>
<tr class="memdesc:a9b3ccbbfc594b100114784b63dc08040"><td class="mdescLeft">&#160;</td><td class="mdescRight">Watermark value for SPI transfer. <br/></td></tr>
<tr class="separator:a9b3ccbbfc594b100114784b63dc08040"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a445e70d437c917e6af1b4037bdbb6a3f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a445e70d437c917e6af1b4037bdbb6a3f"></a>
<a class="el" href="group__spi__driver.html#gae9bd140aeb645efab6c7552b3994e01a">spi_master_callback_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#a445e70d437c917e6af1b4037bdbb6a3f">callback</a></td></tr>
<tr class="memdesc:a445e70d437c917e6af1b4037bdbb6a3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI callback. <br/></td></tr>
<tr class="separator:a445e70d437c917e6af1b4037bdbb6a3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8d01b85149d749ab1c748bb5116b90e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8d01b85149d749ab1c748bb5116b90e"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__spi__driver.html#ab8d01b85149d749ab1c748bb5116b90e">userData</a></td></tr>
<tr class="memdesc:ab8d01b85149d749ab1c748bb5116b90e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback parameter. <br/></td></tr>
<tr class="separator:ab8d01b85149d749ab1c748bb5116b90e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="gaeb6046de02dffe9248de71332fac246e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define FSL_SPI_DRIVER_VERSION&#160;&#160;&#160;(<a class="el" href="group__flash__driver.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2, 0, 0))</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga1541129ba8262e1649592b5109e2074c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SPI_DUMMYDATA&#160;&#160;&#160;(0xFFU)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="ga3fa79a6717ea4e1e74de2dadaa468edd"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__spi__driver.html#ga3fa79a6717ea4e1e74de2dadaa468edd">_spi_status</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="gga3fa79a6717ea4e1e74de2dadaa468edda703abdf7900047c4d13536480f3463ab"></a>kStatus_SPI_Busy</em>&#160;</td><td class="fielddoc">
<p>SPI bus is busy. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga3fa79a6717ea4e1e74de2dadaa468edda4e32c5b06dccaf4b81e2fd1679e1b560"></a>kStatus_SPI_Idle</em>&#160;</td><td class="fielddoc">
<p>SPI is idle. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga3fa79a6717ea4e1e74de2dadaa468edda2ff91d774e93aed936b87ffaa18aaf9e"></a>kStatus_SPI_Error</em>&#160;</td><td class="fielddoc">
<p>SPI error. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="ga3e5a7cd043c9596779bc23b34cb3d1f9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__spi__driver.html#ga3e5a7cd043c9596779bc23b34cb3d1f9">spi_clock_polarity_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="gga3e5a7cd043c9596779bc23b34cb3d1f9a031c0ee2693cf1fd621e8b8cba676629"></a>kSPI_ClockPolarityActiveHigh</em>&#160;</td><td class="fielddoc">
<p>Active-high SPI clock (idles low). </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga3e5a7cd043c9596779bc23b34cb3d1f9acfc8257079c9604086622df6de326aea"></a>kSPI_ClockPolarityActiveLow</em>&#160;</td><td class="fielddoc">
<p>Active-low SPI clock (idles high). </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="ga9ad313685ade497f5cbcb71c74a1b4dc"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__spi__driver.html#ga9ad313685ade497f5cbcb71c74a1b4dc">spi_clock_phase_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="gga9ad313685ade497f5cbcb71c74a1b4dcad15d61c6fd642f13101edbf401d0c72e"></a>kSPI_ClockPhaseFirstEdge</em>&#160;</td><td class="fielddoc">
<p>First edge on SPSCK occurs at the middle of the first cycle of a data transfer. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga9ad313685ade497f5cbcb71c74a1b4dca18a98985c1f7dd56175e4a2724db3675"></a>kSPI_ClockPhaseSecondEdge</em>&#160;</td><td class="fielddoc">
<p>First edge on SPSCK occurs at the start of the first cycle of a data transfer. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gaa68518c16202382c2e1f1c7c66a9d53d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__spi__driver.html#gaa68518c16202382c2e1f1c7c66a9d53d">spi_shift_direction_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="ggaa68518c16202382c2e1f1c7c66a9d53dae7b997e8cff761aab865cbd42c4c3989"></a>kSPI_MsbFirst</em>&#160;</td><td class="fielddoc">
<p>Data transfers start with most significant bit. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggaa68518c16202382c2e1f1c7c66a9d53da20ac53684c3e1ad338553cecbfab94a9"></a>kSPI_LsbFirst</em>&#160;</td><td class="fielddoc">
<p>Data transfers start with least significant bit. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="ga2e5a238c65f35a2d82cc1c55927030fe"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__spi__driver.html#ga2e5a238c65f35a2d82cc1c55927030fe">spi_ss_output_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="gga2e5a238c65f35a2d82cc1c55927030fea3825177650b5d4bfb5dc603f0ce41381"></a>kSPI_SlaveSelectAsGpio</em>&#160;</td><td class="fielddoc">
<p>Slave select pin configured as GPIO. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga2e5a238c65f35a2d82cc1c55927030feafdcbdc624d6c2f057147e2aa3cae4635"></a>kSPI_SlaveSelectFaultInput</em>&#160;</td><td class="fielddoc">
<p>Slave select pin configured for fault detection. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga2e5a238c65f35a2d82cc1c55927030fead724fc04589d03b524ef2dfef6b0f4a1"></a>kSPI_SlaveSelectAutomaticOutput</em>&#160;</td><td class="fielddoc">
<p>Slave select pin configured for automatic SPI output. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gab55fee4d636428392047e3355f33a36f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__spi__driver.html#gab55fee4d636428392047e3355f33a36f">spi_pin_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="ggab55fee4d636428392047e3355f33a36fa7ba3d5ffce8458f91a9594e7ffe2b32d"></a>kSPI_PinModeNormal</em>&#160;</td><td class="fielddoc">
<p>Pins operate in normal, single-direction mode. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggab55fee4d636428392047e3355f33a36fad778c9cc9e3d5a5c4e8061793cf50fdc"></a>kSPI_PinModeInput</em>&#160;</td><td class="fielddoc">
<p>Bidirectional mode. </p>
<p>Master: MOSI pin is input; Slave: MISO pin is input. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggab55fee4d636428392047e3355f33a36fad5b79c8eba688dbfb4b9973348521de7"></a>kSPI_PinModeOutput</em>&#160;</td><td class="fielddoc">
<p>Bidirectional mode. </p>
<p>Master: MOSI pin is output; Slave: MISO pin is output. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gaa7bfe75c1f0ea3b349f19a3de19b24e4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__spi__driver.html#gaa7bfe75c1f0ea3b349f19a3de19b24e4">spi_data_bitcount_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="ggaa7bfe75c1f0ea3b349f19a3de19b24e4a1a0723fd8cd73f361ca2770ad74a6324"></a>kSPI_8BitMode</em>&#160;</td><td class="fielddoc">
<p>8-bit data transmission mode </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggaa7bfe75c1f0ea3b349f19a3de19b24e4a740c43589ebe839f3adc77b8ca484ea4"></a>kSPI_16BitMode</em>&#160;</td><td class="fielddoc">
<p>16-bit data transmission mode </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gaedd690a0f91a0a9eb0fd573b57e31f67"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__spi__driver.html#gaedd690a0f91a0a9eb0fd573b57e31f67">_spi_interrupt_enable</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="ggaedd690a0f91a0a9eb0fd573b57e31f67aa317b77c827ed1462b766dddd93f7f10"></a>kSPI_RxFullAndModfInterruptEnable</em>&#160;</td><td class="fielddoc">
<p>Receive buffer full (SPRF) and mode fault (MODF) interrupt. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggaedd690a0f91a0a9eb0fd573b57e31f67abe157750a1660d839a66197c56ac5096"></a>kSPI_TxEmptyInterruptEnable</em>&#160;</td><td class="fielddoc">
<p>Transmit buffer empty interrupt. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggaedd690a0f91a0a9eb0fd573b57e31f67a95cc9167ada10046534dc22549c6a99e"></a>kSPI_MatchInterruptEnable</em>&#160;</td><td class="fielddoc">
<p>Match interrupt. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gaea776f478792865a85b7311e6ff5896c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__spi__driver.html#gaea776f478792865a85b7311e6ff5896c">_spi_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="ggaea776f478792865a85b7311e6ff5896cacc0e5c67e296cc20197afaca46f22953"></a>kSPI_RxBufferFullFlag</em>&#160;</td><td class="fielddoc">
<p>Read buffer full flag. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggaea776f478792865a85b7311e6ff5896ca9c24fe83960ed64638f06eeb17643da5"></a>kSPI_MatchFlag</em>&#160;</td><td class="fielddoc">
<p>Match flag. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggaea776f478792865a85b7311e6ff5896ca07934a27954d951831e7cdb96c39afd7"></a>kSPI_TxBufferEmptyFlag</em>&#160;</td><td class="fielddoc">
<p>Transmit buffer empty flag. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggaea776f478792865a85b7311e6ff5896ca9eca4e759c879e3b264d052c234a09d1"></a>kSPI_ModeFaultFlag</em>&#160;</td><td class="fielddoc">
<p>Mode fault flag. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga45c08fc078ae334b79fb844379140838"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SPI_MasterGetDefaultConfig </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__spi__driver.html#structspi__master__config__t">spi_master_config_t</a> *&#160;</td>
<td class="paramname"><em>config</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The purpose of this API is to get the configuration structure initialized for use in <a class="el" href="group__spi__driver.html#ga3fe5b421b088cc98222b8a214069574b" title="Initializes the SPI with master configuration. ">SPI_MasterInit()</a>. User may use the initialized structure unchanged in <a class="el" href="group__spi__driver.html#ga3fe5b421b088cc98222b8a214069574b" title="Initializes the SPI with master configuration. ">SPI_MasterInit()</a>, or modify some fields of the structure before calling <a class="el" href="group__spi__driver.html#ga3fe5b421b088cc98222b8a214069574b" title="Initializes the SPI with master configuration. ">SPI_MasterInit()</a>. After calling this API, the master is ready to transfer. Example: </p>
<div class="fragment"><div class="line"><a class="code" href="group__spi__driver.html#structspi__master__config__t">spi_master_config_t</a> config;</div>
<div class="line"><a class="code" href="group__spi__driver.html#ga45c08fc078ae334b79fb844379140838">SPI_MasterGetDefaultConfig</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 config structure </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga3fe5b421b088cc98222b8a214069574b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SPI_MasterInit </td>
<td>(</td>
<td class="paramtype">SPI_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__spi__driver.html#structspi__master__config__t">spi_master_config_t</a> *&#160;</td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>srcClock_Hz</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The configuration structure can be filled by user from scratch, or be set with default values by <a class="el" href="group__spi__driver.html#ga45c08fc078ae334b79fb844379140838" title="Sets the SPI master configuration structure to default values. ">SPI_MasterGetDefaultConfig()</a>. After calling this API, the slave is ready to transfer. Example </p>
<div class="fragment"><div class="line"><a class="code" href="group__spi__driver.html#structspi__master__config__t">spi_master_config_t</a> config = {</div>
<div class="line">.<a class="code" href="group__spi__driver.html#ae7695987e044d80983fd98a43812b1ea">baudRate_Bps</a> = 400000,</div>
<div class="line">...</div>
<div class="line">};</div>
<div class="line"><a class="code" href="group__spi__driver.html#ga3fe5b421b088cc98222b8a214069574b">SPI_MasterInit</a>(SPI0, &amp;config);</div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SPI base pointer </td></tr>
<tr><td class="paramname">config</td><td>pointer to master configuration structure </td></tr>
<tr><td class="paramname">srcClock_Hz</td><td>Source clock frequency. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac000b63ed033f57a9eee342a8c8e67f2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SPI_SlaveGetDefaultConfig </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__spi__driver.html#structspi__slave__config__t">spi_slave_config_t</a> *&#160;</td>
<td class="paramname"><em>config</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The purpose of this API is to get the configuration structure initialized for use in <a class="el" href="group__spi__driver.html#ga91b214b5392fc8d5b73a5ebadc5ca363" title="Initializes the SPI with slave configuration. ">SPI_SlaveInit()</a>. Modify some fields of the structure before calling <a class="el" href="group__spi__driver.html#ga91b214b5392fc8d5b73a5ebadc5ca363" title="Initializes the SPI with slave configuration. ">SPI_SlaveInit()</a>. Example: </p>
<div class="fragment"><div class="line"><a class="code" href="group__spi__driver.html#structspi__slave__config__t">spi_slave_config_t</a> config;</div>
<div class="line"><a class="code" href="group__spi__driver.html#gac000b63ed033f57a9eee342a8c8e67f2">SPI_SlaveGetDefaultConfig</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 slave configuration structure </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga91b214b5392fc8d5b73a5ebadc5ca363"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SPI_SlaveInit </td>
<td>(</td>
<td class="paramtype">SPI_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__spi__driver.html#structspi__slave__config__t">spi_slave_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>The configuration structure can be filled by user from scratch or be set with default values by <a class="el" href="group__spi__driver.html#gac000b63ed033f57a9eee342a8c8e67f2" title="Sets the SPI slave configuration structure to default values. ">SPI_SlaveGetDefaultConfig()</a>. After calling this API, the slave is ready to transfer. Example </p>
<div class="fragment"><div class="line"><a class="code" href="group__spi__driver.html#structspi__slave__config__t">spi_slave_config_t</a> config = {</div>
<div class="line">.<a class="code" href="group__spi__driver.html#a32c240620581fcb133877d4fbda21226">polarity</a> = kSPIClockPolarity_ActiveHigh;</div>
<div class="line">.phase = kSPIClockPhase_FirstEdge;</div>
<div class="line">.direction = kSPIMsbFirst;</div>
<div class="line">...</div>
<div class="line">};</div>
<div class="line"><a class="code" href="group__spi__driver.html#ga3fe5b421b088cc98222b8a214069574b">SPI_MasterInit</a>(SPI0, &amp;config);</div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SPI base pointer </td></tr>
<tr><td class="paramname">config</td><td>pointer to master configuration structure </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaac0bc2b87ea2eb7eeba78d9449d4dbbf"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SPI_Deinit </td>
<td>(</td>
<td class="paramtype">SPI_Type *&#160;</td>
<td class="paramname"><em>base</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Calling this API resets the SPI module, gates the SPI clock. The SPI module can't work unless calling the SPI_MasterInit/SPI_SlaveInit to initialize module.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SPI base pointer </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaae5df847701d3171c2e6787b33e2f1ed"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void SPI_Enable </td>
<td>(</td>
<td class="paramtype">I2C_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>
</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>SPI base pointer </td></tr>
<tr><td class="paramname">enable</td><td>pass true to enable module, false to disable module </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaaa5a317a68b409dfe20397b45e48d1f0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t SPI_GetStatusFlags </td>
<td>(</td>
<td class="paramtype">SPI_Type *&#160;</td>
<td class="paramname"><em>base</em></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>SPI base pointer </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SPI Status, use status flag to AND <a class="el" href="group__spi__driver.html#gaea776f478792865a85b7311e6ff5896c" title="SPI status flags. ">_spi_flags</a> could get the related status. </dd></dl>
</div>
</div>
<a class="anchor" id="gac12d144816080c40ca86d762e31aacc4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SPI_EnableInterrupts </td>
<td>(</td>
<td class="paramtype">SPI_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>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SPI base pointer </td></tr>
<tr><td class="paramname">mask</td><td>SPI interrupt source. The parameter can be any combination of the following values: <ul>
<li>kSPI_RxFullAndModfInterruptEnable </li>
<li>kSPI_TxEmptyInterruptEnable </li>
<li>kSPI_MatchInterruptEnable </li>
<li>kSPI_RxFifoNearFullInterruptEnable </li>
<li>kSPI_TxFifoNearEmptyInterruptEnable </li>
</ul>
</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga1c3de83156f45d3f91540a1ec5f92826"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SPI_DisableInterrupts </td>
<td>(</td>
<td class="paramtype">SPI_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>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SPI base pointer </td></tr>
<tr><td class="paramname">mask</td><td>SPI interrupt source. The parameter can be any combination of the following values: <ul>
<li>kSPI_RxFullAndModfInterruptEnable </li>
<li>kSPI_TxEmptyInterruptEnable </li>
<li>kSPI_MatchInterruptEnable </li>
<li>kSPI_RxFifoNearFullInterruptEnable </li>
<li>kSPI_TxFifoNearEmptyInterruptEnable </li>
</ul>
</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga740215d83c1238818dfd4689163f71de"></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 SPI_GetDataRegisterAddress </td>
<td>(</td>
<td class="paramtype">SPI_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">
<p>This API is used to provide a transfer address for the SPI DMA transfer configuration.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SPI base pointer </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>data register address </dd></dl>
</div>
</div>
<a class="anchor" id="ga3ebe045018782edb3624026795d6269a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SPI_MasterSetBaudRate </td>
<td>(</td>
<td class="paramtype">SPI_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>baudRate_Bps</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>srcClock_Hz</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This is only used in master.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SPI base pointer </td></tr>
<tr><td class="paramname">baudRate_Bps</td><td>baud rate needed in Hz. </td></tr>
<tr><td class="paramname">srcClock_Hz</td><td>SPI source clock frequency in Hz. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga981b773ced8cc0df2493691842a14e05"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void SPI_SetMatchData </td>
<td>(</td>
<td class="paramtype">SPI_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>matchData</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>The match data is a hardware comparison value. When the value received in the SPI receive data buffer equals the hardware comparison value, the SPI Match Flag in the S register (S[SPMF]) sets. This can also generate an interrupt if the enable bit sets.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SPI base pointer </td></tr>
<tr><td class="paramname">matchData</td><td>Match data. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gae28a41ba015e3bc92936459f83500cd0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SPI_WriteBlocking </td>
<td>(</td>
<td class="paramtype">SPI_Type *&#160;</td>
<td class="paramname"><em>base</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">size_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 via polling until all bytes have been sent.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SPI base pointer </td></tr>
<tr><td class="paramname">buffer</td><td>The data bytes to send </td></tr>
<tr><td class="paramname">size</td><td>The number of data bytes to send </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga74d8732386a607c263bd16c8294b08d6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SPI_WriteData </td>
<td>(</td>
<td class="paramtype">SPI_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>data</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>SPI base pointer </td></tr>
<tr><td class="paramname">data</td><td>needs to be write. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaf23d3779b122e78fc07562bf5dbf3ac3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t SPI_ReadData </td>
<td>(</td>
<td class="paramtype">SPI_Type *&#160;</td>
<td class="paramname"><em>base</em></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>SPI base pointer </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Data in the register. </dd></dl>
</div>
</div>
<a class="anchor" id="ga6cf3e807307ecb22578cc9088adafcf2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SPI_MasterTransferCreateHandle </td>
<td>(</td>
<td class="paramtype">SPI_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">spi_master_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__spi__driver.html#gae9bd140aeb645efab6c7552b3994e01a">spi_master_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 SPI master handle which can be used for other SPI master transactional APIs. Usually, for a specified SPI instance, call this API once to get the initialized handle.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SPI peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>SPI handle pointer. </td></tr>
<tr><td class="paramname">callback</td><td>Callback function. </td></tr>
<tr><td class="paramname">userData</td><td>User data. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga5b05095245ecf01258e64cc0458fb2e9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">status_t SPI_MasterTransferBlocking </td>
<td>(</td>
<td class="paramtype">SPI_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__spi__driver.html#structspi__transfer__t">spi_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="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SPI base pointer </td></tr>
<tr><td class="paramname">xfer</td><td>pointer to spi_xfer_config_t 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 start a transfer. </td></tr>
<tr><td class="paramname">kStatus_InvalidArgument</td><td>Input argument is invalid. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga820c78a32fa29735168d2e517f4881a1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">status_t SPI_MasterTransferNonBlocking </td>
<td>(</td>
<td class="paramtype">SPI_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">spi_master_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__spi__driver.html#structspi__transfer__t">spi_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>The API immediately returns after transfer initialization is finished. Call SPI_GetStatusIRQ() to get the transfer status. </dd>
<dd>
If using the SPI with FIFO for the interrupt transfer, the transfer size is the integer times of the watermark. Otherwise, the last data may be lost because it cannot generate an interrupt request. Users can also call the functional API to get the last received data.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SPI peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>pointer to spi_master_handle_t structure which stores the transfer state </td></tr>
<tr><td class="paramname">xfer</td><td>pointer to spi_xfer_config_t 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 start a transfer. </td></tr>
<tr><td class="paramname">kStatus_InvalidArgument</td><td>Input argument is invalid. </td></tr>
<tr><td class="paramname">kStatus_SPI_Busy</td><td>SPI is not idle, is running another transfer. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gabde0dccfb0783d103b9cf57e0202582f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">status_t SPI_MasterTransferGetCount </td>
<td>(</td>
<td class="paramtype">SPI_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">spi_master_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>SPI peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>Pointer to SPI transfer handle, this should be a static variable. </td></tr>
<tr><td class="paramname">count</td><td>Transferred bytes of SPI master. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_SPI_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="gae90962a54978acf05ca7780489301eb4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SPI_MasterTransferAbort </td>
<td>(</td>
<td class="paramtype">SPI_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">spi_master_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>SPI peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>Pointer to SPI transfer handle, this should be a static variable. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga645d041a92bde312d6cf64517c618c41"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SPI_MasterTransferHandleIRQ </td>
<td>(</td>
<td class="paramtype">SPI_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">spi_master_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>SPI peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>pointer to spi_master_handle_t structure which stores the transfer state. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga7b96130e93f13360909634c8fd5989b2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void SPI_SlaveTransferCreateHandle </td>
<td>(</td>
<td class="paramtype">SPI_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__spi__driver.html#gad267cfee3a876b2860217ff94f03f574">spi_slave_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__spi__driver.html#ga86b45b85e036adc762eed5bcd2a0491d">spi_slave_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>
</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 function initializes the SPI slave handle which can be used for other SPI slave transactional APIs. Usually, for a specified SPI instance, call this API once to get the initialized handle.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SPI peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>SPI handle pointer. </td></tr>
<tr><td class="paramname">callback</td><td>Callback function. </td></tr>
<tr><td class="paramname">userData</td><td>User data. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gae37917cb354e36acd1b1ca906d2ffe1c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static status_t SPI_SlaveTransferNonBlocking </td>
<td>(</td>
<td class="paramtype">SPI_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__spi__driver.html#gad267cfee3a876b2860217ff94f03f574">spi_slave_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__spi__driver.html#structspi__transfer__t">spi_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>
</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="section note"><dt>Note</dt><dd>The API returns immediately after the transfer initialization is finished. Call SPI_GetStatusIRQ() to get the transfer status. </dd>
<dd>
If using the SPI with FIFO for the interrupt transfer, the transfer size is the integer times the watermark. Otherwise, the last data may be lost because it cannot generate an interrupt request. Call the functional API to get the last several receive data.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>SPI peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>pointer to spi_master_handle_t structure which stores the transfer state </td></tr>
<tr><td class="paramname">xfer</td><td>pointer to spi_xfer_config_t 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 start a transfer. </td></tr>
<tr><td class="paramname">kStatus_InvalidArgument</td><td>Input argument is invalid. </td></tr>
<tr><td class="paramname">kStatus_SPI_Busy</td><td>SPI is not idle, is running another transfer. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga0dcd2ed8373d992ff93bb500e1442815"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static status_t SPI_SlaveTransferGetCount </td>
<td>(</td>
<td class="paramtype">SPI_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__spi__driver.html#gad267cfee3a876b2860217ff94f03f574">spi_slave_handle_t</a> *&#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>
</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>SPI peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>Pointer to SPI transfer handle, this should be a static variable. </td></tr>
<tr><td class="paramname">count</td><td>Transferred bytes of SPI slave. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_SPI_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="gae719048431a3e4fb334f83bd824a407b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void SPI_SlaveTransferAbort </td>
<td>(</td>
<td class="paramtype">SPI_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__spi__driver.html#gad267cfee3a876b2860217ff94f03f574">spi_slave_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</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>SPI peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>Pointer to SPI transfer handle, this should be a static variable. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gabf454f42532e8a41340efd398f9868fb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void SPI_SlaveTransferHandleIRQ </td>
<td>(</td>
<td class="paramtype">SPI_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__spi__driver.html#gad267cfee3a876b2860217ff94f03f574">spi_slave_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</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>SPI peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>pointer to spi_slave_handle_t structure which stores the transfer state </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.5-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul class="foot">
<li class="footer">&copy; 2016 NXP Semiconductors. All rights reserved.
</li>
</ul>
</div>
</body>
</html>