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

1152 lines
84 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>MCUXpresso SDK API Reference Manual: SD Card Driver</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="fs_logo.gif"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">MCUXpresso SDK API Reference Manual
&#160;<span id="projectnumber">Rev 2.15.000</span>
</div>
<div id="projectbrief">NXP Semiconductors</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>API&#160;Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('a00049.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#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">SD Card Driver<div class="ingroups"><a class="el" href="a00272.html">Cards: Secure Digital Card/Embedded MultiMedia Card/SDIO Card</a></div></div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<p>The SDCARD driver provide card initialization/read/write/erase interface.</p>
<h1><a class="anchor" id="SDCardOperation"></a>
SD CARD Operation</h1>
<h2>error log support</h2>
<p>Lots of error log has been added to sd relate functions, if error occurs during initial/read/write, please enable the error log print functionality with <code>#define</code> SDMMC_ENABLE_LOG_PRINT 1 And rerun the project then user can check what kind of error happened.</p>
<h2>User configurable</h2>
<div class="fragment"><div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="a00049.html#a00389">_sd_card</a></div>
<div class="line">{</div>
<div class="line"> <a class="code" href="a00053.html#a00415">sdmmchost_t</a> *<a class="code" href="a00049.html#a5da956c0adaa77039dfcadad15695f3a">host</a>; </div>
<div class="line"> <a class="code" href="a00038.html#a00396">sd_usr_param_t</a> <a class="code" href="a00049.html#a1a8f2f78bf5bc674ea855a253c24d573">usrParam</a>; </div>
<div class="line"> <span class="keywordtype">bool</span> <a class="code" href="a00049.html#ab25fa672fc7704bbafa9ebe0363726ab">isHostReady</a>; </div>
<div class="line"> <span class="keywordtype">bool</span> <a class="code" href="a00049.html#ababa71848d9c23d678799bddfe512119">noInteralAlign</a>; </div>
<div class="line"> uint32_t <a class="code" href="a00049.html#a87a622b7e09d007b5c16e0600bcb0169">busClock_Hz</a>; </div>
<div class="line"> uint32_t <a class="code" href="a00049.html#a15b2f6416886f1b3d7d8ea65dc4e5e75">relativeAddress</a>; </div>
<div class="line"> uint32_t <a class="code" href="a00049.html#ad4ece3439221109deec6dfe993de246d">version</a>; </div>
<div class="line"> uint32_t <a class="code" href="a00049.html#a94bdeb3c9034cdb4e2c0441f65d2b643">flags</a>; </div>
<div class="line"> uint8_t <a class="code" href="a00049.html#a246f6fbb09fe131d2a1118088ef9350f">internalBuffer</a>[<a class="code" href="a00038.html#ga4dd122ccc71f9eef692acf27d5f851c3">FSL_SDMMC_CARD_INTERNAL_BUFFER_SIZE</a>]; </div>
<div class="line"> uint32_t <a class="code" href="a00049.html#ae541aa02691ef02e47e06dc45355315d">ocr</a>; </div>
<div class="line"> <a class="code" href="a00038.html#a00390">sd_cid_t</a> <a class="code" href="a00049.html#a861f5d32bad661c75cd169aaac5da40b">cid</a>; </div>
<div class="line"> <a class="code" href="a00038.html#a00391">sd_csd_t</a> <a class="code" href="a00049.html#a30804d870d01c9d52cb75f8af26f2c30">csd</a>; </div>
<div class="line"> <a class="code" href="a00038.html#a00394">sd_scr_t</a> <a class="code" href="a00049.html#a6d58493431329bc404b3e109b750f62e">scr</a>; </div>
<div class="line"> <a class="code" href="a00038.html#a00395">sd_status_t</a> <a class="code" href="a00049.html#a6209fe58c1b29073f2f814eb95d1bb33">stat</a>; </div>
<div class="line"> uint32_t <a class="code" href="a00049.html#a41e22db9444a0b5af024ecf7dc805153">blockCount</a>; </div>
<div class="line"> uint32_t <a class="code" href="a00049.html#ae39c860157b673b9bb5a509f431f6633">blockSize</a>; </div>
<div class="line"> <a class="code" href="a00038.html#gac765d50e69b946e7323c69d60caa88a3">sd_timing_mode_t</a> <a class="code" href="a00049.html#aec1862dd6bfb0fcf53b8c6369c1e4824">currentTiming</a>; </div>
<div class="line"> <a class="code" href="a00038.html#ga6af5598c7548245c6c9c192156309f48">sd_driver_strength_t</a> <a class="code" href="a00049.html#a341b2a9d906839886be2ebbe5b2e571e">driverStrength</a>; </div>
<div class="line"> <a class="code" href="a00038.html#gaa06ea29530147a8b1e28d80d581c3933">sd_max_current_t</a> <a class="code" href="a00049.html#a0fcb97311ca642051072005c46b1489b">maxCurrent</a>; </div>
<div class="line"> <a class="code" href="a00038.html#ga2e26f7a56cad43b7f5d1128952d955e8">sdmmc_operation_voltage_t</a> <a class="code" href="a00049.html#a61ac121789078102cbcf9918ca209964">operationVoltage</a>; </div>
<div class="line"> <a class="code" href="a00052.html#a00414">sdmmc_osa_mutex_t</a> <a class="code" href="a00049.html#a6c2f73eb9b1c3a6275fcae85019f7d93">lock</a>; </div>
<div class="line">} <a class="code" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a>;</div>
</div><!-- fragment --><p>Part of The variables above is user configurable,</p>
<ol type="1">
<li><p class="startli">host</p>
<p class="startli">Application need to provide host controller base address and the host's source clock frequency, etc. For example: </p>
<div class="fragment"><div class="line"><span class="comment">/* allocate dma descriptor buffer for host controller */</span></div>
<div class="line">s_host.dmaDesBuffer = s_sdmmcHostDmaBuffer;</div>
<div class="line">s_host.dmaDesBufferWordsNum = xxx;</div>
<div class="line"><span class="comment">/* */</span></div>
<div class="line">((<a class="code" href="a00049.html#a00389">sd_card_t</a> *)card)-&gt;host = &amp;s_host;</div>
<div class="line">((<a class="code" href="a00049.html#a00389">sd_card_t</a> *)card)-&gt;host-&gt;hostController.base = BOARD_SDMMC_SD_HOST_BASEADDR;</div>
<div class="line">((<a class="code" href="a00049.html#a00389">sd_card_t</a> *)card)-&gt;host-&gt;hostController.sourceClock_Hz = BOARD_USDHC1ClockConfiguration();</div>
<div class="line"></div>
<div class="line"><span class="comment">/* allocate resource for sdmmc osa layer */</span></div>
<div class="line">((<a class="code" href="a00049.html#a00389">sd_card_t</a> *)card)-&gt;host-&gt;hostEvent = &amp;s_event;</div>
</div><!-- fragment --></li>
<li>sdcard_usr_param_t usrParam</li>
</ol>
<div class="fragment"><div class="line"><span class="comment">/* board layer configuration register */</span></div>
<div class="line">((<a class="code" href="a00049.html#a00389">sd_card_t</a> *)card)-&gt;usrParam.cd = &amp;s_cd;</div>
<div class="line">((<a class="code" href="a00049.html#a00389">sd_card_t</a> *)card)-&gt;usrParam.pwr = BOARD_SDCardPowerControl;</div>
<div class="line">((<a class="code" href="a00049.html#a00389">sd_card_t</a> *)card)-&gt;usrParam.ioStrength = BOARD_SD_Pin_Config;</div>
<div class="line">((<a class="code" href="a00049.html#a00389">sd_card_t</a> *)card)-&gt;usrParam.ioVoltage = &amp;s_ioVoltage;</div>
<div class="line">((<a class="code" href="a00049.html#a00389">sd_card_t</a> *)card)-&gt;usrParam.maxFreq = BOARD_SDMMC_SD_HOST_SUPPORT_SDR104_FREQ;</div>
<div class="line"></div>
<div class="line">a. cd-which allow application define the card insert/<span class="keyword">remove</span> callback <span class="keyword">function</span>, redefine the card detect timeout ms and also allow application determine how to detect card.</div>
<div class="line">b. pwr-which allow application redefine the card power on/off <span class="keyword">function</span>.</div>
<div class="line">c. ioStrength-which is used to <span class="keywordflow">switch</span> the signal pin configurations include driver strength/speed mode dynamiclly <span class="keywordflow">for</span> different timing(SDR/HS timing) mode, reference the <span class="keyword">function</span> defined sdmmc_config.c</div>
<div class="line">d. ioVoltage-which allow application <span class="keyword">register</span> io voltage <span class="keywordflow">switch</span> <span class="keyword">function</span> instead of <span class="keyword">using</span> the <span class="keyword">function</span> host driver provided <span class="keywordflow">for</span> SDR/HS200/HS400 timing.</div>
<div class="line">e. maxFreq-which allow application set the maximum bus clock that the board support.</div>
</div><!-- fragment --><ol type="1">
<li><p class="startli">bool noInteralAlign</p>
<p class="startli">Sdmmc include an address align internal buffer(to use host controller internal DMA), to improve read/write performance while application cannot make sure the data address used to read/write is align, set it to true will achieve a better performance.</p>
</li>
<li><p class="startli">sd_timing_mode_t currentTiming</p>
<p class="startli">It is used to indicate the currentTiming the card is working on, however sdmmc also support preset timing mode, then sdmmc will try to switch to this timing first, if failed, a valid timing will switch to automatically. Generally, user may not set this variable if you don't know what kind of timing the card support, sdmmc will switch to the highest timing which the card support.</p>
</li>
<li><p class="startli">sd_driver_strength_t driverStrength</p>
<p class="startli">Choose a valid card driver strength if application required and call SD_SetDriverStrength in application.</p>
</li>
<li><p class="startli">sd_max_current_t maxCurrent</p>
<p class="startli">Choose a valid card current if application required and call SD_SetMaxCurrent in application.</p>
</li>
</ol>
<h2>Mutual exclusive access support for RTOS</h2>
<p>SDCARD driver has added mutual exclusive access support for init/deinit/write/read/erase function. Please note that the card init function will create the mutex lock dynamically by default, so to avoid the mutex create redundantly, application must follow bellow sequence for card re-initialization </p>
<div class="fragment"><div class="line"><a class="code" href="a00049.html#ga50dee2b5bc071a01480b0ab3671c8524">SD_Deinit</a>(card);<span class="comment">/* This function will destroy the created mutex */</span></div>
<div class="line"><a class="code" href="a00049.html#ga281fb14816d236446ee2d047be0c7155">SD_Init</a>(card);</div>
</div><!-- fragment --><h2>Typical use case</h2>
<p>Refer to the driver examples codes located at &lt;SDK_ROOT&gt;/boards/&lt;BOARD&gt;/sdmmc_examples/ </p>
<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:a00389"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#a00389">_sd_card</a></td></tr>
<tr class="memdesc:a00389"><td class="mdescLeft">&#160;</td><td class="mdescRight">SD card state. <a href="a00049.html#a00389">More...</a><br/></td></tr>
<tr class="separator:a00389"><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:ga6fa18202479ec86d33169ee28513ae94"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ga6fa18202479ec86d33169ee28513ae94">FSL_SD_DRIVER_VERSION</a>&#160;&#160;&#160;(<a class="el" href="a00242.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2U, 4U, 2U)) /*2.4.2*/</td></tr>
<tr class="memdesc:ga6fa18202479ec86d33169ee28513ae94"><td class="mdescLeft">&#160;</td><td class="mdescRight">Driver version. <a href="#ga6fa18202479ec86d33169ee28513ae94">More...</a><br/></td></tr>
<tr class="separator:ga6fa18202479ec86d33169ee28513ae94"><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:ga3ed4b8e72d5a6977974b0c59b24b9e3e"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a00049.html#a00389">_sd_card</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a></td></tr>
<tr class="memdesc:ga3ed4b8e72d5a6977974b0c59b24b9e3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">SD card state. <a href="#ga3ed4b8e72d5a6977974b0c59b24b9e3e">More...</a><br/></td></tr>
<tr class="separator:ga3ed4b8e72d5a6977974b0c59b24b9e3e"><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:ga531c35e38ede3ea4e5ba5afb24b29493"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <br/>
&#160;&#160;<a class="el" href="a00049.html#gga531c35e38ede3ea4e5ba5afb24b29493a9fdf7d592b595f8dffd0519979222bc8">kSD_SupportHighCapacityFlag</a> = (1U &lt;&lt; 1U),
<br/>
&#160;&#160;<a class="el" href="a00049.html#gga531c35e38ede3ea4e5ba5afb24b29493a163a232e42705c297ad363283349cc40">kSD_Support4BitWidthFlag</a> = (1U &lt;&lt; 2U),
<br/>
&#160;&#160;<a class="el" href="a00049.html#gga531c35e38ede3ea4e5ba5afb24b29493ad76278db320cf350e0a21fa35cef47db">kSD_SupportSdhcFlag</a> = (1U &lt;&lt; 3U),
<br/>
&#160;&#160;<a class="el" href="a00049.html#gga531c35e38ede3ea4e5ba5afb24b29493a38bc49f3235ef3245779efcbd0f616ca">kSD_SupportSdxcFlag</a> = (1U &lt;&lt; 4U),
<br/>
&#160;&#160;<a class="el" href="a00049.html#gga531c35e38ede3ea4e5ba5afb24b29493a9ea1d2e9f73d26c15593a98481eb8132">kSD_SupportVoltage180v</a> = (1U &lt;&lt; 5U),
<br/>
&#160;&#160;<a class="el" href="a00049.html#gga531c35e38ede3ea4e5ba5afb24b29493a1d6f3540c4292326a017d8b629021d09">kSD_SupportSetBlockCountCmd</a> = (1U &lt;&lt; 6U),
<br/>
&#160;&#160;<a class="el" href="a00049.html#gga531c35e38ede3ea4e5ba5afb24b29493a76d5891295fcaef57bb726e2fde42671">kSD_SupportSpeedClassControlCmd</a> = (1U &lt;&lt; 7U)
<br/>
}</td></tr>
<tr class="memdesc:ga531c35e38ede3ea4e5ba5afb24b29493"><td class="mdescLeft">&#160;</td><td class="mdescRight">SD card flags. <a href="a00049.html#ga531c35e38ede3ea4e5ba5afb24b29493">More...</a><br/></td></tr>
<tr class="separator:ga531c35e38ede3ea4e5ba5afb24b29493"><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>
SDCARD Function</h2></td></tr>
<tr class="memitem:ga281fb14816d236446ee2d047be0c7155"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ga281fb14816d236446ee2d047be0c7155">SD_Init</a> (<a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *card)</td></tr>
<tr class="memdesc:ga281fb14816d236446ee2d047be0c7155"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the card on a specific host controller. <a href="#ga281fb14816d236446ee2d047be0c7155">More...</a><br/></td></tr>
<tr class="separator:ga281fb14816d236446ee2d047be0c7155"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga50dee2b5bc071a01480b0ab3671c8524"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ga50dee2b5bc071a01480b0ab3671c8524">SD_Deinit</a> (<a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *card)</td></tr>
<tr class="memdesc:ga50dee2b5bc071a01480b0ab3671c8524"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deinitializes the card. <a href="#ga50dee2b5bc071a01480b0ab3671c8524">More...</a><br/></td></tr>
<tr class="separator:ga50dee2b5bc071a01480b0ab3671c8524"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga22154dd3ecedaaf63ed951fb248b0265"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ga22154dd3ecedaaf63ed951fb248b0265">SD_CardInit</a> (<a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *card)</td></tr>
<tr class="memdesc:ga22154dd3ecedaaf63ed951fb248b0265"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the card. <a href="#ga22154dd3ecedaaf63ed951fb248b0265">More...</a><br/></td></tr>
<tr class="separator:ga22154dd3ecedaaf63ed951fb248b0265"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2683393842666aa39ec74898a7ad6e8a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ga2683393842666aa39ec74898a7ad6e8a">SD_CardDeinit</a> (<a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *card)</td></tr>
<tr class="memdesc:ga2683393842666aa39ec74898a7ad6e8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deinitializes the card. <a href="#ga2683393842666aa39ec74898a7ad6e8a">More...</a><br/></td></tr>
<tr class="separator:ga2683393842666aa39ec74898a7ad6e8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga47f15fb31bcb60a2eeb474081cde54e4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ga47f15fb31bcb60a2eeb474081cde54e4">SD_HostInit</a> (<a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *card)</td></tr>
<tr class="memdesc:ga47f15fb31bcb60a2eeb474081cde54e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">initialize the host. <a href="#ga47f15fb31bcb60a2eeb474081cde54e4">More...</a><br/></td></tr>
<tr class="separator:ga47f15fb31bcb60a2eeb474081cde54e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac44a13a36870f276b1f323a5b519bb9f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#gac44a13a36870f276b1f323a5b519bb9f">SD_HostDeinit</a> (<a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *card)</td></tr>
<tr class="memdesc:gac44a13a36870f276b1f323a5b519bb9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deinitializes the host. <a href="#gac44a13a36870f276b1f323a5b519bb9f">More...</a><br/></td></tr>
<tr class="separator:gac44a13a36870f276b1f323a5b519bb9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga75785c0a29f560b0bfd14b572106bda0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ga75785c0a29f560b0bfd14b572106bda0">SD_HostDoReset</a> (<a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *card)</td></tr>
<tr class="memdesc:ga75785c0a29f560b0bfd14b572106bda0"><td class="mdescLeft">&#160;</td><td class="mdescRight">reset the host. <a href="#ga75785c0a29f560b0bfd14b572106bda0">More...</a><br/></td></tr>
<tr class="separator:ga75785c0a29f560b0bfd14b572106bda0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5e8b2d7768c7d916a1953583035fdbb3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ga5e8b2d7768c7d916a1953583035fdbb3">SD_SetCardPower</a> (<a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *card, bool enable)</td></tr>
<tr class="memdesc:ga5e8b2d7768c7d916a1953583035fdbb3"><td class="mdescLeft">&#160;</td><td class="mdescRight">set card power. <a href="#ga5e8b2d7768c7d916a1953583035fdbb3">More...</a><br/></td></tr>
<tr class="separator:ga5e8b2d7768c7d916a1953583035fdbb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga38c82aa0e0daaec4c6be8ba3acd56da2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ga38c82aa0e0daaec4c6be8ba3acd56da2">SD_PollingCardInsert</a> (<a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *card, uint32_t status)</td></tr>
<tr class="memdesc:ga38c82aa0e0daaec4c6be8ba3acd56da2"><td class="mdescLeft">&#160;</td><td class="mdescRight">sd wait card detect function. <a href="#ga38c82aa0e0daaec4c6be8ba3acd56da2">More...</a><br/></td></tr>
<tr class="separator:ga38c82aa0e0daaec4c6be8ba3acd56da2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6de9f134ae84e25053647e2c0ba8ef27"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ga6de9f134ae84e25053647e2c0ba8ef27">SD_IsCardPresent</a> (<a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *card)</td></tr>
<tr class="memdesc:ga6de9f134ae84e25053647e2c0ba8ef27"><td class="mdescLeft">&#160;</td><td class="mdescRight">sd card present check function. <a href="#ga6de9f134ae84e25053647e2c0ba8ef27">More...</a><br/></td></tr>
<tr class="separator:ga6de9f134ae84e25053647e2c0ba8ef27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad9b5c3ecc8acf18ee06ffd4154eb0352"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#gad9b5c3ecc8acf18ee06ffd4154eb0352">SD_CheckReadOnly</a> (<a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *card)</td></tr>
<tr class="memdesc:gad9b5c3ecc8acf18ee06ffd4154eb0352"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether the card is write-protected. <a href="#gad9b5c3ecc8acf18ee06ffd4154eb0352">More...</a><br/></td></tr>
<tr class="separator:gad9b5c3ecc8acf18ee06ffd4154eb0352"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab8b91d51f045d43e32770599a9406e3b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#gab8b91d51f045d43e32770599a9406e3b">SD_SelectCard</a> (<a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *card, bool isSelected)</td></tr>
<tr class="memdesc:gab8b91d51f045d43e32770599a9406e3b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send SELECT_CARD command to set the card to be transfer state or not. <a href="#gab8b91d51f045d43e32770599a9406e3b">More...</a><br/></td></tr>
<tr class="separator:gab8b91d51f045d43e32770599a9406e3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf3537757745005c2b103be314ddfaa7b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#gaf3537757745005c2b103be314ddfaa7b">SD_ReadStatus</a> (<a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *card)</td></tr>
<tr class="memdesc:gaf3537757745005c2b103be314ddfaa7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send ACMD13 to get the card current status. <a href="#gaf3537757745005c2b103be314ddfaa7b">More...</a><br/></td></tr>
<tr class="separator:gaf3537757745005c2b103be314ddfaa7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1d134e8244b6641352d1a374d0e8b848"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ga1d134e8244b6641352d1a374d0e8b848">SD_ReadBlocks</a> (<a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *card, uint8_t *buffer, uint32_t startBlock, uint32_t blockCount)</td></tr>
<tr class="memdesc:ga1d134e8244b6641352d1a374d0e8b848"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads blocks from the specific card. <a href="#ga1d134e8244b6641352d1a374d0e8b848">More...</a><br/></td></tr>
<tr class="separator:ga1d134e8244b6641352d1a374d0e8b848"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9ab9d1eb512dec6e15beb2cee4e9691e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ga9ab9d1eb512dec6e15beb2cee4e9691e">SD_WriteBlocks</a> (<a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *card, const uint8_t *buffer, uint32_t startBlock, uint32_t blockCount)</td></tr>
<tr class="memdesc:ga9ab9d1eb512dec6e15beb2cee4e9691e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes blocks of data to the specific card. <a href="#ga9ab9d1eb512dec6e15beb2cee4e9691e">More...</a><br/></td></tr>
<tr class="separator:ga9ab9d1eb512dec6e15beb2cee4e9691e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga04e7b25d9776e92ddfcf72063af02418"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ga04e7b25d9776e92ddfcf72063af02418">SD_EraseBlocks</a> (<a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *card, uint32_t startBlock, uint32_t blockCount)</td></tr>
<tr class="memdesc:ga04e7b25d9776e92ddfcf72063af02418"><td class="mdescLeft">&#160;</td><td class="mdescRight">Erases blocks of the specific card. <a href="#ga04e7b25d9776e92ddfcf72063af02418">More...</a><br/></td></tr>
<tr class="separator:ga04e7b25d9776e92ddfcf72063af02418"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga07178b3047e22e71bd7a3bd60322e7b6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ga07178b3047e22e71bd7a3bd60322e7b6">SD_SetDriverStrength</a> (<a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *card, <a class="el" href="a00038.html#ga6af5598c7548245c6c9c192156309f48">sd_driver_strength_t</a> driverStrength)</td></tr>
<tr class="memdesc:ga07178b3047e22e71bd7a3bd60322e7b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">select card driver strength select card driver strength <a href="#ga07178b3047e22e71bd7a3bd60322e7b6">More...</a><br/></td></tr>
<tr class="separator:ga07178b3047e22e71bd7a3bd60322e7b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6a3a34d76af9ee378086a4dcc1259936"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ga6a3a34d76af9ee378086a4dcc1259936">SD_SetMaxCurrent</a> (<a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *card, <a class="el" href="a00038.html#gaa06ea29530147a8b1e28d80d581c3933">sd_max_current_t</a> maxCurrent)</td></tr>
<tr class="memdesc:ga6a3a34d76af9ee378086a4dcc1259936"><td class="mdescLeft">&#160;</td><td class="mdescRight">select max current select max operation current <a href="#ga6a3a34d76af9ee378086a4dcc1259936">More...</a><br/></td></tr>
<tr class="separator:ga6a3a34d76af9ee378086a4dcc1259936"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga33babf402c15dae5d2712793230158a9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ga33babf402c15dae5d2712793230158a9">SD_PollingCardStatusBusy</a> (<a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *card, uint32_t timeoutMs)</td></tr>
<tr class="memdesc:ga33babf402c15dae5d2712793230158a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Polling card idle status. <a href="#ga33babf402c15dae5d2712793230158a9">More...</a><br/></td></tr>
<tr class="separator:ga33babf402c15dae5d2712793230158a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="a00389" id="a00389"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct _sd_card</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><p>Define the card structure including the necessary fields to identify and describe the card. </p>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a5da956c0adaa77039dfcadad15695f3a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5da956c0adaa77039dfcadad15695f3a"></a>
<a class="el" href="a00053.html#ga3420a6f07f4698ce018b4020e720b9dc">sdmmchost_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#a5da956c0adaa77039dfcadad15695f3a">host</a></td></tr>
<tr class="memdesc:a5da956c0adaa77039dfcadad15695f3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Host configuration. <br/></td></tr>
<tr class="separator:a5da956c0adaa77039dfcadad15695f3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a8f2f78bf5bc674ea855a253c24d573"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1a8f2f78bf5bc674ea855a253c24d573"></a>
<a class="el" href="a00038.html#ga44c60cc59f31569e1aa85856bc891bbf">sd_usr_param_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#a1a8f2f78bf5bc674ea855a253c24d573">usrParam</a></td></tr>
<tr class="memdesc:a1a8f2f78bf5bc674ea855a253c24d573"><td class="mdescLeft">&#160;</td><td class="mdescRight">user parameter <br/></td></tr>
<tr class="separator:a1a8f2f78bf5bc674ea855a253c24d573"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab25fa672fc7704bbafa9ebe0363726ab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab25fa672fc7704bbafa9ebe0363726ab"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ab25fa672fc7704bbafa9ebe0363726ab">isHostReady</a></td></tr>
<tr class="memdesc:ab25fa672fc7704bbafa9ebe0363726ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">use this flag to indicate if need host re-init or not <br/></td></tr>
<tr class="separator:ab25fa672fc7704bbafa9ebe0363726ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ababa71848d9c23d678799bddfe512119"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ababa71848d9c23d678799bddfe512119"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ababa71848d9c23d678799bddfe512119">noInteralAlign</a></td></tr>
<tr class="memdesc:ababa71848d9c23d678799bddfe512119"><td class="mdescLeft">&#160;</td><td class="mdescRight">used to enable/disable the functionality of the exchange buffer <br/></td></tr>
<tr class="separator:ababa71848d9c23d678799bddfe512119"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87a622b7e09d007b5c16e0600bcb0169"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a87a622b7e09d007b5c16e0600bcb0169"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#a87a622b7e09d007b5c16e0600bcb0169">busClock_Hz</a></td></tr>
<tr class="memdesc:a87a622b7e09d007b5c16e0600bcb0169"><td class="mdescLeft">&#160;</td><td class="mdescRight">SD bus clock frequency united in Hz. <br/></td></tr>
<tr class="separator:a87a622b7e09d007b5c16e0600bcb0169"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15b2f6416886f1b3d7d8ea65dc4e5e75"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a15b2f6416886f1b3d7d8ea65dc4e5e75"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#a15b2f6416886f1b3d7d8ea65dc4e5e75">relativeAddress</a></td></tr>
<tr class="memdesc:a15b2f6416886f1b3d7d8ea65dc4e5e75"><td class="mdescLeft">&#160;</td><td class="mdescRight">Relative address of the card. <br/></td></tr>
<tr class="separator:a15b2f6416886f1b3d7d8ea65dc4e5e75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4ece3439221109deec6dfe993de246d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad4ece3439221109deec6dfe993de246d"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ad4ece3439221109deec6dfe993de246d">version</a></td></tr>
<tr class="memdesc:ad4ece3439221109deec6dfe993de246d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Card version. <br/></td></tr>
<tr class="separator:ad4ece3439221109deec6dfe993de246d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94bdeb3c9034cdb4e2c0441f65d2b643"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a94bdeb3c9034cdb4e2c0441f65d2b643"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#a94bdeb3c9034cdb4e2c0441f65d2b643">flags</a></td></tr>
<tr class="memdesc:a94bdeb3c9034cdb4e2c0441f65d2b643"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags in _sd_card_flag. <br/></td></tr>
<tr class="separator:a94bdeb3c9034cdb4e2c0441f65d2b643"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a246f6fbb09fe131d2a1118088ef9350f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a246f6fbb09fe131d2a1118088ef9350f"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#a246f6fbb09fe131d2a1118088ef9350f">internalBuffer</a> [<a class="el" href="a00038.html#ga4dd122ccc71f9eef692acf27d5f851c3">FSL_SDMMC_CARD_INTERNAL_BUFFER_SIZE</a>]</td></tr>
<tr class="memdesc:a246f6fbb09fe131d2a1118088ef9350f"><td class="mdescLeft">&#160;</td><td class="mdescRight">internal buffer <br/></td></tr>
<tr class="separator:a246f6fbb09fe131d2a1118088ef9350f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae541aa02691ef02e47e06dc45355315d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae541aa02691ef02e47e06dc45355315d"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ae541aa02691ef02e47e06dc45355315d">ocr</a></td></tr>
<tr class="memdesc:ae541aa02691ef02e47e06dc45355315d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Raw OCR content. <br/></td></tr>
<tr class="separator:ae541aa02691ef02e47e06dc45355315d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a861f5d32bad661c75cd169aaac5da40b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a861f5d32bad661c75cd169aaac5da40b"></a>
<a class="el" href="a00038.html#ga2c4d45c8de5aa5ad73009abd2f646df5">sd_cid_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#a861f5d32bad661c75cd169aaac5da40b">cid</a></td></tr>
<tr class="memdesc:a861f5d32bad661c75cd169aaac5da40b"><td class="mdescLeft">&#160;</td><td class="mdescRight">CID. <br/></td></tr>
<tr class="separator:a861f5d32bad661c75cd169aaac5da40b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30804d870d01c9d52cb75f8af26f2c30"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a30804d870d01c9d52cb75f8af26f2c30"></a>
<a class="el" href="a00038.html#ga6390baf793e25a81ad8655919b5570ac">sd_csd_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#a30804d870d01c9d52cb75f8af26f2c30">csd</a></td></tr>
<tr class="memdesc:a30804d870d01c9d52cb75f8af26f2c30"><td class="mdescLeft">&#160;</td><td class="mdescRight">CSD. <br/></td></tr>
<tr class="separator:a30804d870d01c9d52cb75f8af26f2c30"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d58493431329bc404b3e109b750f62e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6d58493431329bc404b3e109b750f62e"></a>
<a class="el" href="a00038.html#ga5b35eced94d95fd7a4f37498a954b4d4">sd_scr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#a6d58493431329bc404b3e109b750f62e">scr</a></td></tr>
<tr class="memdesc:a6d58493431329bc404b3e109b750f62e"><td class="mdescLeft">&#160;</td><td class="mdescRight">SCR. <br/></td></tr>
<tr class="separator:a6d58493431329bc404b3e109b750f62e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6209fe58c1b29073f2f814eb95d1bb33"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6209fe58c1b29073f2f814eb95d1bb33"></a>
<a class="el" href="a00038.html#ga23007e5e9a2225ecb03aed03a94b69ab">sd_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#a6209fe58c1b29073f2f814eb95d1bb33">stat</a></td></tr>
<tr class="memdesc:a6209fe58c1b29073f2f814eb95d1bb33"><td class="mdescLeft">&#160;</td><td class="mdescRight">sd 512 bit status <br/></td></tr>
<tr class="separator:a6209fe58c1b29073f2f814eb95d1bb33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41e22db9444a0b5af024ecf7dc805153"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41e22db9444a0b5af024ecf7dc805153"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#a41e22db9444a0b5af024ecf7dc805153">blockCount</a></td></tr>
<tr class="memdesc:a41e22db9444a0b5af024ecf7dc805153"><td class="mdescLeft">&#160;</td><td class="mdescRight">Card total block number. <br/></td></tr>
<tr class="separator:a41e22db9444a0b5af024ecf7dc805153"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae39c860157b673b9bb5a509f431f6633"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae39c860157b673b9bb5a509f431f6633"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#ae39c860157b673b9bb5a509f431f6633">blockSize</a></td></tr>
<tr class="memdesc:ae39c860157b673b9bb5a509f431f6633"><td class="mdescLeft">&#160;</td><td class="mdescRight">Card block size. <br/></td></tr>
<tr class="separator:ae39c860157b673b9bb5a509f431f6633"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec1862dd6bfb0fcf53b8c6369c1e4824"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec1862dd6bfb0fcf53b8c6369c1e4824"></a>
<a class="el" href="a00038.html#gac765d50e69b946e7323c69d60caa88a3">sd_timing_mode_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#aec1862dd6bfb0fcf53b8c6369c1e4824">currentTiming</a></td></tr>
<tr class="memdesc:aec1862dd6bfb0fcf53b8c6369c1e4824"><td class="mdescLeft">&#160;</td><td class="mdescRight">current timing mode <br/></td></tr>
<tr class="separator:aec1862dd6bfb0fcf53b8c6369c1e4824"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a341b2a9d906839886be2ebbe5b2e571e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a341b2a9d906839886be2ebbe5b2e571e"></a>
<a class="el" href="a00038.html#ga6af5598c7548245c6c9c192156309f48">sd_driver_strength_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#a341b2a9d906839886be2ebbe5b2e571e">driverStrength</a></td></tr>
<tr class="memdesc:a341b2a9d906839886be2ebbe5b2e571e"><td class="mdescLeft">&#160;</td><td class="mdescRight">driver strength <br/></td></tr>
<tr class="separator:a341b2a9d906839886be2ebbe5b2e571e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0fcb97311ca642051072005c46b1489b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0fcb97311ca642051072005c46b1489b"></a>
<a class="el" href="a00038.html#gaa06ea29530147a8b1e28d80d581c3933">sd_max_current_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#a0fcb97311ca642051072005c46b1489b">maxCurrent</a></td></tr>
<tr class="memdesc:a0fcb97311ca642051072005c46b1489b"><td class="mdescLeft">&#160;</td><td class="mdescRight">card current limit <br/></td></tr>
<tr class="separator:a0fcb97311ca642051072005c46b1489b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61ac121789078102cbcf9918ca209964"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61ac121789078102cbcf9918ca209964"></a>
<a class="el" href="a00038.html#ga2e26f7a56cad43b7f5d1128952d955e8">sdmmc_operation_voltage_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#a61ac121789078102cbcf9918ca209964">operationVoltage</a></td></tr>
<tr class="memdesc:a61ac121789078102cbcf9918ca209964"><td class="mdescLeft">&#160;</td><td class="mdescRight">card operation voltage <br/></td></tr>
<tr class="separator:a61ac121789078102cbcf9918ca209964"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c2f73eb9b1c3a6275fcae85019f7d93"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6c2f73eb9b1c3a6275fcae85019f7d93"></a>
<a class="el" href="a00052.html#gab4b501fd4e841889183b1177e468eba9">sdmmc_osa_mutex_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#a6c2f73eb9b1c3a6275fcae85019f7d93">lock</a></td></tr>
<tr class="memdesc:a6c2f73eb9b1c3a6275fcae85019f7d93"><td class="mdescLeft">&#160;</td><td class="mdescRight">card access lock <br/></td></tr>
<tr class="separator:a6c2f73eb9b1c3a6275fcae85019f7d93"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga6fa18202479ec86d33169ee28513ae94"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define FSL_SD_DRIVER_VERSION&#160;&#160;&#160;(<a class="el" href="a00242.html#ga812138aa3315b0c6953c1a26130bcc37">MAKE_VERSION</a>(2U, 4U, 2U)) /*2.4.2*/</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="ga3ed4b8e72d5a6977974b0c59b24b9e3e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="a00049.html#a00389">_sd_card</a> <a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Define the card structure including the necessary fields to identify and describe the card. </p>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="ga531c35e38ede3ea4e5ba5afb24b29493"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">anonymous enum</td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="anchor" id="_sd_card_flag"></a></p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga531c35e38ede3ea4e5ba5afb24b29493a9fdf7d592b595f8dffd0519979222bc8"></a>kSD_SupportHighCapacityFlag</em>&nbsp;</td><td class="fielddoc">
<p>Support high capacity. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga531c35e38ede3ea4e5ba5afb24b29493a163a232e42705c297ad363283349cc40"></a>kSD_Support4BitWidthFlag</em>&nbsp;</td><td class="fielddoc">
<p>Support 4-bit data width. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga531c35e38ede3ea4e5ba5afb24b29493ad76278db320cf350e0a21fa35cef47db"></a>kSD_SupportSdhcFlag</em>&nbsp;</td><td class="fielddoc">
<p>Card is SDHC. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga531c35e38ede3ea4e5ba5afb24b29493a38bc49f3235ef3245779efcbd0f616ca"></a>kSD_SupportSdxcFlag</em>&nbsp;</td><td class="fielddoc">
<p>Card is SDXC. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga531c35e38ede3ea4e5ba5afb24b29493a9ea1d2e9f73d26c15593a98481eb8132"></a>kSD_SupportVoltage180v</em>&nbsp;</td><td class="fielddoc">
<p>card support 1.8v voltage </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga531c35e38ede3ea4e5ba5afb24b29493a1d6f3540c4292326a017d8b629021d09"></a>kSD_SupportSetBlockCountCmd</em>&nbsp;</td><td class="fielddoc">
<p>card support cmd23 flag </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga531c35e38ede3ea4e5ba5afb24b29493a76d5891295fcaef57bb726e2fde42671"></a>kSD_SupportSpeedClassControlCmd</em>&nbsp;</td><td class="fielddoc">
<p>card support speed class control flag </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga281fb14816d236446ee2d047be0c7155"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> SD_Init </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function initializes the card on a specific host controller, it is consist of host init, card detect, card init function, however user can ignore this high level function, instead of use the low level function, such as SD_CardInit, SD_HostInit, SD_CardDetect.</p>
<p>Thread safe function, please note that the function will create the mutex lock dynamically by default, so to avoid the mutex create redundantly, application must follow bellow sequence for card re-initialization </p>
<div class="fragment"><div class="line">* <a class="code" href="a00049.html#ga50dee2b5bc071a01480b0ab3671c8524">SD_Deinit</a>(card);</div>
<div class="line">* <a class="code" href="a00049.html#ga281fb14816d236446ee2d047be0c7155">SD_Init</a>(card);</div>
<div class="line">* </div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a36304fa7f64a74351464b5f16a0765c7" title="host controller not ready ">kStatus_SDMMC_HostNotReady</a></td><td>host is not ready. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4aee037801937ac6781197e7cb2713bab3" title="Go idle failed. ">kStatus_SDMMC_GoIdleFailed</a></td><td>Go idle failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a4bd8f4c0ddc86120d94a75e4e5b4c3e1" title="Haven&#39;t supported. ">kStatus_SDMMC_NotSupportYet</a></td><td>Card not support. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4ac05b576643f7597d46f0a9b8a77c04ab" title="Send Operation Condition failed. ">kStatus_SDMMC_HandShakeOperationConditionFailed</a></td><td>Send operation condition failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a33ce287b896a9b498be7909cf2f7b38e" title="Send CID failed. ">kStatus_SDMMC_AllSendCidFailed</a></td><td>Send CID failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a96b5e73d4dd9eb02bc9bfb6362664136" title="Send relative address failed. ">kStatus_SDMMC_SendRelativeAddressFailed</a></td><td>Send relative address failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a73cec1c7d4346ca37ab6b0818f3a5041" title="Send CSD failed. ">kStatus_SDMMC_SendCsdFailed</a></td><td>Send CSD failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a99077f9e3bb94b11b0169cf07a34e025" title="Select card failed. ">kStatus_SDMMC_SelectCardFailed</a></td><td>Send SELECT_CARD command failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a36de73a8df86d5a70b5f2b5c1b3b4598" title="Send SCR failed. ">kStatus_SDMMC_SendScrFailed</a></td><td>Send SCR failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4aeb87568ca0030117ce1bdca2d3fe36df" title="Set bus width failed. ">kStatus_SDMMC_SetDataBusWidthFailed</a></td><td>Set bus width failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4ace05b1fe2c1b30113d51bee8f7cb910c" title="Switch high speed failed. ">kStatus_SDMMC_SwitchBusTimingFailed</a></td><td>Switch high speed failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a7ce8c51a45aad4f51f2dcbddcb7dc233" title="Set block size failed. ">kStatus_SDMMC_SetCardBlockSizeFailed</a></td><td>Set card block size failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a829bee76c6b02225d9c891ae8ef70881" title="Generic status for Success. ">kStatus_Success</a></td><td>Operate successfully. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga50dee2b5bc071a01480b0ab3671c8524"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SD_Deinit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function deinitializes the specific card and host. Please note it is a thread safe function.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga22154dd3ecedaaf63ed951fb248b0265"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> SD_CardInit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function initializes the card only, make sure the host is ready when call this function, otherwise it will return kStatus_SDMMC_HostNotReady.</p>
<p>Thread safe function, please note that the function will create the mutex lock dynamically by default, so to avoid the mutex create redundantly, application must follow bellow sequence for card re-initialization </p>
<div class="fragment"><div class="line">* <a class="code" href="a00049.html#ga2683393842666aa39ec74898a7ad6e8a">SD_CardDeinit</a>(card);</div>
<div class="line">* <a class="code" href="a00049.html#ga22154dd3ecedaaf63ed951fb248b0265">SD_CardInit</a>(card);</div>
<div class="line">* </div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a36304fa7f64a74351464b5f16a0765c7" title="host controller not ready ">kStatus_SDMMC_HostNotReady</a></td><td>host is not ready. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4aee037801937ac6781197e7cb2713bab3" title="Go idle failed. ">kStatus_SDMMC_GoIdleFailed</a></td><td>Go idle failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a4bd8f4c0ddc86120d94a75e4e5b4c3e1" title="Haven&#39;t supported. ">kStatus_SDMMC_NotSupportYet</a></td><td>Card not support. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4ac05b576643f7597d46f0a9b8a77c04ab" title="Send Operation Condition failed. ">kStatus_SDMMC_HandShakeOperationConditionFailed</a></td><td>Send operation condition failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a33ce287b896a9b498be7909cf2f7b38e" title="Send CID failed. ">kStatus_SDMMC_AllSendCidFailed</a></td><td>Send CID failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a96b5e73d4dd9eb02bc9bfb6362664136" title="Send relative address failed. ">kStatus_SDMMC_SendRelativeAddressFailed</a></td><td>Send relative address failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a73cec1c7d4346ca37ab6b0818f3a5041" title="Send CSD failed. ">kStatus_SDMMC_SendCsdFailed</a></td><td>Send CSD failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a99077f9e3bb94b11b0169cf07a34e025" title="Select card failed. ">kStatus_SDMMC_SelectCardFailed</a></td><td>Send SELECT_CARD command failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a36de73a8df86d5a70b5f2b5c1b3b4598" title="Send SCR failed. ">kStatus_SDMMC_SendScrFailed</a></td><td>Send SCR failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4aeb87568ca0030117ce1bdca2d3fe36df" title="Set bus width failed. ">kStatus_SDMMC_SetDataBusWidthFailed</a></td><td>Set bus width failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4ace05b1fe2c1b30113d51bee8f7cb910c" title="Switch high speed failed. ">kStatus_SDMMC_SwitchBusTimingFailed</a></td><td>Switch high speed failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a7ce8c51a45aad4f51f2dcbddcb7dc233" title="Set block size failed. ">kStatus_SDMMC_SetCardBlockSizeFailed</a></td><td>Set card block size failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a829bee76c6b02225d9c891ae8ef70881" title="Generic status for Success. ">kStatus_Success</a></td><td>Operate successfully. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga2683393842666aa39ec74898a7ad6e8a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SD_CardDeinit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function deinitializes the specific card. Please note it is a thread safe function.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga47f15fb31bcb60a2eeb474081cde54e4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> SD_HostInit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function deinitializes the specific host.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac44a13a36870f276b1f323a5b519bb9f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SD_HostDeinit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function deinitializes the host.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga75785c0a29f560b0bfd14b572106bda0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SD_HostDoReset </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function reset the specific host.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga5e8b2d7768c7d916a1953583035fdbb3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SD_SetCardPower </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>enable</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The power off operation depend on host or the user define power on function. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>card descriptor. </td></tr>
<tr><td class="paramname">enable</td><td>true is power on, false is power off. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga38c82aa0e0daaec4c6be8ba3acd56da2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> SD_PollingCardInsert </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>status</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Detect card through GPIO, CD, DATA3. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>card descriptor. </td></tr>
<tr><td class="paramname">status</td><td>detect status, kSD_Inserted or kSD_Removed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga6de9f134ae84e25053647e2c0ba8ef27"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool SD_IsCardPresent </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *&#160;</td>
<td class="paramname"><em>card</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">card</td><td>card descriptor. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gad9b5c3ecc8acf18ee06ffd4154eb0352"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool SD_CheckReadOnly </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function checks if the card is write-protected via the CSD register.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>The specific card. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">true</td><td>Card is read only. </td></tr>
<tr><td class="paramname">false</td><td>Card isn't read only. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gab8b91d51f045d43e32770599a9406e3b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> SD_SelectCard </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>isSelected</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">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">isSelected</td><td>True to set the card into transfer state, false to disselect. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a969247847528f8a186376988d0fb448c" title="Send command failed. ">kStatus_SDMMC_TransferFailed</a></td><td>Transfer failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a829bee76c6b02225d9c891ae8ef70881" title="Generic status for Success. ">kStatus_Success</a></td><td>Operate successfully. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaf3537757745005c2b103be314ddfaa7b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> SD_ReadStatus </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *&#160;</td>
<td class="paramname"><em>card</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">card</td><td>Card descriptor. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a969247847528f8a186376988d0fb448c" title="Send command failed. ">kStatus_SDMMC_TransferFailed</a></td><td>Transfer failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a7f58bb3e7cb4ef2ea7ae0eedba07470d" title="Send application command failed. ">kStatus_SDMMC_SendApplicationCommandFailed</a></td><td>send application command failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a829bee76c6b02225d9c891ae8ef70881" title="Generic status for Success. ">kStatus_Success</a></td><td>Operate successfully. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga1d134e8244b6641352d1a374d0e8b848"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> SD_ReadBlocks </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>startBlock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>blockCount</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function reads blocks from the specific card with default block size defined by the SDHC_CARD_DEFAULT_BLOCK_SIZE.</p>
<p>Please note it is a thread safe function.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">buffer</td><td>The buffer to save the data read from card. </td></tr>
<tr><td class="paramname">startBlock</td><td>The start block index. </td></tr>
<tr><td class="paramname">blockCount</td><td>The number of blocks to read. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a9743ab3bec5065667c0b12510317e76c" title="Generic status for invalid argument check. ">kStatus_InvalidArgument</a></td><td>Invalid argument. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a1fd62104d25e38e44cf0f02299397aee" title="Card doesn&#39;t support. ">kStatus_SDMMC_CardNotSupport</a></td><td>Card not support. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a4bd8f4c0ddc86120d94a75e4e5b4c3e1" title="Haven&#39;t supported. ">kStatus_SDMMC_NotSupportYet</a></td><td>Not support now. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a8431f0a58374484158210c4858117168" title="Wait write complete failed. ">kStatus_SDMMC_WaitWriteCompleteFailed</a></td><td>Send status failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a969247847528f8a186376988d0fb448c" title="Send command failed. ">kStatus_SDMMC_TransferFailed</a></td><td>Transfer failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a4bea51bb845aec7597b4eda78449457a" title="Stop transmission failed. ">kStatus_SDMMC_StopTransmissionFailed</a></td><td>Stop transmission failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a829bee76c6b02225d9c891ae8ef70881" title="Generic status for Success. ">kStatus_Success</a></td><td>Operate successfully. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga9ab9d1eb512dec6e15beb2cee4e9691e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> SD_WriteBlocks </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>startBlock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>blockCount</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function writes blocks to the specific card with default block size 512 bytes.</p>
<p>Please note,</p>
<ol type="1">
<li>It is a thread safe function.</li>
<li>It is a async write function which means that the card status may still busy after the function return. Application can call function SD_PollingCardStatusBusy to wait card status idle after the write operation.</li>
</ol>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">buffer</td><td>The buffer holding the data to be written to the card. </td></tr>
<tr><td class="paramname">startBlock</td><td>The start block index. </td></tr>
<tr><td class="paramname">blockCount</td><td>The number of blocks to write. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a9743ab3bec5065667c0b12510317e76c" title="Generic status for invalid argument check. ">kStatus_InvalidArgument</a></td><td>Invalid argument. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a4bd8f4c0ddc86120d94a75e4e5b4c3e1" title="Haven&#39;t supported. ">kStatus_SDMMC_NotSupportYet</a></td><td>Not support now. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a1fd62104d25e38e44cf0f02299397aee" title="Card doesn&#39;t support. ">kStatus_SDMMC_CardNotSupport</a></td><td>Card not support. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a8431f0a58374484158210c4858117168" title="Wait write complete failed. ">kStatus_SDMMC_WaitWriteCompleteFailed</a></td><td>Send status failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a969247847528f8a186376988d0fb448c" title="Send command failed. ">kStatus_SDMMC_TransferFailed</a></td><td>Transfer failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a4bea51bb845aec7597b4eda78449457a" title="Stop transmission failed. ">kStatus_SDMMC_StopTransmissionFailed</a></td><td>Stop transmission failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a829bee76c6b02225d9c891ae8ef70881" title="Generic status for Success. ">kStatus_Success</a></td><td>Operate successfully. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga04e7b25d9776e92ddfcf72063af02418"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> SD_EraseBlocks </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>startBlock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>blockCount</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function erases blocks of the specific card with default block size 512 bytes.</p>
<p>Please note,</p>
<ol type="1">
<li>It is a thread safe function.</li>
<li>It is a async erase function which means that the card status may still busy after the function return. Application can call function SD_PollingCardStatusBusy to wait card status idle after the erase operation.</li>
</ol>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">startBlock</td><td>The start block index. </td></tr>
<tr><td class="paramname">blockCount</td><td>The number of blocks to erase. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a9743ab3bec5065667c0b12510317e76c" title="Generic status for invalid argument check. ">kStatus_InvalidArgument</a></td><td>Invalid argument. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a969247847528f8a186376988d0fb448c" title="Send command failed. ">kStatus_SDMMC_TransferFailed</a></td><td>Transfer failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00038.html#gga4caf8d8f829279fba122163d961608a4a8431f0a58374484158210c4858117168" title="Wait write complete failed. ">kStatus_SDMMC_WaitWriteCompleteFailed</a></td><td>Send status failed. </td></tr>
<tr><td class="paramname"><a class="el" href="a00242.html#ggadf764cbdea00d65edcd07bb9953ad2b7a829bee76c6b02225d9c891ae8ef70881" title="Generic status for Success. ">kStatus_Success</a></td><td>Operate successfully. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga07178b3047e22e71bd7a3bd60322e7b6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> SD_SetDriverStrength </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00038.html#ga6af5598c7548245c6c9c192156309f48">sd_driver_strength_t</a>&#160;</td>
<td class="paramname"><em>driverStrength</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">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">driverStrength</td><td>Driver strength </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga6a3a34d76af9ee378086a4dcc1259936"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> SD_SetMaxCurrent </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00038.html#gaa06ea29530147a8b1e28d80d581c3933">sd_max_current_t</a>&#160;</td>
<td class="paramname"><em>maxCurrent</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">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">maxCurrent</td><td>Max current </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga33babf402c15dae5d2712793230158a9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> SD_PollingCardStatusBusy </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00049.html#ga3ed4b8e72d5a6977974b0c59b24b9e3e">sd_card_t</a> *&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>timeoutMs</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function can be used to polling the status from busy to Idle, the function will return if the card status idle or timeout.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">card</td><td>Card descriptor. </td></tr>
<tr><td class="paramname">timeoutMs</td><td>polling card status timeout value. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_Success</td><td>Operate successfully. </td></tr>
<tr><td class="paramname">kStatus_SDMMC_WaitWriteCompleteFailed</td><td>CMD13 transfer failed. </td></tr>
<tr><td class="paramname">kStatus_SDMMC_PollingCardIdleFailed,polling</td><td>card DAT0 idle failed. </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>