Files
MicrochipFor32/Doc/html/bsp___s_d_8cpp_source.html
2022-11-23 23:59:23 +08:00

560 lines
135 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.5"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MF32BSP_XerolySkinner: D:/gitt/MicrochipFor32/bsp_Device/bsp_SD.cpp 源文件</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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.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 id="projectrow">
<td id="projectalign">
<div id="projectname">MF32BSP_XerolySkinner<span id="projectnumber">&#160;2.0.0</span>
</div>
<div id="projectbrief">C++版本的驱动库</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.5 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','搜索');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">载入中...</div>
<div class="SRStatus" id="Searching">搜索中...</div>
<div class="SRStatus" id="NoMatches">未找到</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_7d600478d4be1ed73c651a71d29ab217.html">bsp_Device</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">bsp_SD.cpp</div></div>
</div><!--header-->
<div class="contents">
<a href="bsp___s_d_8cpp.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*----------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> #</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> # Copyright (c) 2022 Yuankang Liang(XerolySkinner)</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> #</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> # 本软件按原样提供,无任何明示或暗示</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> # 在任何情况下,作者都不承担任何损害赔偿责任</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> #</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> # 使用的许可声明:</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> # 1. 不得歪曲本软件的来源,你不能声称你编写了原始软件.</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> # 2. 免费授予以任何目的,前提是版权声明出现在所有副本中.</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> # 并且版权声明和许可声明同时出现.</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> # 3. 你有使用,复制,修改,分发,和销售本软件的许可.</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> # 4. 如果你在产品中使用,产品文档中的声明是赞赏的但不是必须的.</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> # 5. 本通知不得从任何来源删除或更改.</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> #</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> # Yuankang Liang(XerolySkinner)</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> # E-mail:zabbcccbbaz@163.com</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"> # QQ:2715099320</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment"> # Mobile Phone:13005636215</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment"> #</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment"> # All rights reserved.</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment"> */</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#include &quot;<a class="code" href="bsp___s_d_8h.html">bsp_SD.h</a>&quot;</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="comment">//----------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment">// 程序</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment">// </span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="classbsp___s_d.html#a3250f411819ed57543b0326d13faddc6"> 43</a></span><span class="comment"></span><span class="keywordtype">void</span> <a class="code hl_function" href="classbsp___s_d.html#a3250f411819ed57543b0326d13faddc6">bsp_SD::SD_CS</a>(<a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> p){</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> HAL_GPIO_WritePin(<a class="code hl_variable" href="classbsp___s_d.html#ad7788d2e62152a2fb1a6b307fa902180">GPIOx_CS</a>, <a class="code hl_variable" href="classbsp___s_d.html#a4525b5c0f62e39af1c9adb9a9c22239f">GPIO_Pin_CS</a>, p == 0 ? GPIO_PIN_SET: GPIO_PIN_RESET);}</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="comment">//----------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37"> 53</a></span><span class="comment"></span><a class="code hl_typedef" href="varint_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">bsp_SD::SD_sendcmd</a>(<a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> cmd, <a class="code hl_typedef" href="varint_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> arg, <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> crc){</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> r1;</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> retry;</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <a class="code hl_function" href="classbsp___s_d.html#a3250f411819ed57543b0326d13faddc6">SD_CS</a>(0);</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> __nop();</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <a class="code hl_function" href="classbsp___s_d.html#a3250f411819ed57543b0326d13faddc6">SD_CS</a>(1);</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="keywordflow">do</span> retry = <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(<a class="code hl_variable" href="classbsp___s_d.html#a6c68fa82294f18968a92719931cff5fa">DFF</a>);<span class="keywordflow">while</span>(retry != 0xFF);</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(cmd | 0x40);</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(arg &gt;&gt; 24);</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(arg &gt;&gt; 16);</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(arg &gt;&gt; 8);</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(arg);</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(crc);</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keywordflow">if</span> (cmd == <a class="code hl_define" href="bsp___s_d_8h.html#a8d6283c9b060afbaa0e6d1ff7e5ea7b8">CMD12</a>) <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(<a class="code hl_variable" href="classbsp___s_d.html#a6c68fa82294f18968a92719931cff5fa">DFF</a>);</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keywordflow">do</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(0xFF);<span class="keywordflow">while</span>(r1 &amp; 0X80);</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keywordflow">return</span> r1;}</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="comment">//----------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"><a class="line" href="classbsp___s_d.html#a1e0a3f09367627bcafc8efaaeb90b066"> 74</a></span><span class="comment"></span><a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> <a class="code hl_function" href="classbsp___s_d.html#a1e0a3f09367627bcafc8efaaeb90b066">bsp_SD::SD_init</a>(<span class="keywordtype">void</span>){</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> r1;</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> buff[6] = {0};</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <a class="code hl_typedef" href="varint_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> retry;</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> i;</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// MX_SPI3_Init();</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <a class="code hl_function" href="classbsp___s_d.html#a5ed95b95b141ee21d83ca70c1b06a31a">SPI_setspeed</a>(SPI_BAUDRATEPRESCALER_256);</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <a class="code hl_function" href="classbsp___s_d.html#a3250f411819ed57543b0326d13faddc6">SD_CS</a>(0);</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="keywordflow">for</span> (retry = 0; retry &lt; 10; retry++) <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(<a class="code hl_variable" href="classbsp___s_d.html#a6c68fa82294f18968a92719931cff5fa">DFF</a>);</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="comment">// SD卡进入IDLE状态</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="keywordflow">do</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#a938c1466755f12fb04ac0d1b775584d1">CMD0</a>, 0, 0x95);<span class="keywordflow">while</span>(r1 != 0x01);</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="comment">// 查看SD卡的类型</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <a class="code hl_variable" href="classbsp___s_d.html#a2350601b90ad75bd434094a9c31475c4">SD_TYPE</a> = 0;</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#ac75b3e0ad1fb013ea946fb49bbe65668">CMD8</a>, 0x1AA, 0x87);</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keywordflow">if</span> (r1 == 0x01) {</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="keywordflow">for</span> (i = 0; i &lt; 4; i++) buff[i] = <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(<a class="code hl_variable" href="classbsp___s_d.html#a6c68fa82294f18968a92719931cff5fa">DFF</a>); <span class="comment">//Get trailing return value of R7 resp</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="keywordflow">if</span> (buff[2] == 0X01 &amp;&amp; buff[3] == 0XAA) { <span class="comment">//卡是否支持2.7~3.6V</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> retry = 0XFFFE;</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="keywordflow">do</span> {</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#a78289a7a85ffcfddd626694105dc0780">CMD55</a>, 0, 0X01); <span class="comment">//发送CMD55</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#a3ca1450d0ac55d2705aab03537bf2865">CMD41</a>, 0x40000000, 0X01); <span class="comment">//发送CMD41</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> }<span class="keywordflow">while</span>(r1 &amp;&amp; retry--);</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keywordflow">if</span> (retry &amp;&amp; <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#aa7a26b2cf17e1ff5967820a1fa41a7aa">CMD58</a>, 0, 0X01) == 0) { <span class="comment">//鉴别SD2.0卡版本开始</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="keywordflow">for</span> (i = 0; i &lt; 4; i++) buff[i] = <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(0XFF); <span class="comment">//得到OCR值</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="keywordflow">if</span> (buff[0] &amp;0x40) <a class="code hl_variable" href="classbsp___s_d.html#a2350601b90ad75bd434094a9c31475c4">SD_TYPE</a> = <a class="code hl_define" href="bsp___s_d_8h.html#ae52e14c1b95e5162f4fe492d9b1b0fec">V2HC</a>;</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keywordflow">else</span> <a class="code hl_variable" href="classbsp___s_d.html#a2350601b90ad75bd434094a9c31475c4">SD_TYPE</a> = <a class="code hl_define" href="bsp___s_d_8h.html#a9173468f90b474471bfff59f8487cbc1">V2</a>;}}</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#a78289a7a85ffcfddd626694105dc0780">CMD55</a>, 0, 0X01); <span class="comment">//发送CMD55</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#a3ca1450d0ac55d2705aab03537bf2865">CMD41</a>, 0, 0X01); <span class="comment">//发送CMD41</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordflow">if</span> (r1 &lt;= 1) {</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <a class="code hl_variable" href="classbsp___s_d.html#a2350601b90ad75bd434094a9c31475c4">SD_TYPE</a> = <a class="code hl_define" href="bsp___s_d_8h.html#ae21a9518b4dd62d2baeab430c89a657a">V1</a>;</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> retry = 0XFFFE;</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="keywordflow">do</span> { <span class="comment">//等待退出IDLE模式</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#a78289a7a85ffcfddd626694105dc0780">CMD55</a>, 0, 0X01); <span class="comment">//发送CMD55</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#a3ca1450d0ac55d2705aab03537bf2865">CMD41</a>, 0, 0X01); <span class="comment">//发送CMD41</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> }<span class="keywordflow">while</span>(r1 &amp;&amp; retry--);}</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordflow">else</span> { <span class="comment">//MMC卡不支持CMD55+CMD41识别</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <a class="code hl_variable" href="classbsp___s_d.html#a2350601b90ad75bd434094a9c31475c4">SD_TYPE</a> = <a class="code hl_define" href="bsp___s_d_8h.html#ab5a7d5477e55758bde614bda3250a93c">MMC</a>; <span class="comment">//MMC V3</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> retry = 0XFFFE;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="keywordflow">do</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#aca9979f299fa78c1128d778084478673">CMD1</a>, 0, 0X01);<span class="keywordflow">while</span>(r1 &amp;&amp; retry--);} <span class="comment">//等待退出IDLE模式</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordflow">if</span> (retry == 0 || <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#aaeab261b94f2031ba41a1d4d857c3541">CMD16</a>, 512, 0X01) != 0) <a class="code hl_variable" href="classbsp___s_d.html#a2350601b90ad75bd434094a9c31475c4">SD_TYPE</a> = <a class="code hl_define" href="bsp___s_d_8h.html#a735563036dced0b7d6cc98f97ea4978b">ERR</a>;} <span class="comment">//错误的卡</span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> }</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <a class="code hl_function" href="classbsp___s_d.html#a3250f411819ed57543b0326d13faddc6">SD_CS</a>(0);</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <a class="code hl_function" href="classbsp___s_d.html#a5ed95b95b141ee21d83ca70c1b06a31a">SPI_setspeed</a>(SPI_BAUDRATEPRESCALER_2);</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classbsp___s_d.html#a2350601b90ad75bd434094a9c31475c4">SD_TYPE</a>) <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="keywordflow">else</span> <span class="keywordflow">return</span> 1;}</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="comment">//----------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"><a class="line" href="classbsp___s_d.html#a242ec4ccd88203b6691cf4ae1e77fdfe"> 127</a></span><span class="comment"></span><a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> <a class="code hl_function" href="classbsp___s_d.html#a242ec4ccd88203b6691cf4ae1e77fdfe">bsp_SD::SD_ReceiveData</a>(<a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> * data, <a class="code hl_typedef" href="varint_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> len){</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> r1;</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <a class="code hl_function" href="classbsp___s_d.html#a3250f411819ed57543b0326d13faddc6">SD_CS</a>(1);</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <span class="keywordflow">do</span> {</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(0xFF);</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> __nop();</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> }<span class="keywordflow">while</span>(r1 != 0xFE);</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keywordflow">while</span> (len--) {</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> *data = <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(0xFF);</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> data++;}</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(0xFF);</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(0xFF);</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keywordflow">return</span> 0;}</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span><span class="comment">//----------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"><a class="line" href="classbsp___s_d.html#a2df843979bb4c764422a37b255c184ea"> 147</a></span><span class="comment"></span><a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> <a class="code hl_function" href="classbsp___s_d.html#a2df843979bb4c764422a37b255c184ea">bsp_SD::SD_SendBlock</a>(<a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> * buf, <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> cmd){</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <a class="code hl_typedef" href="varint_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> t;</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> r1;</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <span class="keywordflow">do</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(0xFF);<span class="keywordflow">while</span>(r1 != 0xFF);</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(cmd);</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="keywordflow">if</span> (cmd != 0XFD) { <span class="comment">//不是结束指令</span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <span class="keywordflow">for</span> (t = 0; t &lt; 512; t++) <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(buf[t]); <span class="comment">//提高速度,减少函数传参时间</span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(0xFF); <span class="comment">//忽略crc</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(0xFF);</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> t = <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</a>(0xFF); <span class="comment">//接收响应</span></div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="keywordflow">if</span> ((t &amp; 0x1F) != 0x05) <span class="keywordflow">return</span> 2;} <span class="comment">//响应错误</span></div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> <span class="keywordflow">return</span> 0;} <span class="comment">//写入成功</span></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span><span class="comment">//----------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"><a class="line" href="classbsp___s_d.html#a25bc03ff69d0c3c9a73153c71c84a8b0"> 164</a></span><span class="comment"></span><a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> <a class="code hl_function" href="classbsp___s_d.html#a25bc03ff69d0c3c9a73153c71c84a8b0">bsp_SD::SD_GETCID</a>(<a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> * cid_data){</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> r1;</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#ae7b800ed8e7bd52e6f570a5ce72b8104">CMD10</a>, 0, 0x01); <span class="comment">//读取CID寄存器</span></div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <span class="keywordflow">if</span> (r1 == 0x00) r1 = <a class="code hl_function" href="classbsp___s_d.html#a242ec4ccd88203b6691cf4ae1e77fdfe">SD_ReceiveData</a>(cid_data, 16);</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <a class="code hl_function" href="classbsp___s_d.html#a3250f411819ed57543b0326d13faddc6">SD_CS</a>(0);</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <span class="keywordflow">if</span> (r1) <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;}</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span><span class="comment">//----------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"><a class="line" href="classbsp___s_d.html#ad0426f6a4b550e60a926c95724d81665"> 176</a></span><span class="comment"></span><a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> <a class="code hl_function" href="classbsp___s_d.html#ad0426f6a4b550e60a926c95724d81665">bsp_SD::SD_GETCSD</a>(<a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> * csd_data){</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> r1;</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#a1fac6a251d7e7dc204d21639bf521459">CMD9</a>, 0, 0x01); <span class="comment">//发CMD9命令读CSD寄存器</span></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keywordflow">if</span> (r1 == 0) r1 = <a class="code hl_function" href="classbsp___s_d.html#a242ec4ccd88203b6691cf4ae1e77fdfe">SD_ReceiveData</a>(csd_data, 16); <span class="comment">//接收16个字节的数据 </span></div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <a class="code hl_function" href="classbsp___s_d.html#a3250f411819ed57543b0326d13faddc6">SD_CS</a>(0); <span class="comment">//取消片选</span></div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="keywordflow">if</span> (r1) <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <span class="keywordflow">else</span> <span class="keywordflow">return</span> 0;}</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span><span class="comment">//----------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"><a class="line" href="classbsp___s_d.html#a600cc886dc5da6d34f75d0bf226c1b92"> 188</a></span><span class="comment"></span><a class="code hl_typedef" href="varint_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> <a class="code hl_function" href="classbsp___s_d.html#a600cc886dc5da6d34f75d0bf226c1b92">bsp_SD::SD_GetSectorCount</a>(<span class="keywordtype">void</span>){</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> csd[16];</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <a class="code hl_typedef" href="varint_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> Capacity;</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> n;</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <a class="code hl_typedef" href="varint_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a> csize;</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="comment">//取CSD信息如果期间出错返回0</span></div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="classbsp___s_d.html#ad0426f6a4b550e60a926c95724d81665">SD_GETCSD</a>(csd) != 0) <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="comment">//如果为SDHC卡按照下面方式计算</span></div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <span class="keywordflow">if</span> ((csd[0] &amp;0xC0) == 0x40) { <span class="comment">//V2.00的卡</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> csize = csd[9] + ((<a class="code hl_typedef" href="varint_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a>) csd[8] &lt;&lt; 8) + 1;</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> Capacity = (<a class="code hl_typedef" href="varint_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a>)</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> csize &lt;&lt; 10;} <span class="comment">//得到扇区数</span></div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> <span class="keywordflow">else</span> { <span class="comment">//V1.XX的卡</span></div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> n = (csd[5] &amp;15) + ((csd[10] &amp;128) &gt;&gt; 7) + ((csd[9] &amp;3) &lt;&lt; 1) + 2;</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> csize = (csd[8] &gt;&gt; 6) + ((<a class="code hl_typedef" href="varint_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a>) csd[7] &lt;&lt; 2) + ((<a class="code hl_typedef" href="varint_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a>) (csd[6] &amp;3) &lt;&lt; 10) + 1;</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> Capacity = (<a class="code hl_typedef" href="varint_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a>)</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> csize &lt;&lt; (n - 9);} <span class="comment">//得到扇区数</span></div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <span class="keywordflow">return</span> Capacity;}</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span><span class="comment">//----------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"><a class="line" href="classbsp___s_d.html#aaf2d27cc9275f3ffa71556124f143d12"> 207</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="classbsp___s_d.html#aaf2d27cc9275f3ffa71556124f143d12">bsp_SD::MSD0_GetCardInfo</a>(<a class="code hl_struct" href="struct_m_s_d___c_a_r_d_i_n_f_o.html">PMSD_CARDINFO</a> <a class="code hl_variable" href="bsp___s_d_8h.html#a2c85a6a257358283b46ba829ae0c2dba">SD0_CardInfo</a>){</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> r1;</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> CSD_Tab[16];</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> CID_Tab[16];</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> <span class="comment">/* Send CMD9, Read CSD */</span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#a1fac6a251d7e7dc204d21639bf521459">CMD9</a>, 0, 0xFF);</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <span class="keywordflow">if</span> (r1 != 0x00) <span class="keywordflow">return</span> r1;</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="classbsp___s_d.html#a242ec4ccd88203b6691cf4ae1e77fdfe">SD_ReceiveData</a>(CSD_Tab, 16)) <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <span class="comment">/* Send CMD10, Read CID */</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#ae7b800ed8e7bd52e6f570a5ce72b8104">CMD10</a>, 0, 0xFF);</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> <span class="keywordflow">if</span> (r1 != 0x00) <span class="keywordflow">return</span> r1;</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="classbsp___s_d.html#a242ec4ccd88203b6691cf4ae1e77fdfe">SD_ReceiveData</a>(CID_Tab, 16)) <span class="keywordflow">return</span> 2;</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <span class="comment">/* Byte 0 */</span></div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a53c6d82426462a5f31a0e07bc2014d97">CSDStruct</a> = (CSD_Tab[0] &amp;0xC0) &gt;&gt; 6;</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a8709246fbcaa2984e8752e5d028a25e1">SysSpecVersion</a> = (CSD_Tab[0] &amp;0x3C) &gt;&gt; 2;</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a43d9f48b7a10b9b16700cc4df7f944c0">Reserved1</a> = CSD_Tab[0] &amp;0x03;</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> <span class="comment">/* Byte 1 */</span></div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#ac80ef2c5f8eedf6e361b9d48da66d98d">TAAC</a> = CSD_Tab[1];</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> <span class="comment">/* Byte 2 */</span></div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#ae9fdc21394cb38fc96de03821b5b1f5b">NSAC</a> = CSD_Tab[2];</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> <span class="comment">/* Byte 3 */</span></div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#ae4fe7f59ec2c0fec2d5c5edc912de487">MaxBusClkFrec</a> = CSD_Tab[3];</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="comment">/* Byte 4 */</span></div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a235ebfcf7116a28eb8f7e2348b46c279">CardComdClasses</a> = CSD_Tab[4] &lt;&lt; 4;</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="comment">/* Byte 5 */</span></div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a235ebfcf7116a28eb8f7e2348b46c279">CardComdClasses</a> |= (CSD_Tab[5] &amp;0xF0) &gt;&gt; 4;</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a0d503ea30e3553e3dbf1d259c1835bca">RdBlockLen</a> = CSD_Tab[5] &amp;0x0F;</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="comment">/* Byte 6 */</span></div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a7e302d0f797f25a53205bf683fcb9315">PartBlockRead</a> = (CSD_Tab[6] &amp;0x80) &gt;&gt; 7;</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#aaf61be1914d24eeef107b78d57f96f66">WrBlockMisalign</a> = (CSD_Tab[6] &amp;0x40) &gt;&gt; 6;</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#ad4c2ce16da22ad02424466d1b42d04b0">RdBlockMisalign</a> = (CSD_Tab[6] &amp;0x20) &gt;&gt; 5;</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a6010a523c29470b3fca2a179608bb165">DSRImpl</a> = (CSD_Tab[6] &amp;0x10) &gt;&gt; 4;</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#af46b7c72145239d75dcf08e97a8015cb">Reserved2</a> = 0; <span class="comment">/* Reserved */</span></div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#ab2341b019f101f621817ab7f13f85321">DeviceSize</a> = (CSD_Tab[6] &amp;0x03) &lt;&lt; 10;</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="comment">/* Byte 7 */</span></div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#ab2341b019f101f621817ab7f13f85321">DeviceSize</a> |= (CSD_Tab[7]) &lt;&lt; 2;</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> <span class="comment">/* Byte 8 */</span></div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#ab2341b019f101f621817ab7f13f85321">DeviceSize</a> |= (CSD_Tab[8] &amp;0xC0) &gt;&gt; 6;</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a5f028ae76ae390e7efc7581863f86fa4">MaxRdCurrentVDDMin</a> = (CSD_Tab[8] &amp;0x38) &gt;&gt; 3;</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a81dee06837a4a641a428af5271ce7881">MaxRdCurrentVDDMax</a> = (CSD_Tab[8] &amp;0x07);</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> <span class="comment">/* Byte 9 */</span></div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a4312d08d19360f8cda0fdcefea8c58a8">MaxWrCurrentVDDMin</a> = (CSD_Tab[9] &amp;0xE0) &gt;&gt; 5;</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a5a4157c022770f5f2a22da59f1287ec1">MaxWrCurrentVDDMax</a> = (CSD_Tab[9] &amp;0x1C) &gt;&gt; 2;</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a021add43b09781e1c4feb5a911bab718">DeviceSizeMul</a> = (CSD_Tab[9] &amp;0x03) &lt;&lt; 1;</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <span class="comment">/* Byte 10 */</span></div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a021add43b09781e1c4feb5a911bab718">DeviceSizeMul</a> |= (CSD_Tab[10] &amp;0x80) &gt;&gt; 7;</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a3217bd2b49b77943bcb3e5a6f5f0e419">EraseGrSize</a> = (CSD_Tab[10] &amp;0x7C) &gt;&gt; 2;</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a6d4b83a1a42edb0e08f674fa6e611d28">EraseGrMul</a> = (CSD_Tab[10] &amp;0x03) &lt;&lt; 3;</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> <span class="comment">/* Byte 11 */</span></div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a6d4b83a1a42edb0e08f674fa6e611d28">EraseGrMul</a> |= (CSD_Tab[11] &amp;0xE0) &gt;&gt; 5;</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#aa21f77c612167167e40003b6d3784689">WrProtectGrSize</a> = (CSD_Tab[11] &amp;0x1F);</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> <span class="comment">/* Byte 12 */</span></div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a0d11fc6f8c1e51d1b63887603eee8915">WrProtectGrEnable</a> = (CSD_Tab[12] &amp;0x80) &gt;&gt; 7;</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a1ee9e5144b15487f92f6d9ce59835428">ManDeflECC</a> = (CSD_Tab[12] &amp;0x60) &gt;&gt; 5;</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a3ededd192a17234569a584cbd72b12ae">WrSpeedFact</a> = (CSD_Tab[12] &amp;0x1C) &gt;&gt; 2;</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a0dcba500cb60f6ce8d95864ae2eaa307">MaxWrBlockLen</a> = (CSD_Tab[12] &amp;0x03) &lt;&lt; 2;</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> <span class="comment">/* Byte 13 */</span></div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a0dcba500cb60f6ce8d95864ae2eaa307">MaxWrBlockLen</a> |= (CSD_Tab[13] &amp;0xc0) &gt;&gt; 6;</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a3c32bff0de0b6cba1f9bd3205159e6e4">WriteBlockPaPartial</a> = (CSD_Tab[13] &amp;0x20) &gt;&gt; 5;</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a83b44a54e8cefcfffdfb5a744d0bf3d5">Reserved3</a> = 0;</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#aaadb152d2dce1323e589580ef0099fec">ContentProtectAppli</a> = (CSD_Tab[13] &amp;0x01);</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="comment">/* Byte 14 */</span></div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a08f8247c46de7ef2b0677886470d7792">FileFormatGrouop</a> = (CSD_Tab[14] &amp;0x80) &gt;&gt; 7;</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a17f58dd1f98e6e6376efe142f352cb59">CopyFlag</a> = (CSD_Tab[14] &amp;0x40) &gt;&gt; 6;</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a150bf25ff42008d58320a6b7e531c9ab">PermWrProtect</a> = (CSD_Tab[14] &amp;0x20) &gt;&gt; 5;</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a3f2c48bb307e7779173e3563bbd5038f">TempWrProtect</a> = (CSD_Tab[14] &amp;0x10) &gt;&gt; 4;</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#ac3510e157155d4b9d9f67591b1cb0c8e">FileFormat</a> = (CSD_Tab[14] &amp;0x0C) &gt;&gt; 2;</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a1e153d660ffe4bbafa596d4b0b8c2906">ECC</a> = (CSD_Tab[14] &amp;0x03);</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <span class="comment">/* Byte 15 */</span></div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a81e9f99cdd87dd2e0305b3b191aa5226">CSD_CRC</a> = (CSD_Tab[15] &amp;0xFE) &gt;&gt; 1;</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#a36b124f6ffc0716dc0dc93c407b975d1">Reserved4</a> = 1;</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a8f29efd96df6abb8cd6353787eebca04">CardType</a> == <a class="code hl_define" href="bsp___s_d_8h.html#ae52e14c1b95e5162f4fe492d9b1b0fec">V2HC</a>) {</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> <span class="comment">/* Byte 7 */</span></div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#ab2341b019f101f621817ab7f13f85321">DeviceSize</a> = (<a class="code hl_typedef" href="varint_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a>) (CSD_Tab[8]) * 256;</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="comment">/* Byte 8 */</span></div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#ab2341b019f101f621817ab7f13f85321">DeviceSize</a> += CSD_Tab[9];}</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a4e5da8ba91229ac3ccb2d3f11f1ab4bf">Capacity</a> = <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">CSD</a>.<a class="code hl_variable" href="struct_m_s_d___c_s_d.html#ab2341b019f101f621817ab7f13f85321">DeviceSize</a> * <a class="code hl_define" href="bsp___s_d_8h.html#a5bda0c70032a9b8625ae5a3c55d21c38">MSD_BLOCKSIZE</a> * 1024;</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#aadaf986217b3c403be1cc4a2fd2fd148">BlockSize</a> = <a class="code hl_define" href="bsp___s_d_8h.html#a5bda0c70032a9b8625ae5a3c55d21c38">MSD_BLOCKSIZE</a>;</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> <span class="comment">/* Byte 0 */</span></div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#ab267c45d70fa28f9ff17829fa8753509">CID</a>.<a class="code hl_variable" href="struct_m_s_d___c_i_d.html#a5ae9ad5d65182a34e20b87fa2752010e">ManufacturerID</a> = CID_Tab[0];</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> <span class="comment">/* Byte 1 */</span></div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#ab267c45d70fa28f9ff17829fa8753509">CID</a>.<a class="code hl_variable" href="struct_m_s_d___c_i_d.html#acd04644e46f7ceca82bbe9bdc80f1d53">OEM_AppliID</a> = CID_Tab[1] &lt;&lt; 8;</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> <span class="comment">/* Byte 2 */</span></div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#ab267c45d70fa28f9ff17829fa8753509">CID</a>.<a class="code hl_variable" href="struct_m_s_d___c_i_d.html#acd04644e46f7ceca82bbe9bdc80f1d53">OEM_AppliID</a> |= CID_Tab[2];</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> <span class="comment">/* Byte 3 */</span></div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#ab267c45d70fa28f9ff17829fa8753509">CID</a>.<a class="code hl_variable" href="struct_m_s_d___c_i_d.html#ab7e359a09fecf1fa2d1b18e708dcc292">ProdName1</a> = CID_Tab[3] &lt;&lt; 24;</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> <span class="comment">/* Byte 4 */</span></div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#ab267c45d70fa28f9ff17829fa8753509">CID</a>.<a class="code hl_variable" href="struct_m_s_d___c_i_d.html#ab7e359a09fecf1fa2d1b18e708dcc292">ProdName1</a> |= CID_Tab[4] &lt;&lt; 16;</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> <span class="comment">/* Byte 5 */</span></div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#ab267c45d70fa28f9ff17829fa8753509">CID</a>.<a class="code hl_variable" href="struct_m_s_d___c_i_d.html#ab7e359a09fecf1fa2d1b18e708dcc292">ProdName1</a> |= CID_Tab[5] &lt;&lt; 8;</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> <span class="comment">/* Byte 6 */</span></div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#ab267c45d70fa28f9ff17829fa8753509">CID</a>.<a class="code hl_variable" href="struct_m_s_d___c_i_d.html#ab7e359a09fecf1fa2d1b18e708dcc292">ProdName1</a> |= CID_Tab[6];</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> <span class="comment">/* Byte 7 */</span></div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#ab267c45d70fa28f9ff17829fa8753509">CID</a>.<a class="code hl_variable" href="struct_m_s_d___c_i_d.html#ad0d7606f38a0140075647fb3f66614ea">ProdName2</a> = CID_Tab[7];</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> <span class="comment">/* Byte 8 */</span></div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#ab267c45d70fa28f9ff17829fa8753509">CID</a>.<a class="code hl_variable" href="struct_m_s_d___c_i_d.html#acd9fbacd30fdff0eef7d885ad4ec438b">ProdRev</a> = CID_Tab[8];</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> <span class="comment">/* Byte 9 */</span></div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#ab267c45d70fa28f9ff17829fa8753509">CID</a>.<a class="code hl_variable" href="struct_m_s_d___c_i_d.html#a0c5c88d258f73f17a496f3b92d9cfd5c">ProdSN</a> = CID_Tab[9] &lt;&lt; 24;</div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> <span class="comment">/* Byte 10 */</span></div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#ab267c45d70fa28f9ff17829fa8753509">CID</a>.<a class="code hl_variable" href="struct_m_s_d___c_i_d.html#a0c5c88d258f73f17a496f3b92d9cfd5c">ProdSN</a> |= CID_Tab[10] &lt;&lt; 16;</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> <span class="comment">/* Byte 11 */</span></div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#ab267c45d70fa28f9ff17829fa8753509">CID</a>.<a class="code hl_variable" href="struct_m_s_d___c_i_d.html#a0c5c88d258f73f17a496f3b92d9cfd5c">ProdSN</a> |= CID_Tab[11] &lt;&lt; 8;</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> <span class="comment">/* Byte 12 */</span></div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#ab267c45d70fa28f9ff17829fa8753509">CID</a>.<a class="code hl_variable" href="struct_m_s_d___c_i_d.html#a0c5c88d258f73f17a496f3b92d9cfd5c">ProdSN</a> |= CID_Tab[12];</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> <span class="comment">/* Byte 13 */</span></div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#ab267c45d70fa28f9ff17829fa8753509">CID</a>.<a class="code hl_variable" href="struct_m_s_d___c_i_d.html#a1be2e4d82c95f2d158ce5f5157a7fd5b">Reserved1</a> |= (CID_Tab[13] &amp;0xF0) &gt;&gt; 4;</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> <span class="comment">/* Byte 14 */</span></div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#ab267c45d70fa28f9ff17829fa8753509">CID</a>.<a class="code hl_variable" href="struct_m_s_d___c_i_d.html#a55015d75002e50ff4f23cd19c9b5c90a">ManufactDate</a> = (CID_Tab[13] &amp;0x0F) &lt;&lt; 8;</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> <span class="comment">/* Byte 15 */</span></div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#ab267c45d70fa28f9ff17829fa8753509">CID</a>.<a class="code hl_variable" href="struct_m_s_d___c_i_d.html#a55015d75002e50ff4f23cd19c9b5c90a">ManufactDate</a> |= CID_Tab[14];</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> <span class="comment">/* Byte 16 */</span></div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#ab267c45d70fa28f9ff17829fa8753509">CID</a>.<a class="code hl_variable" href="struct_m_s_d___c_i_d.html#a61fe89c386eb7bf7b8e2ba44545168de">CID_CRC</a> = (CID_Tab[15] &amp;0xFE) &gt;&gt; 1;</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> <a class="code hl_variable" href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</a>-&gt;<a class="code hl_variable" href="struct_m_s_d___c_a_r_d_i_n_f_o.html#ab267c45d70fa28f9ff17829fa8753509">CID</a>.<a class="code hl_variable" href="struct_m_s_d___c_i_d.html#aac8e73e305ea1ff29ae195a6c0a63e05">Reserved2</a> = 1;</div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> <span class="keywordflow">return</span> 0;}</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span><span class="comment">//----------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"><a class="line" href="classbsp___s_d.html#af203b65e00206d38ef14640f7b7242b6"> 329</a></span><span class="comment"></span><a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> <a class="code hl_function" href="classbsp___s_d.html#af203b65e00206d38ef14640f7b7242b6">bsp_SD::SD_WriteDisk</a>(<a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> * buf, <a class="code hl_typedef" href="varint_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> sector, <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> cnt){</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> r1;</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classbsp___s_d.html#a2350601b90ad75bd434094a9c31475c4">SD_TYPE</a> != <a class="code hl_define" href="bsp___s_d_8h.html#ae52e14c1b95e5162f4fe492d9b1b0fec">V2HC</a>) sector *= 512; <span class="comment">//转换为字节地址</span></div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> <span class="keywordflow">if</span> (cnt == 1){</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#a252300302c6f7960df547a7f5c25be85">CMD24</a>, sector, 0X01); <span class="comment">//读命令</span></div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> <span class="keywordflow">if</span> (r1 == 0) <span class="comment">//指令发送成功</span></div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#a2df843979bb4c764422a37b255c184ea">SD_SendBlock</a>(buf, 0xFE);} <span class="comment">//写512个字节</span></div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classbsp___s_d.html#a2350601b90ad75bd434094a9c31475c4">SD_TYPE</a> != <a class="code hl_define" href="bsp___s_d_8h.html#ab5a7d5477e55758bde614bda3250a93c">MMC</a>) {</div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#a78289a7a85ffcfddd626694105dc0780">CMD55</a>, 0, 0X01);</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#a14506e981f38b6177bc36f72c2ca18b1">CMD23</a>, cnt, 0X01);} <span class="comment">//发送指令</span></div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#aee2c673fba987178f4642531fdeefe9e">CMD25</a>, sector, 0X01); <span class="comment">//连续读命令</span></div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> <span class="keywordflow">if</span> (r1 == 0) {</div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> <span class="keywordflow">do</span> {</div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#a2df843979bb4c764422a37b255c184ea">SD_SendBlock</a>(buf, 0xFC); <span class="comment">//接收512个字节</span></div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> buf += 512;}<span class="keywordflow">while</span>(--cnt &amp;&amp; r1 == 0);</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#a2df843979bb4c764422a37b255c184ea">SD_SendBlock</a>(0, 0xFD);}} <span class="comment">//接收512个字节</span></div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> <a class="code hl_function" href="classbsp___s_d.html#a3250f411819ed57543b0326d13faddc6">SD_CS</a>(0); <span class="comment">//取消片选</span></div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> <span class="keywordflow">return</span> r1;}</div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span><span class="comment">//----------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"><a class="line" href="classbsp___s_d.html#a96f32b50ec777acc0dd819150cd28937"> 356</a></span><span class="comment"></span><a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> <a class="code hl_function" href="classbsp___s_d.html#a96f32b50ec777acc0dd819150cd28937">bsp_SD::SD_ReadDisk</a>(<a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> * buf, <a class="code hl_typedef" href="varint_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> sector, <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> cnt){</div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> r1;</div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classbsp___s_d.html#a2350601b90ad75bd434094a9c31475c4">SD_TYPE</a> != <a class="code hl_define" href="bsp___s_d_8h.html#ae52e14c1b95e5162f4fe492d9b1b0fec">V2HC</a>) sector &lt;&lt;= 9; <span class="comment">//转换为字节地址</span></div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> <span class="keywordflow">if</span> (cnt == 1) {</div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#a6bbfe7dc16a19b7f40efcf554b5666ad">CMD17</a>, sector, 0X01); <span class="comment">//读命令</span></div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> <span class="keywordflow">if</span> (r1 == 0) <span class="comment">//指令发送成功</span></div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#a242ec4ccd88203b6691cf4ae1e77fdfe">SD_ReceiveData</a>(buf, 512);} <span class="comment">//接收512个字节</span></div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#a3d32c27a6be061b865ba539127278f14">CMD18</a>, sector, 0X01); <span class="comment">//连续读命令</span></div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> <span class="keywordflow">do</span> {</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> r1 = <a class="code hl_function" href="classbsp___s_d.html#a242ec4ccd88203b6691cf4ae1e77fdfe">SD_ReceiveData</a>(buf, 512); <span class="comment">//接收512个字节 </span></div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> buf += 512;}</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> <span class="keywordflow">while</span>(--cnt &amp;&amp; r1 == 0);</div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> <a class="code hl_function" href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</a>(<a class="code hl_define" href="bsp___s_d_8h.html#a8d6283c9b060afbaa0e6d1ff7e5ea7b8">CMD12</a>, 0, 0X01);} <span class="comment">//发送停止命令</span></div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> <a class="code hl_function" href="classbsp___s_d.html#a3250f411819ed57543b0326d13faddc6">SD_CS</a>(0); <span class="comment">//取消片选</span></div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> <span class="keywordflow">return</span> r1;}</div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span><span class="comment">//----------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"><a class="line" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5"> 373</a></span><a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> <a class="code hl_function" href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">bsp_SD::spi_readwrite</a>(<a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> Txdata){</div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> Rxdata;</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> HAL_SPI_TransmitReceive(<a class="code hl_variable" href="classbsp___s_d.html#a227c7eb7a28e89d6adfda085a4217992">hspi</a>, &amp;Txdata, &amp;Rxdata, 1, 0xFF);</div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> <span class="keywordflow">return</span> Rxdata;}</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span><span class="comment">//----------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"><a class="line" href="classbsp___s_d.html#a5ed95b95b141ee21d83ca70c1b06a31a"> 383</a></span><span class="comment"></span><span class="keywordtype">void</span> <a class="code hl_function" href="classbsp___s_d.html#a5ed95b95b141ee21d83ca70c1b06a31a">bsp_SD::SPI_setspeed</a>(<a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> speed){</div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> <a class="code hl_variable" href="classbsp___s_d.html#a227c7eb7a28e89d6adfda085a4217992">hspi</a>-&gt;Init.BaudRatePrescaler = speed;}</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span><span class="comment">//----------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"><a class="line" href="classbsp___s_d.html#a164f0bb03133464f2da485f362a52718"> 393</a></span><span class="comment"></span><a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> <a class="code hl_function" href="classbsp___s_d.html#a164f0bb03133464f2da485f362a52718">bsp_SD::offsetWrite</a>(<a class="code hl_typedef" href="varint_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> offset,<a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a>* dat,<a class="code hl_typedef" href="varint_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> datlen) {</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> sectorBuff[512] = { 0 };</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> <a class="code hl_typedef" href="varint_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> sectorBuffptr = 0;</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> </div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> <a class="code hl_typedef" href="varint_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> sectorSour = offset / 512; <span class="comment">// 起始扇</span></div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> <a class="code hl_typedef" href="varint_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> sectorSourlen = offset % 512; <span class="comment">// 起始扇内位</span></div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> </div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> <span class="comment">// 填入数据</span></div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> <a class="code hl_function" href="classbsp___s_d.html#a96f32b50ec777acc0dd819150cd28937">SD_ReadDisk</a>(sectorBuff,sectorSour,1);</div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span> sectorBuffptr = sectorSourlen;</div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> <span class="keywordflow">for</span> (<a class="code hl_typedef" href="varint_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> i = 0; i &lt; datlen; i++) {</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> <span class="comment">// 写入数据</span></div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> sectorBuff[sectorBuffptr] = dat[i];</div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> sectorBuffptr++;</div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> <span class="comment">// 扇区回写</span></div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> <span class="keywordflow">if</span> (sectorBuffptr == 512 || i == datlen - 1) {</div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> <a class="code hl_function" href="classbsp___s_d.html#af203b65e00206d38ef14640f7b7242b6">SD_WriteDisk</a>(sectorBuff,sectorSour,1);</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> sectorBuffptr = 0;</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> sectorSour++;</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> <span class="keywordflow">if</span> (i != datlen - 1)<a class="code hl_function" href="classbsp___s_d.html#a96f32b50ec777acc0dd819150cd28937">SD_ReadDisk</a>(sectorBuff,sectorSour,1);}}</div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> }</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span><span class="comment">//----------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"><a class="line" href="classbsp___s_d.html#a1c78e6f5a72f3bdec600a52331dd4d20"> 423</a></span><span class="comment"></span><a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> <a class="code hl_function" href="classbsp___s_d.html#a1c78e6f5a72f3bdec600a52331dd4d20">bsp_SD::offsetRead</a>(<a class="code hl_typedef" href="varint_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> offset,<a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a>* dat,<a class="code hl_typedef" href="varint_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> datlen) {</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> <a class="code hl_typedef" href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> sectorBuff[512] = { 0 };</div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> <a class="code hl_typedef" href="varint_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> sectorBuffptr = 0;</div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> </div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> <a class="code hl_typedef" href="varint_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> sectorSour = offset / 512; <span class="comment">// 起始扇</span></div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> <a class="code hl_typedef" href="varint_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> sectorSourlen = offset % 512; <span class="comment">// 起始扇内位</span></div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> </div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> <span class="comment">// 填入数据</span></div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> <a class="code hl_function" href="classbsp___s_d.html#a96f32b50ec777acc0dd819150cd28937">SD_ReadDisk</a>(sectorBuff,sectorSour,1);</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> sectorBuffptr = sectorSourlen;</div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> <span class="keywordflow">for</span> (<a class="code hl_typedef" href="varint_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> i = 0; i &lt; datlen; i++) {</div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> <span class="comment">// 写入数据</span></div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> dat[i]=sectorBuff[sectorBuffptr];</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> sectorBuffptr++;</div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> <span class="comment">// 扇区回写</span></div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> <span class="keywordflow">if</span> (sectorBuffptr == 512 || i == datlen - 1) {</div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> sectorBuffptr = 0;</div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> sectorSour++;</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> <span class="keywordflow">if</span> (i != datlen - 1)<a class="code hl_function" href="classbsp___s_d.html#a96f32b50ec777acc0dd819150cd28937">SD_ReadDisk</a>(sectorBuff,sectorSour,1);}}</div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> <span class="keywordflow">return</span> 0;}</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span><span class="comment">//----------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span><span class="comment">// 构造函数</span></div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span><span class="comment">// </span></div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"><a class="line" href="classbsp___s_d.html#a9f5ace0a335acc31271c9d131cd6d306"> 447</a></span><a class="code hl_function" href="classbsp___s_d.html#a9f5ace0a335acc31271c9d131cd6d306">bsp_SD::bsp_SD</a>(</div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> SPI_HandleTypeDef *hspi,</div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> GPIO_TypeDef *GPIOx_CS,</div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> uint16_t GPIO_Pin_CS){</div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> <a class="code hl_variable" href="classbsp___s_d.html#a227c7eb7a28e89d6adfda085a4217992">bsp_SD::hspi</a>=<a class="code hl_variable" href="classbsp___s_d.html#a227c7eb7a28e89d6adfda085a4217992">hspi</a>;</div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> <a class="code hl_variable" href="classbsp___s_d.html#ad7788d2e62152a2fb1a6b307fa902180">bsp_SD::GPIOx_CS</a>=<a class="code hl_variable" href="classbsp___s_d.html#ad7788d2e62152a2fb1a6b307fa902180">GPIOx_CS</a>;</div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> <a class="code hl_variable" href="classbsp___s_d.html#a4525b5c0f62e39af1c9adb9a9c22239f">bsp_SD::GPIO_Pin_CS</a>=<a class="code hl_variable" href="classbsp___s_d.html#a4525b5c0f62e39af1c9adb9a9c22239f">GPIO_Pin_CS</a>;</div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> <a class="code hl_variable" href="classbsp___s_d.html#a6c68fa82294f18968a92719931cff5fa">bsp_SD::DFF</a>=0xFF;</div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> <a class="code hl_variable" href="classbsp___s_d.html#a2350601b90ad75bd434094a9c31475c4">bsp_SD::SD_TYPE</a>=0x00;}</div>
<div class="ttc" id="absp___s_d_8h_html"><div class="ttname"><a href="bsp___s_d_8h.html">bsp_SD.h</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_a14506e981f38b6177bc36f72c2ca18b1"><div class="ttname"><a href="bsp___s_d_8h.html#a14506e981f38b6177bc36f72c2ca18b1">CMD23</a></div><div class="ttdeci">#define CMD23</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00066">bsp_SD.h:66</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_a1fac6a251d7e7dc204d21639bf521459"><div class="ttname"><a href="bsp___s_d_8h.html#a1fac6a251d7e7dc204d21639bf521459">CMD9</a></div><div class="ttdeci">#define CMD9</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00060">bsp_SD.h:60</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_a252300302c6f7960df547a7f5c25be85"><div class="ttname"><a href="bsp___s_d_8h.html#a252300302c6f7960df547a7f5c25be85">CMD24</a></div><div class="ttdeci">#define CMD24</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00067">bsp_SD.h:67</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_a2c85a6a257358283b46ba829ae0c2dba"><div class="ttname"><a href="bsp___s_d_8h.html#a2c85a6a257358283b46ba829ae0c2dba">SD0_CardInfo</a></div><div class="ttdeci">MSD_CARDINFO SD0_CardInfo</div></div>
<div class="ttc" id="absp___s_d_8h_html_a3ca1450d0ac55d2705aab03537bf2865"><div class="ttname"><a href="bsp___s_d_8h.html#a3ca1450d0ac55d2705aab03537bf2865">CMD41</a></div><div class="ttdeci">#define CMD41</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00069">bsp_SD.h:69</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_a3d32c27a6be061b865ba539127278f14"><div class="ttname"><a href="bsp___s_d_8h.html#a3d32c27a6be061b865ba539127278f14">CMD18</a></div><div class="ttdeci">#define CMD18</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00065">bsp_SD.h:65</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_a5bda0c70032a9b8625ae5a3c55d21c38"><div class="ttname"><a href="bsp___s_d_8h.html#a5bda0c70032a9b8625ae5a3c55d21c38">MSD_BLOCKSIZE</a></div><div class="ttdeci">#define MSD_BLOCKSIZE</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00054">bsp_SD.h:54</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_a6bbfe7dc16a19b7f40efcf554b5666ad"><div class="ttname"><a href="bsp___s_d_8h.html#a6bbfe7dc16a19b7f40efcf554b5666ad">CMD17</a></div><div class="ttdeci">#define CMD17</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00064">bsp_SD.h:64</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_a735563036dced0b7d6cc98f97ea4978b"><div class="ttname"><a href="bsp___s_d_8h.html#a735563036dced0b7d6cc98f97ea4978b">ERR</a></div><div class="ttdeci">#define ERR</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00048">bsp_SD.h:48</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_a78289a7a85ffcfddd626694105dc0780"><div class="ttname"><a href="bsp___s_d_8h.html#a78289a7a85ffcfddd626694105dc0780">CMD55</a></div><div class="ttdeci">#define CMD55</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00070">bsp_SD.h:70</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_a8d6283c9b060afbaa0e6d1ff7e5ea7b8"><div class="ttname"><a href="bsp___s_d_8h.html#a8d6283c9b060afbaa0e6d1ff7e5ea7b8">CMD12</a></div><div class="ttdeci">#define CMD12</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00062">bsp_SD.h:62</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_a9173468f90b474471bfff59f8487cbc1"><div class="ttname"><a href="bsp___s_d_8h.html#a9173468f90b474471bfff59f8487cbc1">V2</a></div><div class="ttdeci">#define V2</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00051">bsp_SD.h:51</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_a938c1466755f12fb04ac0d1b775584d1"><div class="ttname"><a href="bsp___s_d_8h.html#a938c1466755f12fb04ac0d1b775584d1">CMD0</a></div><div class="ttdeci">#define CMD0</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00057">bsp_SD.h:57</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_aa7a26b2cf17e1ff5967820a1fa41a7aa"><div class="ttname"><a href="bsp___s_d_8h.html#aa7a26b2cf17e1ff5967820a1fa41a7aa">CMD58</a></div><div class="ttdeci">#define CMD58</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00071">bsp_SD.h:71</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_aaeab261b94f2031ba41a1d4d857c3541"><div class="ttname"><a href="bsp___s_d_8h.html#aaeab261b94f2031ba41a1d4d857c3541">CMD16</a></div><div class="ttdeci">#define CMD16</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00063">bsp_SD.h:63</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_ab5a7d5477e55758bde614bda3250a93c"><div class="ttname"><a href="bsp___s_d_8h.html#ab5a7d5477e55758bde614bda3250a93c">MMC</a></div><div class="ttdeci">#define MMC</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00049">bsp_SD.h:49</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_ac75b3e0ad1fb013ea946fb49bbe65668"><div class="ttname"><a href="bsp___s_d_8h.html#ac75b3e0ad1fb013ea946fb49bbe65668">CMD8</a></div><div class="ttdeci">#define CMD8</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00059">bsp_SD.h:59</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_aca9979f299fa78c1128d778084478673"><div class="ttname"><a href="bsp___s_d_8h.html#aca9979f299fa78c1128d778084478673">CMD1</a></div><div class="ttdeci">#define CMD1</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00058">bsp_SD.h:58</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_ae21a9518b4dd62d2baeab430c89a657a"><div class="ttname"><a href="bsp___s_d_8h.html#ae21a9518b4dd62d2baeab430c89a657a">V1</a></div><div class="ttdeci">#define V1</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00050">bsp_SD.h:50</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_ae52e14c1b95e5162f4fe492d9b1b0fec"><div class="ttname"><a href="bsp___s_d_8h.html#ae52e14c1b95e5162f4fe492d9b1b0fec">V2HC</a></div><div class="ttdeci">#define V2HC</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00052">bsp_SD.h:52</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_ae7b800ed8e7bd52e6f570a5ce72b8104"><div class="ttname"><a href="bsp___s_d_8h.html#ae7b800ed8e7bd52e6f570a5ce72b8104">CMD10</a></div><div class="ttdeci">#define CMD10</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00061">bsp_SD.h:61</a></div></div>
<div class="ttc" id="absp___s_d_8h_html_aee2c673fba987178f4642531fdeefe9e"><div class="ttname"><a href="bsp___s_d_8h.html#aee2c673fba987178f4642531fdeefe9e">CMD25</a></div><div class="ttdeci">#define CMD25</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00068">bsp_SD.h:68</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_a164f0bb03133464f2da485f362a52718"><div class="ttname"><a href="classbsp___s_d.html#a164f0bb03133464f2da485f362a52718">bsp_SD::offsetWrite</a></div><div class="ttdeci">u8 offsetWrite(u64 offset, u8 *dat, u64 datlen)</div><div class="ttdoc">写入连贯的数据</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8cpp_source.html#l00393">bsp_SD.cpp:393</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_a1c78e6f5a72f3bdec600a52331dd4d20"><div class="ttname"><a href="classbsp___s_d.html#a1c78e6f5a72f3bdec600a52331dd4d20">bsp_SD::offsetRead</a></div><div class="ttdeci">u8 offsetRead(u64 offset, u8 *dat, u64 datlen)</div><div class="ttdoc">读取连贯的数据</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8cpp_source.html#l00423">bsp_SD.cpp:423</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_a1e0a3f09367627bcafc8efaaeb90b066"><div class="ttname"><a href="classbsp___s_d.html#a1e0a3f09367627bcafc8efaaeb90b066">bsp_SD::SD_init</a></div><div class="ttdeci">u8 SD_init(void)</div><div class="ttdoc">初始化SD卡</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8cpp_source.html#l00074">bsp_SD.cpp:74</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_a227c7eb7a28e89d6adfda085a4217992"><div class="ttname"><a href="classbsp___s_d.html#a227c7eb7a28e89d6adfda085a4217992">bsp_SD::hspi</a></div><div class="ttdeci">SPI_HandleTypeDef * hspi</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00180">bsp_SD.h:180</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_a2350601b90ad75bd434094a9c31475c4"><div class="ttname"><a href="classbsp___s_d.html#a2350601b90ad75bd434094a9c31475c4">bsp_SD::SD_TYPE</a></div><div class="ttdeci">u8 SD_TYPE</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00185">bsp_SD.h:185</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_a242ec4ccd88203b6691cf4ae1e77fdfe"><div class="ttname"><a href="classbsp___s_d.html#a242ec4ccd88203b6691cf4ae1e77fdfe">bsp_SD::SD_ReceiveData</a></div><div class="ttdeci">u8 SD_ReceiveData(u8 *data, u16 len)</div><div class="ttdoc">读取SD卡指定长度信息</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8cpp_source.html#l00127">bsp_SD.cpp:127</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_a25bc03ff69d0c3c9a73153c71c84a8b0"><div class="ttname"><a href="classbsp___s_d.html#a25bc03ff69d0c3c9a73153c71c84a8b0">bsp_SD::SD_GETCID</a></div><div class="ttdeci">u8 SD_GETCID(u8 *cid_data)</div><div class="ttdoc">获取CID信息</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8cpp_source.html#l00164">bsp_SD.cpp:164</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_a2df843979bb4c764422a37b255c184ea"><div class="ttname"><a href="classbsp___s_d.html#a2df843979bb4c764422a37b255c184ea">bsp_SD::SD_SendBlock</a></div><div class="ttdeci">u8 SD_SendBlock(u8 *buf, u8 cmd)</div><div class="ttdoc">向SD卡写入一个扇区</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8cpp_source.html#l00147">bsp_SD.cpp:147</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_a3250f411819ed57543b0326d13faddc6"><div class="ttname"><a href="classbsp___s_d.html#a3250f411819ed57543b0326d13faddc6">bsp_SD::SD_CS</a></div><div class="ttdeci">void SD_CS(u8 p)</div><div class="ttdoc">片选信号</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8cpp_source.html#l00043">bsp_SD.cpp:43</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_a36d1110bcbe2404ddd5796dc078ce1f5"><div class="ttname"><a href="classbsp___s_d.html#a36d1110bcbe2404ddd5796dc078ce1f5">bsp_SD::spi_readwrite</a></div><div class="ttdeci">u8 spi_readwrite(u8 Txdata)</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8cpp_source.html#l00373">bsp_SD.cpp:373</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_a4525b5c0f62e39af1c9adb9a9c22239f"><div class="ttname"><a href="classbsp___s_d.html#a4525b5c0f62e39af1c9adb9a9c22239f">bsp_SD::GPIO_Pin_CS</a></div><div class="ttdeci">uint16_t GPIO_Pin_CS</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00182">bsp_SD.h:182</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_a5ed95b95b141ee21d83ca70c1b06a31a"><div class="ttname"><a href="classbsp___s_d.html#a5ed95b95b141ee21d83ca70c1b06a31a">bsp_SD::SPI_setspeed</a></div><div class="ttdeci">void SPI_setspeed(u8 speed)</div><div class="ttdoc">设置SPI的速率</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8cpp_source.html#l00383">bsp_SD.cpp:383</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_a600cc886dc5da6d34f75d0bf226c1b92"><div class="ttname"><a href="classbsp___s_d.html#a600cc886dc5da6d34f75d0bf226c1b92">bsp_SD::SD_GetSectorCount</a></div><div class="ttdeci">u32 SD_GetSectorCount(void)</div><div class="ttdoc">获取SD卡的总扇区数</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8cpp_source.html#l00188">bsp_SD.cpp:188</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_a6c68fa82294f18968a92719931cff5fa"><div class="ttname"><a href="classbsp___s_d.html#a6c68fa82294f18968a92719931cff5fa">bsp_SD::DFF</a></div><div class="ttdeci">u8 DFF</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00184">bsp_SD.h:184</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_a96f32b50ec777acc0dd819150cd28937"><div class="ttname"><a href="classbsp___s_d.html#a96f32b50ec777acc0dd819150cd28937">bsp_SD::SD_ReadDisk</a></div><div class="ttdeci">u8 SD_ReadDisk(u8 *buf, u32 sector, u8 cnt)</div><div class="ttdoc">读SD卡</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8cpp_source.html#l00356">bsp_SD.cpp:356</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_a9f5ace0a335acc31271c9d131cd6d306"><div class="ttname"><a href="classbsp___s_d.html#a9f5ace0a335acc31271c9d131cd6d306">bsp_SD::bsp_SD</a></div><div class="ttdeci">bsp_SD(SPI_HandleTypeDef *hspi, GPIO_TypeDef *GPIOx_CS, uint16_t GPIO_Pin_CS)</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8cpp_source.html#l00447">bsp_SD.cpp:447</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_aab1487286ac43dc9110e65b52c850de4"><div class="ttname"><a href="classbsp___s_d.html#aab1487286ac43dc9110e65b52c850de4">bsp_SD::SD0_CardInfo</a></div><div class="ttdeci">MSD_CARDINFO SD0_CardInfo</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00186">bsp_SD.h:186</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_aaf2d27cc9275f3ffa71556124f143d12"><div class="ttname"><a href="classbsp___s_d.html#aaf2d27cc9275f3ffa71556124f143d12">bsp_SD::MSD0_GetCardInfo</a></div><div class="ttdeci">int MSD0_GetCardInfo(PMSD_CARDINFO SD0_CardInfo)</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8cpp_source.html#l00207">bsp_SD.cpp:207</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_ab799d7d8ebaf4c304bf62722ba10ba37"><div class="ttname"><a href="classbsp___s_d.html#ab799d7d8ebaf4c304bf62722ba10ba37">bsp_SD::SD_sendcmd</a></div><div class="ttdeci">u32 SD_sendcmd(u8 cmd, u32 arg, u8 crc)</div><div class="ttdoc">写SD卡</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8cpp_source.html#l00053">bsp_SD.cpp:53</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_ad0426f6a4b550e60a926c95724d81665"><div class="ttname"><a href="classbsp___s_d.html#ad0426f6a4b550e60a926c95724d81665">bsp_SD::SD_GETCSD</a></div><div class="ttdeci">u8 SD_GETCSD(u8 *csd_data)</div><div class="ttdoc">获取CSD信息</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8cpp_source.html#l00176">bsp_SD.cpp:176</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_ad7788d2e62152a2fb1a6b307fa902180"><div class="ttname"><a href="classbsp___s_d.html#ad7788d2e62152a2fb1a6b307fa902180">bsp_SD::GPIOx_CS</a></div><div class="ttdeci">GPIO_TypeDef * GPIOx_CS</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00181">bsp_SD.h:181</a></div></div>
<div class="ttc" id="aclassbsp___s_d_html_af203b65e00206d38ef14640f7b7242b6"><div class="ttname"><a href="classbsp___s_d.html#af203b65e00206d38ef14640f7b7242b6">bsp_SD::SD_WriteDisk</a></div><div class="ttdeci">u8 SD_WriteDisk(u8 *buf, u32 sector, u8 cnt)</div><div class="ttdoc">写SD卡</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8cpp_source.html#l00329">bsp_SD.cpp:329</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_a_r_d_i_n_f_o_html"><div class="ttname"><a href="struct_m_s_d___c_a_r_d_i_n_f_o.html">MSD_CARDINFO</a></div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00149">bsp_SD.h:149</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_a_r_d_i_n_f_o_html_a4e5da8ba91229ac3ccb2d3f11f1ab4bf"><div class="ttname"><a href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a4e5da8ba91229ac3ccb2d3f11f1ab4bf">MSD_CARDINFO::Capacity</a></div><div class="ttdeci">u32 Capacity</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00152">bsp_SD.h:152</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_a_r_d_i_n_f_o_html_a8f29efd96df6abb8cd6353787eebca04"><div class="ttname"><a href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a8f29efd96df6abb8cd6353787eebca04">MSD_CARDINFO::CardType</a></div><div class="ttdeci">u8 CardType</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00155">bsp_SD.h:155</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_a_r_d_i_n_f_o_html_a9893f18007a0897aa45869e703f4cc2a"><div class="ttname"><a href="struct_m_s_d___c_a_r_d_i_n_f_o.html#a9893f18007a0897aa45869e703f4cc2a">MSD_CARDINFO::CSD</a></div><div class="ttdeci">MSD_CSD CSD</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00150">bsp_SD.h:150</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_a_r_d_i_n_f_o_html_aadaf986217b3c403be1cc4a2fd2fd148"><div class="ttname"><a href="struct_m_s_d___c_a_r_d_i_n_f_o.html#aadaf986217b3c403be1cc4a2fd2fd148">MSD_CARDINFO::BlockSize</a></div><div class="ttdeci">u32 BlockSize</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00153">bsp_SD.h:153</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_a_r_d_i_n_f_o_html_ab267c45d70fa28f9ff17829fa8753509"><div class="ttname"><a href="struct_m_s_d___c_a_r_d_i_n_f_o.html#ab267c45d70fa28f9ff17829fa8753509">MSD_CARDINFO::CID</a></div><div class="ttdeci">MSD_CID CID</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00151">bsp_SD.h:151</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_i_d_html_a0c5c88d258f73f17a496f3b92d9cfd5c"><div class="ttname"><a href="struct_m_s_d___c_i_d.html#a0c5c88d258f73f17a496f3b92d9cfd5c">MSD_CID::ProdSN</a></div><div class="ttdeci">u32 ProdSN</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00142">bsp_SD.h:142</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_i_d_html_a1be2e4d82c95f2d158ce5f5157a7fd5b"><div class="ttname"><a href="struct_m_s_d___c_i_d.html#a1be2e4d82c95f2d158ce5f5157a7fd5b">MSD_CID::Reserved1</a></div><div class="ttdeci">u8 Reserved1</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00143">bsp_SD.h:143</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_i_d_html_a55015d75002e50ff4f23cd19c9b5c90a"><div class="ttname"><a href="struct_m_s_d___c_i_d.html#a55015d75002e50ff4f23cd19c9b5c90a">MSD_CID::ManufactDate</a></div><div class="ttdeci">u16 ManufactDate</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00144">bsp_SD.h:144</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_i_d_html_a5ae9ad5d65182a34e20b87fa2752010e"><div class="ttname"><a href="struct_m_s_d___c_i_d.html#a5ae9ad5d65182a34e20b87fa2752010e">MSD_CID::ManufacturerID</a></div><div class="ttdeci">u8 ManufacturerID</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00137">bsp_SD.h:137</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_i_d_html_a61fe89c386eb7bf7b8e2ba44545168de"><div class="ttname"><a href="struct_m_s_d___c_i_d.html#a61fe89c386eb7bf7b8e2ba44545168de">MSD_CID::CID_CRC</a></div><div class="ttdeci">u8 CID_CRC</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00145">bsp_SD.h:145</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_i_d_html_aac8e73e305ea1ff29ae195a6c0a63e05"><div class="ttname"><a href="struct_m_s_d___c_i_d.html#aac8e73e305ea1ff29ae195a6c0a63e05">MSD_CID::Reserved2</a></div><div class="ttdeci">u8 Reserved2</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00146">bsp_SD.h:146</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_i_d_html_ab7e359a09fecf1fa2d1b18e708dcc292"><div class="ttname"><a href="struct_m_s_d___c_i_d.html#ab7e359a09fecf1fa2d1b18e708dcc292">MSD_CID::ProdName1</a></div><div class="ttdeci">u32 ProdName1</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00139">bsp_SD.h:139</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_i_d_html_acd04644e46f7ceca82bbe9bdc80f1d53"><div class="ttname"><a href="struct_m_s_d___c_i_d.html#acd04644e46f7ceca82bbe9bdc80f1d53">MSD_CID::OEM_AppliID</a></div><div class="ttdeci">u16 OEM_AppliID</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00138">bsp_SD.h:138</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_i_d_html_acd9fbacd30fdff0eef7d885ad4ec438b"><div class="ttname"><a href="struct_m_s_d___c_i_d.html#acd9fbacd30fdff0eef7d885ad4ec438b">MSD_CID::ProdRev</a></div><div class="ttdeci">u8 ProdRev</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00141">bsp_SD.h:141</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_i_d_html_ad0d7606f38a0140075647fb3f66614ea"><div class="ttname"><a href="struct_m_s_d___c_i_d.html#ad0d7606f38a0140075647fb3f66614ea">MSD_CID::ProdName2</a></div><div class="ttdeci">u8 ProdName2</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00140">bsp_SD.h:140</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a021add43b09781e1c4feb5a911bab718"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a021add43b09781e1c4feb5a911bab718">MSD_CSD::DeviceSizeMul</a></div><div class="ttdeci">u8 DeviceSizeMul</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00114">bsp_SD.h:114</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a08f8247c46de7ef2b0677886470d7792"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a08f8247c46de7ef2b0677886470d7792">MSD_CSD::FileFormatGrouop</a></div><div class="ttdeci">u8 FileFormatGrouop</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00125">bsp_SD.h:125</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a0d11fc6f8c1e51d1b63887603eee8915"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a0d11fc6f8c1e51d1b63887603eee8915">MSD_CSD::WrProtectGrEnable</a></div><div class="ttdeci">u8 WrProtectGrEnable</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00118">bsp_SD.h:118</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a0d503ea30e3553e3dbf1d259c1835bca"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a0d503ea30e3553e3dbf1d259c1835bca">MSD_CSD::RdBlockLen</a></div><div class="ttdeci">u8 RdBlockLen</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00103">bsp_SD.h:103</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a0dcba500cb60f6ce8d95864ae2eaa307"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a0dcba500cb60f6ce8d95864ae2eaa307">MSD_CSD::MaxWrBlockLen</a></div><div class="ttdeci">u8 MaxWrBlockLen</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00121">bsp_SD.h:121</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a150bf25ff42008d58320a6b7e531c9ab"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a150bf25ff42008d58320a6b7e531c9ab">MSD_CSD::PermWrProtect</a></div><div class="ttdeci">u8 PermWrProtect</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00127">bsp_SD.h:127</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a17f58dd1f98e6e6376efe142f352cb59"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a17f58dd1f98e6e6376efe142f352cb59">MSD_CSD::CopyFlag</a></div><div class="ttdeci">u8 CopyFlag</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00126">bsp_SD.h:126</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a1e153d660ffe4bbafa596d4b0b8c2906"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a1e153d660ffe4bbafa596d4b0b8c2906">MSD_CSD::ECC</a></div><div class="ttdeci">u8 ECC</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00130">bsp_SD.h:130</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a1ee9e5144b15487f92f6d9ce59835428"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a1ee9e5144b15487f92f6d9ce59835428">MSD_CSD::ManDeflECC</a></div><div class="ttdeci">u8 ManDeflECC</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00119">bsp_SD.h:119</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a235ebfcf7116a28eb8f7e2348b46c279"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a235ebfcf7116a28eb8f7e2348b46c279">MSD_CSD::CardComdClasses</a></div><div class="ttdeci">u16 CardComdClasses</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00102">bsp_SD.h:102</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a3217bd2b49b77943bcb3e5a6f5f0e419"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a3217bd2b49b77943bcb3e5a6f5f0e419">MSD_CSD::EraseGrSize</a></div><div class="ttdeci">u8 EraseGrSize</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00115">bsp_SD.h:115</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a36b124f6ffc0716dc0dc93c407b975d1"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a36b124f6ffc0716dc0dc93c407b975d1">MSD_CSD::Reserved4</a></div><div class="ttdeci">u8 Reserved4</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00132">bsp_SD.h:132</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a3c32bff0de0b6cba1f9bd3205159e6e4"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a3c32bff0de0b6cba1f9bd3205159e6e4">MSD_CSD::WriteBlockPaPartial</a></div><div class="ttdeci">u8 WriteBlockPaPartial</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00122">bsp_SD.h:122</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a3ededd192a17234569a584cbd72b12ae"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a3ededd192a17234569a584cbd72b12ae">MSD_CSD::WrSpeedFact</a></div><div class="ttdeci">u8 WrSpeedFact</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00120">bsp_SD.h:120</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a3f2c48bb307e7779173e3563bbd5038f"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a3f2c48bb307e7779173e3563bbd5038f">MSD_CSD::TempWrProtect</a></div><div class="ttdeci">u8 TempWrProtect</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00128">bsp_SD.h:128</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a4312d08d19360f8cda0fdcefea8c58a8"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a4312d08d19360f8cda0fdcefea8c58a8">MSD_CSD::MaxWrCurrentVDDMin</a></div><div class="ttdeci">u8 MaxWrCurrentVDDMin</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00112">bsp_SD.h:112</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a43d9f48b7a10b9b16700cc4df7f944c0"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a43d9f48b7a10b9b16700cc4df7f944c0">MSD_CSD::Reserved1</a></div><div class="ttdeci">u8 Reserved1</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00098">bsp_SD.h:98</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a53c6d82426462a5f31a0e07bc2014d97"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a53c6d82426462a5f31a0e07bc2014d97">MSD_CSD::CSDStruct</a></div><div class="ttdeci">u8 CSDStruct</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00096">bsp_SD.h:96</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a5a4157c022770f5f2a22da59f1287ec1"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a5a4157c022770f5f2a22da59f1287ec1">MSD_CSD::MaxWrCurrentVDDMax</a></div><div class="ttdeci">u8 MaxWrCurrentVDDMax</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00113">bsp_SD.h:113</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a5f028ae76ae390e7efc7581863f86fa4"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a5f028ae76ae390e7efc7581863f86fa4">MSD_CSD::MaxRdCurrentVDDMin</a></div><div class="ttdeci">u8 MaxRdCurrentVDDMin</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00110">bsp_SD.h:110</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a6010a523c29470b3fca2a179608bb165"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a6010a523c29470b3fca2a179608bb165">MSD_CSD::DSRImpl</a></div><div class="ttdeci">u8 DSRImpl</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00107">bsp_SD.h:107</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a6d4b83a1a42edb0e08f674fa6e611d28"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a6d4b83a1a42edb0e08f674fa6e611d28">MSD_CSD::EraseGrMul</a></div><div class="ttdeci">u8 EraseGrMul</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00116">bsp_SD.h:116</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a7e302d0f797f25a53205bf683fcb9315"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a7e302d0f797f25a53205bf683fcb9315">MSD_CSD::PartBlockRead</a></div><div class="ttdeci">u8 PartBlockRead</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00104">bsp_SD.h:104</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a81dee06837a4a641a428af5271ce7881"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a81dee06837a4a641a428af5271ce7881">MSD_CSD::MaxRdCurrentVDDMax</a></div><div class="ttdeci">u8 MaxRdCurrentVDDMax</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00111">bsp_SD.h:111</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a81e9f99cdd87dd2e0305b3b191aa5226"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a81e9f99cdd87dd2e0305b3b191aa5226">MSD_CSD::CSD_CRC</a></div><div class="ttdeci">u8 CSD_CRC</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00131">bsp_SD.h:131</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a83b44a54e8cefcfffdfb5a744d0bf3d5"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a83b44a54e8cefcfffdfb5a744d0bf3d5">MSD_CSD::Reserved3</a></div><div class="ttdeci">u8 Reserved3</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00123">bsp_SD.h:123</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_a8709246fbcaa2984e8752e5d028a25e1"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#a8709246fbcaa2984e8752e5d028a25e1">MSD_CSD::SysSpecVersion</a></div><div class="ttdeci">u8 SysSpecVersion</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00097">bsp_SD.h:97</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_aa21f77c612167167e40003b6d3784689"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#aa21f77c612167167e40003b6d3784689">MSD_CSD::WrProtectGrSize</a></div><div class="ttdeci">u8 WrProtectGrSize</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00117">bsp_SD.h:117</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_aaadb152d2dce1323e589580ef0099fec"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#aaadb152d2dce1323e589580ef0099fec">MSD_CSD::ContentProtectAppli</a></div><div class="ttdeci">u8 ContentProtectAppli</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00124">bsp_SD.h:124</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_aaf61be1914d24eeef107b78d57f96f66"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#aaf61be1914d24eeef107b78d57f96f66">MSD_CSD::WrBlockMisalign</a></div><div class="ttdeci">u8 WrBlockMisalign</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00105">bsp_SD.h:105</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_ab2341b019f101f621817ab7f13f85321"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#ab2341b019f101f621817ab7f13f85321">MSD_CSD::DeviceSize</a></div><div class="ttdeci">u32 DeviceSize</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00109">bsp_SD.h:109</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_ac3510e157155d4b9d9f67591b1cb0c8e"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#ac3510e157155d4b9d9f67591b1cb0c8e">MSD_CSD::FileFormat</a></div><div class="ttdeci">u8 FileFormat</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00129">bsp_SD.h:129</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_ac80ef2c5f8eedf6e361b9d48da66d98d"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#ac80ef2c5f8eedf6e361b9d48da66d98d">MSD_CSD::TAAC</a></div><div class="ttdeci">u8 TAAC</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00099">bsp_SD.h:99</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_ad4c2ce16da22ad02424466d1b42d04b0"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#ad4c2ce16da22ad02424466d1b42d04b0">MSD_CSD::RdBlockMisalign</a></div><div class="ttdeci">u8 RdBlockMisalign</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00106">bsp_SD.h:106</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_ae4fe7f59ec2c0fec2d5c5edc912de487"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#ae4fe7f59ec2c0fec2d5c5edc912de487">MSD_CSD::MaxBusClkFrec</a></div><div class="ttdeci">u8 MaxBusClkFrec</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00101">bsp_SD.h:101</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_ae9fdc21394cb38fc96de03821b5b1f5b"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#ae9fdc21394cb38fc96de03821b5b1f5b">MSD_CSD::NSAC</a></div><div class="ttdeci">u8 NSAC</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00100">bsp_SD.h:100</a></div></div>
<div class="ttc" id="astruct_m_s_d___c_s_d_html_af46b7c72145239d75dcf08e97a8015cb"><div class="ttname"><a href="struct_m_s_d___c_s_d.html#af46b7c72145239d75dcf08e97a8015cb">MSD_CSD::Reserved2</a></div><div class="ttdeci">u8 Reserved2</div><div class="ttdef"><b>Definition:</b> <a href="bsp___s_d_8h_source.html#l00108">bsp_SD.h:108</a></div></div>
<div class="ttc" id="avarint_8h_html_a3f7e2bcbb0b4c338f3c4f6c937cd4234"><div class="ttname"><a href="varint_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a></div><div class="ttdeci">uint64_t u64</div><div class="ttdoc">64位无符号数类型</div><div class="ttdef"><b>Definition:</b> <a href="varint_8h_source.html#l00043">varint.h:43</a></div></div>
<div class="ttc" id="avarint_8h_html_a92c50087ca0e64fa93fc59402c55f8ca"><div class="ttname"><a href="varint_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a></div><div class="ttdeci">uint8_t u8</div><div class="ttdoc">8位无符号数类型</div><div class="ttdef"><b>Definition:</b> <a href="varint_8h_source.html#l00040">varint.h:40</a></div></div>
<div class="ttc" id="avarint_8h_html_ace9d960e74685e2cd84b36132dbbf8aa"><div class="ttname"><a href="varint_8h.html#ace9d960e74685e2cd84b36132dbbf8aa">u16</a></div><div class="ttdeci">uint16_t u16</div><div class="ttdoc">16位无符号数类型</div><div class="ttdef"><b>Definition:</b> <a href="varint_8h_source.html#l00041">varint.h:41</a></div></div>
<div class="ttc" id="avarint_8h_html_afaa62991928fb9fb18ff0db62a040aba"><div class="ttname"><a href="varint_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a></div><div class="ttdeci">uint32_t u32</div><div class="ttdoc">32位无符号数类型</div><div class="ttdef"><b>Definition:</b> <a href="varint_8h_source.html#l00042">varint.h:42</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
制作者&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.5
</small></address>
</body>
</html>