Files
MicrochipFor32/Doc/docbook/bsp___s_d_8cpp_source.xml

377 lines
95 KiB
XML
Raw Normal View History

2022-11-23 23:59:23 +08:00
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_bsp___s_d_8cpp_source" xml:lang="zh">
<title>bsp_SD.cpp</title>
<indexterm><primary>D:/gitt/MicrochipFor32/bsp_Device/bsp_SD.cpp</primary></indexterm>
浏览该文件的文档.<programlisting linenumbering="unnumbered"><anchor xml:id="_bsp___s_d_8cpp_source_1l00001"/>00001 <emphasis role="comment">/*----------------------------------------------------------------------------------------------------</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00002"/>00002 <emphasis role="comment">&#32;#</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00003"/>00003 <emphasis role="comment">&#32;#&#32;&#32;Copyright&#32;(c)&#32;2022&#32;Yuankang&#32;Liang(XerolySkinner)</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00004"/>00004 <emphasis role="comment">&#32;#</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00005"/>00005 <emphasis role="comment">&#32;#&#32;&#32;本软件按原样提供,无任何明示或暗示</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00006"/>00006 <emphasis role="comment">&#32;#&#32;&#32;在任何情况下,作者都不承担任何损害赔偿责任</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00007"/>00007 <emphasis role="comment">&#32;#</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00008"/>00008 <emphasis role="comment">&#32;#&#32;&#32;使用的许可声明:</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00009"/>00009 <emphasis role="comment">&#32;#&#32;&#32;1.&#32;&#32;不得歪曲本软件的来源,你不能声称你编写了原始软件.</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00010"/>00010 <emphasis role="comment">&#32;#&#32;&#32;2.&#32;&#32;免费授予以任何目的,前提是版权声明出现在所有副本中.</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00011"/>00011 <emphasis role="comment">&#32;#&#32;&#32;&#32;&#32;&#32;&#32;并且版权声明和许可声明同时出现.</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00012"/>00012 <emphasis role="comment">&#32;#&#32;&#32;3.&#32;&#32;你有使用,复制,修改,分发,和销售本软件的许可.</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00013"/>00013 <emphasis role="comment">&#32;#&#32;&#32;4.&#32;&#32;如果你在产品中使用,产品文档中的声明是赞赏的但不是必须的.</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00014"/>00014 <emphasis role="comment">&#32;#&#32;&#32;5.&#32;&#32;本通知不得从任何来源删除或更改.</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00015"/>00015 <emphasis role="comment">&#32;#</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00016"/>00016 <emphasis role="comment">&#32;#&#32;&#32;Yuankang&#32;Liang(XerolySkinner)</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00017"/>00017 <emphasis role="comment">&#32;#&#32;&#32;&#32;&#32;&#32;&#32;E-mail:zabbcccbbaz@163.com</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00018"/>00018 <emphasis role="comment">&#32;#&#32;&#32;&#32;&#32;&#32;&#32;QQ:2715099320</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00019"/>00019 <emphasis role="comment">&#32;#&#32;&#32;&#32;&#32;&#32;&#32;Mobile&#32;Phone:13005636215</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00020"/>00020 <emphasis role="comment">&#32;#</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00021"/>00021 <emphasis role="comment">&#32;#&#32;&#32;All&#32;rights&#32;reserved.</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00022"/>00022 <emphasis role="comment">&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00023"/>00023
<anchor xml:id="_bsp___s_d_8cpp_source_1l00034"/>00034 <emphasis role="preprocessor">#include&#32;&quot;<link linkend="_bsp___s_d_8h">bsp_SD.h</link>&quot;</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00036"/>00036 <emphasis role="comment">//----------------------------------------------------------------------------------------------------</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00037"/>00037 <emphasis role="comment">//&#32;&#32;程序</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00038"/>00038 <emphasis role="comment">//&#32;&#32;</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00043"/><link linkend="_classbsp___s_d_1a3250f411819ed57543b0326d13faddc6">00043</link> <emphasis role="comment"></emphasis><emphasis role="keywordtype">void</emphasis>&#32;<link linkend="_classbsp___s_d_1a3250f411819ed57543b0326d13faddc6">bsp_SD::SD_CS</link>(<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;p){
<anchor xml:id="_bsp___s_d_8cpp_source_1l00044"/>00044 &#32;&#32;&#32;&#32;HAL_GPIO_WritePin(<link linkend="_classbsp___s_d_1ad7788d2e62152a2fb1a6b307fa902180">GPIOx_CS</link>,&#32;<link linkend="_classbsp___s_d_1a4525b5c0f62e39af1c9adb9a9c22239f">GPIO_Pin_CS</link>,&#32;p&#32;==&#32;0&#32;?&#32;GPIO_PIN_SET:&#32;GPIO_PIN_RESET);}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00045"/>00045 <emphasis role="comment">//----------------------------------------------------------------------------------------------------</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00053"/><link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">00053</link> <emphasis role="comment"></emphasis><link linkend="_varint_8h_1afaa62991928fb9fb18ff0db62a040aba">u32</link>&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">bsp_SD::SD_sendcmd</link>(<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;cmd,&#32;<link linkend="_varint_8h_1afaa62991928fb9fb18ff0db62a040aba">u32</link>&#32;arg,&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;crc){
<anchor xml:id="_bsp___s_d_8cpp_source_1l00054"/>00054 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;r1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00055"/>00055 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;retry;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00056"/>00056 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a3250f411819ed57543b0326d13faddc6">SD_CS</link>(0);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00057"/>00057 &#32;&#32;&#32;&#32;__nop();
<anchor xml:id="_bsp___s_d_8cpp_source_1l00058"/>00058 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a3250f411819ed57543b0326d13faddc6">SD_CS</link>(1);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00059"/>00059 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">do</emphasis>&#32;retry&#32;=&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(<link linkend="_classbsp___s_d_1a6c68fa82294f18968a92719931cff5fa">DFF</link>);<emphasis role="keywordflow">while</emphasis>(retry&#32;!=&#32;0xFF);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00060"/>00060 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(cmd&#32;|&#32;0x40);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00061"/>00061 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(arg&#32;&gt;&gt;&#32;24);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00062"/>00062 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(arg&#32;&gt;&gt;&#32;16);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00063"/>00063 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(arg&#32;&gt;&gt;&#32;8);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00064"/>00064 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(arg);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00065"/>00065 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(crc);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00066"/>00066 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(cmd&#32;==&#32;<link linkend="_bsp___s_d_8h_1a8d6283c9b060afbaa0e6d1ff7e5ea7b8">CMD12</link>)&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(<link linkend="_classbsp___s_d_1a6c68fa82294f18968a92719931cff5fa">DFF</link>);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00067"/>00067 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">do</emphasis>&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(0xFF);<emphasis role="keywordflow">while</emphasis>(r1&#32;&amp;&#32;0X80);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00068"/>00068 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;r1;}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00069"/>00069 <emphasis role="comment">//----------------------------------------------------------------------------------------------------</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00074"/><link linkend="_classbsp___s_d_1a1e0a3f09367627bcafc8efaaeb90b066">00074</link> <emphasis role="comment"></emphasis><link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;<link linkend="_classbsp___s_d_1a1e0a3f09367627bcafc8efaaeb90b066">bsp_SD::SD_init</link>(<emphasis role="keywordtype">void</emphasis>){
<anchor xml:id="_bsp___s_d_8cpp_source_1l00075"/>00075 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;&#32;&#32;&#32;&#32;&#32;r1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00076"/>00076 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;&#32;&#32;&#32;&#32;&#32;buff[6]&#32;=&#32;{0};
<anchor xml:id="_bsp___s_d_8cpp_source_1l00077"/>00077 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa">u16</link>&#32;&#32;&#32;&#32;&#32;retry;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00078"/>00078 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;&#32;&#32;&#32;&#32;&#32;i;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00079"/>00079 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;&#32;MX_SPI3_Init();</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00080"/>00080 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a5ed95b95b141ee21d83ca70c1b06a31a">SPI_setspeed</link>(SPI_BAUDRATEPRESCALER_256);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00081"/>00081 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a3250f411819ed57543b0326d13faddc6">SD_CS</link>(0);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00082"/>00082 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">for</emphasis>&#32;(retry&#32;=&#32;0;&#32;retry&#32;&lt;&#32;10;&#32;retry++)&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(<link linkend="_classbsp___s_d_1a6c68fa82294f18968a92719931cff5fa">DFF</link>);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00083"/>00083 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;&#32;SD卡进入IDLE状态</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00084"/>00084 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">do</emphasis>&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1a938c1466755f12fb04ac0d1b775584d1">CMD0</link>,&#32;0,&#32;0x95);<emphasis role="keywordflow">while</emphasis>(r1&#32;!=&#32;0x01);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00085"/>00085 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;&#32;查看SD卡的类型</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00086"/>00086 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4">SD_TYPE</link>&#32;=&#32;0;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00087"/>00087 &#32;&#32;&#32;&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1ac75b3e0ad1fb013ea946fb49bbe65668">CMD8</link>,&#32;0x1AA,&#32;0x87);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00088"/>00088 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(r1&#32;==&#32;0x01)&#32;{
<anchor xml:id="_bsp___s_d_8cpp_source_1l00089"/>00089 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">for</emphasis>&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;4;&#32;i++)&#32;buff[i]&#32;=&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(<link linkend="_classbsp___s_d_1a6c68fa82294f18968a92719931cff5fa">DFF</link>);&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//Get&#32;trailing&#32;return&#32;value&#32;of&#32;R7&#32;resp</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00090"/>00090 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(buff[2]&#32;==&#32;0X01&#32;&amp;&amp;&#32;buff[3]&#32;==&#32;0XAA)&#32;{&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//卡是否支持2.7~3.6V</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00091"/>00091 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;retry&#32;=&#32;0XFFFE;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00092"/>00092 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">do</emphasis>&#32;{
<anchor xml:id="_bsp___s_d_8cpp_source_1l00093"/>00093 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1a78289a7a85ffcfddd626694105dc0780">CMD55</link>,&#32;0,&#32;0X01);&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//发送CMD55</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00094"/>00094 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1a3ca1450d0ac55d2705aab03537bf2865">CMD41</link>,&#32;0x40000000,&#32;0X01);&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//发送CMD41</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00095"/>00095 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;}<emphasis role="keywordflow">while</emphasis>(r1&#32;&amp;&amp;&#32;retry--);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00096"/>00096 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(retry&#32;&amp;&amp;&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1aa7a26b2cf17e1ff5967820a1fa41a7aa">CMD58</link>,&#32;0,&#32;0X01)&#32;==&#32;0)&#32;{&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//鉴别SD2.0卡版本开始</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00097"/>00097 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">for</emphasis>&#32;(i&#32;=&#32;0;&#32;i&#32;&lt;&#32;4;&#32;i++)&#32;buff[i]&#32;=&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(0XFF);&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//得到OCR值</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00098"/>00098 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(buff[0]&#32;&amp;0x40)&#32;<link linkend="_classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4">SD_TYPE</link>&#32;=&#32;<link linkend="_bsp___s_d_8h_1ae52e14c1b95e5162f4fe492d9b1b0fec">V2HC</link>;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00099"/>00099 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">else</emphasis>&#32;<link linkend="_classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4">SD_TYPE</link>&#32;=&#32;<link linkend="_bsp___s_d_8h_1a9173468f90b474471bfff59f8487cbc1">V2</link>;}}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00100"/>00100 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">else</emphasis>&#32;{
<anchor xml:id="_bsp___s_d_8cpp_source_1l00101"/>00101 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1a78289a7a85ffcfddd626694105dc0780">CMD55</link>,&#32;0,&#32;0X01);&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//发送CMD55</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00102"/>00102 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1a3ca1450d0ac55d2705aab03537bf2865">CMD41</link>,&#32;0,&#32;0X01);&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//发送CMD41</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00103"/>00103 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(r1&#32;&lt;=&#32;1)&#32;{
<anchor xml:id="_bsp___s_d_8cpp_source_1l00104"/>00104 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4">SD_TYPE</link>&#32;=&#32;<link linkend="_bsp___s_d_8h_1ae21a9518b4dd62d2baeab430c89a657a">V1</link>;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00105"/>00105 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;retry&#32;=&#32;0XFFFE;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00106"/>00106 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">do</emphasis>&#32;{&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//等待退出IDLE模式</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00107"/>00107 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1a78289a7a85ffcfddd626694105dc0780">CMD55</link>,&#32;0,&#32;0X01);&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//发送CMD55</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00108"/>00108 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1a3ca1450d0ac55d2705aab03537bf2865">CMD41</link>,&#32;0,&#32;0X01);&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//发送CMD41</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00109"/>00109 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;}<emphasis role="keywordflow">while</emphasis>(r1&#32;&amp;&amp;&#32;retry--);}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00110"/>00110 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">else</emphasis>&#32;{&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//MMC卡不支持CMD55+CMD41识别</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00111"/>00111 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4">SD_TYPE</link>&#32;=&#32;<link linkend="_bsp___s_d_8h_1ab5a7d5477e55758bde614bda3250a93c">MMC</link>;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//MMC&#32;V3</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00112"/>00112 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;retry&#32;=&#32;0XFFFE;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00113"/>00113 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">do</emphasis>&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1aca9979f299fa78c1128d778084478673">CMD1</link>,&#32;0,&#32;0X01);<emphasis role="keywordflow">while</emphasis>(r1&#32;&amp;&amp;&#32;retry--);}&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//等待退出IDLE模式</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00114"/>00114 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(retry&#32;==&#32;0&#32;||&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1aaeab261b94f2031ba41a1d4d857c3541">CMD16</link>,&#32;512,&#32;0X01)&#32;!=&#32;0)&#32;<link linkend="_classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4">SD_TYPE</link>&#32;=&#32;<link linkend="_bsp___s_d_8h_1a735563036dced0b7d6cc98f97ea4978b">ERR</link>;}&#32;&#32;&#32;&#32;<emphasis role="comment">//错误的卡</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00115"/>00115 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00116"/>00116 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a3250f411819ed57543b0326d13faddc6">SD_CS</link>(0);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00117"/>00117 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a5ed95b95b141ee21d83ca70c1b06a31a">SPI_setspeed</link>(SPI_BAUDRATEPRESCALER_2);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00118"/>00118 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4">SD_TYPE</link>)&#32;<emphasis role="keywordflow">return</emphasis>&#32;0;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00119"/>00119 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">else</emphasis>&#32;<emphasis role="keywordflow">return</emphasis>&#32;1;}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00120"/>00120 <emphasis role="comment">//----------------------------------------------------------------------------------------------------</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00127"/><link linkend="_classbsp___s_d_1a242ec4ccd88203b6691cf4ae1e77fdfe">00127</link> <emphasis role="comment"></emphasis><link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;<link linkend="_classbsp___s_d_1a242ec4ccd88203b6691cf4ae1e77fdfe">bsp_SD::SD_ReceiveData</link>(<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;*&#32;data,&#32;<link linkend="_varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa">u16</link>&#32;len){
<anchor xml:id="_bsp___s_d_8cpp_source_1l00128"/>00128 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;r1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00129"/>00129 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a3250f411819ed57543b0326d13faddc6">SD_CS</link>(1);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00130"/>00130 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">do</emphasis>&#32;{
<anchor xml:id="_bsp___s_d_8cpp_source_1l00131"/>00131 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(0xFF);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00132"/>00132 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;__nop();
<anchor xml:id="_bsp___s_d_8cpp_source_1l00133"/>00133 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;}<emphasis role="keywordflow">while</emphasis>(r1&#32;!=&#32;0xFE);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00134"/>00134 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">while</emphasis>&#32;(len--)&#32;{
<anchor xml:id="_bsp___s_d_8cpp_source_1l00135"/>00135 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;*data&#32;=&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(0xFF);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00136"/>00136 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;data++;}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00137"/>00137 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(0xFF);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00138"/>00138 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(0xFF);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00139"/>00139 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;0;}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00140"/>00140 <emphasis role="comment">//----------------------------------------------------------------------------------------------------</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00147"/><link linkend="_classbsp___s_d_1a2df843979bb4c764422a37b255c184ea">00147</link> <emphasis role="comment"></emphasis><link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;<link linkend="_classbsp___s_d_1a2df843979bb4c764422a37b255c184ea">bsp_SD::SD_SendBlock</link>(<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;*&#32;buf,&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;cmd){
<anchor xml:id="_bsp___s_d_8cpp_source_1l00148"/>00148 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa">u16</link>&#32;t;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00149"/>00149 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;r1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00150"/>00150 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">do</emphasis>&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(0xFF);<emphasis role="keywordflow">while</emphasis>(r1&#32;!=&#32;0xFF);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00151"/>00151 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(cmd);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00152"/>00152 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(cmd&#32;!=&#32;0XFD)&#32;{&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//不是结束指令</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00153"/>00153 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">for</emphasis>&#32;(t&#32;=&#32;0;&#32;t&#32;&lt;&#32;512;&#32;t++)&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(buf[t]);&#32;&#32;&#32;&#32;<emphasis role="comment">//提高速度,减少函数传参时间</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00154"/>00154 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(0xFF);&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//忽略crc</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00155"/>00155 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(0xFF);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00156"/>00156 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;t&#32;=&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">spi_readwrite</link>(0xFF);&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//接收响应</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00157"/>00157 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;((t&#32;&amp;&#32;0x1F)&#32;!=&#32;0x05)&#32;<emphasis role="keywordflow">return</emphasis>&#32;2;}&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//响应错误</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00158"/>00158 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;0;}&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//写入成功</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00159"/>00159 <emphasis role="comment">//----------------------------------------------------------------------------------------------------</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00164"/><link linkend="_classbsp___s_d_1a25bc03ff69d0c3c9a73153c71c84a8b0">00164</link> <emphasis role="comment"></emphasis><link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;<link linkend="_classbsp___s_d_1a25bc03ff69d0c3c9a73153c71c84a8b0">bsp_SD::SD_GETCID</link>(<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;*&#32;cid_data){
<anchor xml:id="_bsp___s_d_8cpp_source_1l00165"/>00165 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;r1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00166"/>00166 &#32;&#32;&#32;&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1ae7b800ed8e7bd52e6f570a5ce72b8104">CMD10</link>,&#32;0,&#32;0x01);&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//读取CID寄存器</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00167"/>00167 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(r1&#32;==&#32;0x00)&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1a242ec4ccd88203b6691cf4ae1e77fdfe">SD_ReceiveData</link>(cid_data,&#32;16);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00168"/>00168 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a3250f411819ed57543b0326d13faddc6">SD_CS</link>(0);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00169"/>00169 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(r1)&#32;<emphasis role="keywordflow">return</emphasis>&#32;1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00170"/>00170 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">else</emphasis>&#32;<emphasis role="keywordflow">return</emphasis>&#32;0;}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00171"/>00171 <emphasis role="comment">//----------------------------------------------------------------------------------------------------</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00176"/><link linkend="_classbsp___s_d_1ad0426f6a4b550e60a926c95724d81665">00176</link> <emphasis role="comment"></emphasis><link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;<link linkend="_classbsp___s_d_1ad0426f6a4b550e60a926c95724d81665">bsp_SD::SD_GETCSD</link>(<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;*&#32;csd_data){
<anchor xml:id="_bsp___s_d_8cpp_source_1l00177"/>00177 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;r1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00178"/>00178 &#32;&#32;&#32;&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1a1fac6a251d7e7dc204d21639bf521459">CMD9</link>,&#32;0,&#32;0x01);&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//发CMD9命令读CSD寄存器</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00179"/>00179 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(r1&#32;==&#32;0)&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1a242ec4ccd88203b6691cf4ae1e77fdfe">SD_ReceiveData</link>(csd_data,&#32;16);&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//接收16个字节的数据&#32;</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00180"/>00180 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a3250f411819ed57543b0326d13faddc6">SD_CS</link>(0);&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//取消片选</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00181"/>00181 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(r1)&#32;<emphasis role="keywordflow">return</emphasis>&#32;1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00182"/>00182 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">else</emphasis>&#32;<emphasis role="keywordflow">return</emphasis>&#32;0;}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00183"/>00183 <emphasis role="comment">//----------------------------------------------------------------------------------------------------</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00188"/><link linkend="_classbsp___s_d_1a600cc886dc5da6d34f75d0bf226c1b92">00188</link> <emphasis role="comment"></emphasis><link linkend="_varint_8h_1afaa62991928fb9fb18ff0db62a040aba">u32</link>&#32;<link linkend="_classbsp___s_d_1a600cc886dc5da6d34f75d0bf226c1b92">bsp_SD::SD_GetSectorCount</link>(<emphasis role="keywordtype">void</emphasis>){
<anchor xml:id="_bsp___s_d_8cpp_source_1l00189"/>00189 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;&#32;&#32;&#32;&#32;&#32;csd[16];
<anchor xml:id="_bsp___s_d_8cpp_source_1l00190"/>00190 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1afaa62991928fb9fb18ff0db62a040aba">u32</link>&#32;&#32;&#32;&#32;&#32;Capacity;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00191"/>00191 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;&#32;&#32;&#32;&#32;&#32;n;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00192"/>00192 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa">u16</link>&#32;&#32;&#32;&#32;&#32;csize;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00193"/>00193 &#32;&#32;&#32;&#32;<emphasis role="comment">//取CSD信息如果期间出错返回0</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00194"/>00194 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_classbsp___s_d_1ad0426f6a4b550e60a926c95724d81665">SD_GETCSD</link>(csd)&#32;!=&#32;0)&#32;<emphasis role="keywordflow">return</emphasis>&#32;0;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00195"/>00195 &#32;&#32;&#32;&#32;<emphasis role="comment">//如果为SDHC卡按照下面方式计算</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00196"/>00196 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;((csd[0]&#32;&amp;0xC0)&#32;==&#32;0x40)&#32;{&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//V2.00的卡</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00197"/>00197 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;csize&#32;=&#32;csd[9]&#32;+&#32;((<link linkend="_varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa">u16</link>)&#32;csd[8]&#32;&lt;&lt;&#32;8)&#32;+&#32;1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00198"/>00198 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;Capacity&#32;=&#32;(<link linkend="_varint_8h_1afaa62991928fb9fb18ff0db62a040aba">u32</link>)
<anchor xml:id="_bsp___s_d_8cpp_source_1l00199"/>00199 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;csize&#32;&lt;&lt;&#32;10;}&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//得到扇区数</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00200"/>00200 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">else</emphasis>&#32;{&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//V1.XX的卡</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00201"/>00201 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;n&#32;=&#32;(csd[5]&#32;&amp;15)&#32;+&#32;((csd[10]&#32;&amp;128)&#32;&gt;&gt;&#32;7)&#32;+&#32;((csd[9]&#32;&amp;3)&#32;&lt;&lt;&#32;1)&#32;+&#32;2;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00202"/>00202 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;csize&#32;=&#32;(csd[8]&#32;&gt;&gt;&#32;6)&#32;+&#32;((<link linkend="_varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa">u16</link>)&#32;csd[7]&#32;&lt;&lt;&#32;2)&#32;+&#32;((<link linkend="_varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa">u16</link>)&#32;(csd[6]&#32;&amp;3)&#32;&lt;&lt;&#32;10)&#32;+&#32;1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00203"/>00203 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;Capacity&#32;=&#32;(<link linkend="_varint_8h_1afaa62991928fb9fb18ff0db62a040aba">u32</link>)
<anchor xml:id="_bsp___s_d_8cpp_source_1l00204"/>00204 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;csize&#32;&lt;&lt;&#32;(n&#32;-&#32;9);}&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//得到扇区数</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00205"/>00205 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;Capacity;}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00206"/>00206 <emphasis role="comment">//----------------------------------------------------------------------------------------------------</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00207"/><link linkend="_classbsp___s_d_1aaf2d27cc9275f3ffa71556124f143d12">00207</link> <emphasis role="keywordtype">int</emphasis>&#32;<link linkend="_classbsp___s_d_1aaf2d27cc9275f3ffa71556124f143d12">bsp_SD::MSD0_GetCardInfo</link>(<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o">PMSD_CARDINFO</link>&#32;<link linkend="_bsp___s_d_8h_1a2c85a6a257358283b46ba829ae0c2dba">SD0_CardInfo</link>){
<anchor xml:id="_bsp___s_d_8cpp_source_1l00208"/>00208 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;&#32;&#32;&#32;&#32;&#32;r1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00209"/>00209 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;&#32;&#32;&#32;&#32;&#32;CSD_Tab[16];
<anchor xml:id="_bsp___s_d_8cpp_source_1l00210"/>00210 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;&#32;&#32;&#32;&#32;&#32;CID_Tab[16];
<anchor xml:id="_bsp___s_d_8cpp_source_1l00211"/>00211 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Send&#32;CMD9,&#32;Read&#32;CSD&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00212"/>00212 &#32;&#32;&#32;&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1a1fac6a251d7e7dc204d21639bf521459">CMD9</link>,&#32;0,&#32;0xFF);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00213"/>00213 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(r1&#32;!=&#32;0x00)&#32;<emphasis role="keywordflow">return</emphasis>&#32;r1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00214"/>00214 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_classbsp___s_d_1a242ec4ccd88203b6691cf4ae1e77fdfe">SD_ReceiveData</link>(CSD_Tab,&#32;16))&#32;<emphasis role="keywordflow">return</emphasis>&#32;1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00215"/>00215 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Send&#32;CMD10,&#32;Read&#32;CID&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00216"/>00216 &#32;&#32;&#32;&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1ae7b800ed8e7bd52e6f570a5ce72b8104">CMD10</link>,&#32;0,&#32;0xFF);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00217"/>00217 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(r1&#32;!=&#32;0x00)&#32;<emphasis role="keywordflow">return</emphasis>&#32;r1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00218"/>00218 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_classbsp___s_d_1a242ec4ccd88203b6691cf4ae1e77fdfe">SD_ReceiveData</link>(CID_Tab,&#32;16))&#32;<emphasis role="keywordflow">return</emphasis>&#32;2;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00219"/>00219 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;0&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00220"/>00220 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a53c6d82426462a5f31a0e07bc2014d97">CSDStruct</link>&#32;=&#32;(CSD_Tab[0]&#32;&amp;0xC0)&#32;&gt;&gt;&#32;6;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00221"/>00221 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a8709246fbcaa2984e8752e5d028a25e1">SysSpecVersion</link>&#32;=&#32;(CSD_Tab[0]&#32;&amp;0x3C)&#32;&gt;&gt;&#32;2;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00222"/>00222 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a43d9f48b7a10b9b16700cc4df7f944c0">Reserved1</link>&#32;=&#32;CSD_Tab[0]&#32;&amp;0x03;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00223"/>00223 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;1&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00224"/>00224 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1ac80ef2c5f8eedf6e361b9d48da66d98d">TAAC</link>&#32;=&#32;CSD_Tab[1];
<anchor xml:id="_bsp___s_d_8cpp_source_1l00225"/>00225 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;2&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00226"/>00226 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1ae9fdc21394cb38fc96de03821b5b1f5b">NSAC</link>&#32;=&#32;CSD_Tab[2];
<anchor xml:id="_bsp___s_d_8cpp_source_1l00227"/>00227 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;3&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00228"/>00228 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1ae4fe7f59ec2c0fec2d5c5edc912de487">MaxBusClkFrec</link>&#32;=&#32;CSD_Tab[3];
<anchor xml:id="_bsp___s_d_8cpp_source_1l00229"/>00229 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;4&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00230"/>00230 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a235ebfcf7116a28eb8f7e2348b46c279">CardComdClasses</link>&#32;=&#32;CSD_Tab[4]&#32;&lt;&lt;&#32;4;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00231"/>00231 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;5&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00232"/>00232 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a235ebfcf7116a28eb8f7e2348b46c279">CardComdClasses</link>&#32;|=&#32;(CSD_Tab[5]&#32;&amp;0xF0)&#32;&gt;&gt;&#32;4;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00233"/>00233 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a0d503ea30e3553e3dbf1d259c1835bca">RdBlockLen</link>&#32;=&#32;CSD_Tab[5]&#32;&amp;0x0F;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00234"/>00234 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;6&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00235"/>00235 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a7e302d0f797f25a53205bf683fcb9315">PartBlockRead</link>&#32;=&#32;(CSD_Tab[6]&#32;&amp;0x80)&#32;&gt;&gt;&#32;7;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00236"/>00236 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1aaf61be1914d24eeef107b78d57f96f66">WrBlockMisalign</link>&#32;=&#32;(CSD_Tab[6]&#32;&amp;0x40)&#32;&gt;&gt;&#32;6;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00237"/>00237 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1ad4c2ce16da22ad02424466d1b42d04b0">RdBlockMisalign</link>&#32;=&#32;(CSD_Tab[6]&#32;&amp;0x20)&#32;&gt;&gt;&#32;5;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00238"/>00238 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a6010a523c29470b3fca2a179608bb165">DSRImpl</link>&#32;=&#32;(CSD_Tab[6]&#32;&amp;0x10)&#32;&gt;&gt;&#32;4;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00239"/>00239 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1af46b7c72145239d75dcf08e97a8015cb">Reserved2</link>&#32;=&#32;0;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Reserved&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00240"/>00240 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1ab2341b019f101f621817ab7f13f85321">DeviceSize</link>&#32;=&#32;(CSD_Tab[6]&#32;&amp;0x03)&#32;&lt;&lt;&#32;10;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00241"/>00241 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;7&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00242"/>00242 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1ab2341b019f101f621817ab7f13f85321">DeviceSize</link>&#32;|=&#32;(CSD_Tab[7])&#32;&lt;&lt;&#32;2;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00243"/>00243 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;8&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00244"/>00244 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1ab2341b019f101f621817ab7f13f85321">DeviceSize</link>&#32;|=&#32;(CSD_Tab[8]&#32;&amp;0xC0)&#32;&gt;&gt;&#32;6;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00245"/>00245 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a5f028ae76ae390e7efc7581863f86fa4">MaxRdCurrentVDDMin</link>&#32;=&#32;(CSD_Tab[8]&#32;&amp;0x38)&#32;&gt;&gt;&#32;3;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00246"/>00246 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a81dee06837a4a641a428af5271ce7881">MaxRdCurrentVDDMax</link>&#32;=&#32;(CSD_Tab[8]&#32;&amp;0x07);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00247"/>00247 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;9&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00248"/>00248 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a4312d08d19360f8cda0fdcefea8c58a8">MaxWrCurrentVDDMin</link>&#32;=&#32;(CSD_Tab[9]&#32;&amp;0xE0)&#32;&gt;&gt;&#32;5;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00249"/>00249 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a5a4157c022770f5f2a22da59f1287ec1">MaxWrCurrentVDDMax</link>&#32;=&#32;(CSD_Tab[9]&#32;&amp;0x1C)&#32;&gt;&gt;&#32;2;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00250"/>00250 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a021add43b09781e1c4feb5a911bab718">DeviceSizeMul</link>&#32;=&#32;(CSD_Tab[9]&#32;&amp;0x03)&#32;&lt;&lt;&#32;1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00251"/>00251 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;10&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00252"/>00252 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a021add43b09781e1c4feb5a911bab718">DeviceSizeMul</link>&#32;|=&#32;(CSD_Tab[10]&#32;&amp;0x80)&#32;&gt;&gt;&#32;7;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00253"/>00253 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a3217bd2b49b77943bcb3e5a6f5f0e419">EraseGrSize</link>&#32;=&#32;(CSD_Tab[10]&#32;&amp;0x7C)&#32;&gt;&gt;&#32;2;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00254"/>00254 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a6d4b83a1a42edb0e08f674fa6e611d28">EraseGrMul</link>&#32;=&#32;(CSD_Tab[10]&#32;&amp;0x03)&#32;&lt;&lt;&#32;3;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00255"/>00255 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;11&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00256"/>00256 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a6d4b83a1a42edb0e08f674fa6e611d28">EraseGrMul</link>&#32;|=&#32;(CSD_Tab[11]&#32;&amp;0xE0)&#32;&gt;&gt;&#32;5;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00257"/>00257 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1aa21f77c612167167e40003b6d3784689">WrProtectGrSize</link>&#32;=&#32;(CSD_Tab[11]&#32;&amp;0x1F);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00258"/>00258 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;12&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00259"/>00259 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a0d11fc6f8c1e51d1b63887603eee8915">WrProtectGrEnable</link>&#32;=&#32;(CSD_Tab[12]&#32;&amp;0x80)&#32;&gt;&gt;&#32;7;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00260"/>00260 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a1ee9e5144b15487f92f6d9ce59835428">ManDeflECC</link>&#32;=&#32;(CSD_Tab[12]&#32;&amp;0x60)&#32;&gt;&gt;&#32;5;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00261"/>00261 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a3ededd192a17234569a584cbd72b12ae">WrSpeedFact</link>&#32;=&#32;(CSD_Tab[12]&#32;&amp;0x1C)&#32;&gt;&gt;&#32;2;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00262"/>00262 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a0dcba500cb60f6ce8d95864ae2eaa307">MaxWrBlockLen</link>&#32;=&#32;(CSD_Tab[12]&#32;&amp;0x03)&#32;&lt;&lt;&#32;2;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00263"/>00263 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;13&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00264"/>00264 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a0dcba500cb60f6ce8d95864ae2eaa307">MaxWrBlockLen</link>&#32;|=&#32;(CSD_Tab[13]&#32;&amp;0xc0)&#32;&gt;&gt;&#32;6;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00265"/>00265 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a3c32bff0de0b6cba1f9bd3205159e6e4">WriteBlockPaPartial</link>&#32;=&#32;(CSD_Tab[13]&#32;&amp;0x20)&#32;&gt;&gt;&#32;5;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00266"/>00266 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a83b44a54e8cefcfffdfb5a744d0bf3d5">Reserved3</link>&#32;=&#32;0;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00267"/>00267 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1aaadb152d2dce1323e589580ef0099fec">ContentProtectAppli</link>&#32;=&#32;(CSD_Tab[13]&#32;&amp;0x01);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00268"/>00268 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;14&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00269"/>00269 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a08f8247c46de7ef2b0677886470d7792">FileFormatGrouop</link>&#32;=&#32;(CSD_Tab[14]&#32;&amp;0x80)&#32;&gt;&gt;&#32;7;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00270"/>00270 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a17f58dd1f98e6e6376efe142f352cb59">CopyFlag</link>&#32;=&#32;(CSD_Tab[14]&#32;&amp;0x40)&#32;&gt;&gt;&#32;6;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00271"/>00271 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a150bf25ff42008d58320a6b7e531c9ab">PermWrProtect</link>&#32;=&#32;(CSD_Tab[14]&#32;&amp;0x20)&#32;&gt;&gt;&#32;5;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00272"/>00272 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a3f2c48bb307e7779173e3563bbd5038f">TempWrProtect</link>&#32;=&#32;(CSD_Tab[14]&#32;&amp;0x10)&#32;&gt;&gt;&#32;4;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00273"/>00273 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1ac3510e157155d4b9d9f67591b1cb0c8e">FileFormat</link>&#32;=&#32;(CSD_Tab[14]&#32;&amp;0x0C)&#32;&gt;&gt;&#32;2;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00274"/>00274 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a1e153d660ffe4bbafa596d4b0b8c2906">ECC</link>&#32;=&#32;(CSD_Tab[14]&#32;&amp;0x03);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00275"/>00275 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;15&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00276"/>00276 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a81e9f99cdd87dd2e0305b3b191aa5226">CSD_CRC</link>&#32;=&#32;(CSD_Tab[15]&#32;&amp;0xFE)&#32;&gt;&gt;&#32;1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00277"/>00277 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1a36b124f6ffc0716dc0dc93c407b975d1">Reserved4</link>&#32;=&#32;1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00278"/>00278 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a8f29efd96df6abb8cd6353787eebca04">CardType</link>&#32;==&#32;<link linkend="_bsp___s_d_8h_1ae52e14c1b95e5162f4fe492d9b1b0fec">V2HC</link>)&#32;{
<anchor xml:id="_bsp___s_d_8cpp_source_1l00279"/>00279 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;7&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00280"/>00280 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1ab2341b019f101f621817ab7f13f85321">DeviceSize</link>&#32;=&#32;(<link linkend="_varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa">u16</link>)&#32;(CSD_Tab[8])&#32;*&#32;256;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00281"/>00281 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;8&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00282"/>00282 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1ab2341b019f101f621817ab7f13f85321">DeviceSize</link>&#32;+=&#32;CSD_Tab[9];}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00283"/>00283 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a4e5da8ba91229ac3ccb2d3f11f1ab4bf">Capacity</link>&#32;=&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a">CSD</link>.<link linkend="_struct_m_s_d___c_s_d_1ab2341b019f101f621817ab7f13f85321">DeviceSize</link>&#32;*&#32;<link linkend="_bsp___s_d_8h_1a5bda0c70032a9b8625ae5a3c55d21c38">MSD_BLOCKSIZE</link>&#32;*&#32;1024;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00284"/>00284 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1aadaf986217b3c403be1cc4a2fd2fd148">BlockSize</link>&#32;=&#32;<link linkend="_bsp___s_d_8h_1a5bda0c70032a9b8625ae5a3c55d21c38">MSD_BLOCKSIZE</link>;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00285"/>00285 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;0&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00286"/>00286 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509">CID</link>.<link linkend="_struct_m_s_d___c_i_d_1a5ae9ad5d65182a34e20b87fa2752010e">ManufacturerID</link>&#32;=&#32;CID_Tab[0];
<anchor xml:id="_bsp___s_d_8cpp_source_1l00287"/>00287 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;1&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00288"/>00288 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509">CID</link>.<link linkend="_struct_m_s_d___c_i_d_1acd04644e46f7ceca82bbe9bdc80f1d53">OEM_AppliID</link>&#32;=&#32;CID_Tab[1]&#32;&lt;&lt;&#32;8;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00289"/>00289 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;2&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00290"/>00290 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509">CID</link>.<link linkend="_struct_m_s_d___c_i_d_1acd04644e46f7ceca82bbe9bdc80f1d53">OEM_AppliID</link>&#32;|=&#32;CID_Tab[2];
<anchor xml:id="_bsp___s_d_8cpp_source_1l00291"/>00291 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;3&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00292"/>00292 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509">CID</link>.<link linkend="_struct_m_s_d___c_i_d_1ab7e359a09fecf1fa2d1b18e708dcc292">ProdName1</link>&#32;=&#32;CID_Tab[3]&#32;&lt;&lt;&#32;24;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00293"/>00293 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;4&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00294"/>00294 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509">CID</link>.<link linkend="_struct_m_s_d___c_i_d_1ab7e359a09fecf1fa2d1b18e708dcc292">ProdName1</link>&#32;|=&#32;CID_Tab[4]&#32;&lt;&lt;&#32;16;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00295"/>00295 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;5&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00296"/>00296 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509">CID</link>.<link linkend="_struct_m_s_d___c_i_d_1ab7e359a09fecf1fa2d1b18e708dcc292">ProdName1</link>&#32;|=&#32;CID_Tab[5]&#32;&lt;&lt;&#32;8;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00297"/>00297 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;6&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00298"/>00298 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509">CID</link>.<link linkend="_struct_m_s_d___c_i_d_1ab7e359a09fecf1fa2d1b18e708dcc292">ProdName1</link>&#32;|=&#32;CID_Tab[6];
<anchor xml:id="_bsp___s_d_8cpp_source_1l00299"/>00299 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;7&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00300"/>00300 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509">CID</link>.<link linkend="_struct_m_s_d___c_i_d_1ad0d7606f38a0140075647fb3f66614ea">ProdName2</link>&#32;=&#32;CID_Tab[7];
<anchor xml:id="_bsp___s_d_8cpp_source_1l00301"/>00301 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;8&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00302"/>00302 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509">CID</link>.<link linkend="_struct_m_s_d___c_i_d_1acd9fbacd30fdff0eef7d885ad4ec438b">ProdRev</link>&#32;=&#32;CID_Tab[8];
<anchor xml:id="_bsp___s_d_8cpp_source_1l00303"/>00303 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;9&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00304"/>00304 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509">CID</link>.<link linkend="_struct_m_s_d___c_i_d_1a0c5c88d258f73f17a496f3b92d9cfd5c">ProdSN</link>&#32;=&#32;CID_Tab[9]&#32;&lt;&lt;&#32;24;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00305"/>00305 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;10&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00306"/>00306 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509">CID</link>.<link linkend="_struct_m_s_d___c_i_d_1a0c5c88d258f73f17a496f3b92d9cfd5c">ProdSN</link>&#32;|=&#32;CID_Tab[10]&#32;&lt;&lt;&#32;16;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00307"/>00307 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;11&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00308"/>00308 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509">CID</link>.<link linkend="_struct_m_s_d___c_i_d_1a0c5c88d258f73f17a496f3b92d9cfd5c">ProdSN</link>&#32;|=&#32;CID_Tab[11]&#32;&lt;&lt;&#32;8;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00309"/>00309 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;12&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00310"/>00310 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509">CID</link>.<link linkend="_struct_m_s_d___c_i_d_1a0c5c88d258f73f17a496f3b92d9cfd5c">ProdSN</link>&#32;|=&#32;CID_Tab[12];
<anchor xml:id="_bsp___s_d_8cpp_source_1l00311"/>00311 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;13&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00312"/>00312 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509">CID</link>.<link linkend="_struct_m_s_d___c_i_d_1a1be2e4d82c95f2d158ce5f5157a7fd5b">Reserved1</link>&#32;|=&#32;(CID_Tab[13]&#32;&amp;0xF0)&#32;&gt;&gt;&#32;4;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00313"/>00313 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;14&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00314"/>00314 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509">CID</link>.<link linkend="_struct_m_s_d___c_i_d_1a55015d75002e50ff4f23cd19c9b5c90a">ManufactDate</link>&#32;=&#32;(CID_Tab[13]&#32;&amp;0x0F)&#32;&lt;&lt;&#32;8;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00315"/>00315 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;15&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00316"/>00316 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509">CID</link>.<link linkend="_struct_m_s_d___c_i_d_1a55015d75002e50ff4f23cd19c9b5c90a">ManufactDate</link>&#32;|=&#32;CID_Tab[14];
<anchor xml:id="_bsp___s_d_8cpp_source_1l00317"/>00317 &#32;&#32;&#32;&#32;<emphasis role="comment">/*&#32;Byte&#32;16&#32;*/</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00318"/>00318 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509">CID</link>.<link linkend="_struct_m_s_d___c_i_d_1a61fe89c386eb7bf7b8e2ba44545168de">CID_CRC</link>&#32;=&#32;(CID_Tab[15]&#32;&amp;0xFE)&#32;&gt;&gt;&#32;1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00319"/>00319 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4">SD0_CardInfo</link>-&gt;<link linkend="_struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509">CID</link>.<link linkend="_struct_m_s_d___c_i_d_1aac8e73e305ea1ff29ae195a6c0a63e05">Reserved2</link>&#32;=&#32;1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00320"/>00320 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;0;}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00321"/>00321 <emphasis role="comment">//----------------------------------------------------------------------------------------------------</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00329"/><link linkend="_classbsp___s_d_1af203b65e00206d38ef14640f7b7242b6">00329</link> <emphasis role="comment"></emphasis><link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;<link linkend="_classbsp___s_d_1af203b65e00206d38ef14640f7b7242b6">bsp_SD::SD_WriteDisk</link>(<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;*&#32;buf,&#32;<link linkend="_varint_8h_1afaa62991928fb9fb18ff0db62a040aba">u32</link>&#32;sector,&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;cnt){
<anchor xml:id="_bsp___s_d_8cpp_source_1l00330"/>00330 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;r1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00331"/>00331 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4">SD_TYPE</link>&#32;!=&#32;<link linkend="_bsp___s_d_8h_1ae52e14c1b95e5162f4fe492d9b1b0fec">V2HC</link>)&#32;sector&#32;*=&#32;512;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//转换为字节地址</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00332"/>00332 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(cnt&#32;==&#32;1){
<anchor xml:id="_bsp___s_d_8cpp_source_1l00333"/>00333 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1a252300302c6f7960df547a7f5c25be85">CMD24</link>,&#32;sector,&#32;0X01);&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//读命令</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00334"/>00334 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(r1&#32;==&#32;0)&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//指令发送成功</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00335"/>00335 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1a2df843979bb4c764422a37b255c184ea">SD_SendBlock</link>(buf,&#32;0xFE);}&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//写512个字节</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00336"/>00336 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">else</emphasis>&#32;{
<anchor xml:id="_bsp___s_d_8cpp_source_1l00337"/>00337 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4">SD_TYPE</link>&#32;!=&#32;<link linkend="_bsp___s_d_8h_1ab5a7d5477e55758bde614bda3250a93c">MMC</link>)&#32;{
<anchor xml:id="_bsp___s_d_8cpp_source_1l00338"/>00338 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1a78289a7a85ffcfddd626694105dc0780">CMD55</link>,&#32;0,&#32;0X01);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00339"/>00339 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1a14506e981f38b6177bc36f72c2ca18b1">CMD23</link>,&#32;cnt,&#32;0X01);}&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//发送指令</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00340"/>00340 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1aee2c673fba987178f4642531fdeefe9e">CMD25</link>,&#32;sector,&#32;0X01);&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//连续读命令</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00341"/>00341 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(r1&#32;==&#32;0)&#32;{
<anchor xml:id="_bsp___s_d_8cpp_source_1l00342"/>00342 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">do</emphasis>&#32;{
<anchor xml:id="_bsp___s_d_8cpp_source_1l00343"/>00343 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1a2df843979bb4c764422a37b255c184ea">SD_SendBlock</link>(buf,&#32;0xFC);&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//接收512个字节</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00344"/>00344 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;buf&#32;+=&#32;512;}<emphasis role="keywordflow">while</emphasis>(--cnt&#32;&amp;&amp;&#32;r1&#32;==&#32;0);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00345"/>00345 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1a2df843979bb4c764422a37b255c184ea">SD_SendBlock</link>(0,&#32;0xFD);}}&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//接收512个字节</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00346"/>00346 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a3250f411819ed57543b0326d13faddc6">SD_CS</link>(0);&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//取消片选</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00347"/>00347 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;r1;}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00348"/>00348 <emphasis role="comment">//----------------------------------------------------------------------------------------------------</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00356"/><link linkend="_classbsp___s_d_1a96f32b50ec777acc0dd819150cd28937">00356</link> <emphasis role="comment"></emphasis><link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;<link linkend="_classbsp___s_d_1a96f32b50ec777acc0dd819150cd28937">bsp_SD::SD_ReadDisk</link>(<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;*&#32;buf,&#32;<link linkend="_varint_8h_1afaa62991928fb9fb18ff0db62a040aba">u32</link>&#32;sector,&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;cnt){
<anchor xml:id="_bsp___s_d_8cpp_source_1l00357"/>00357 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;r1;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00358"/>00358 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(<link linkend="_classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4">SD_TYPE</link>&#32;!=&#32;<link linkend="_bsp___s_d_8h_1ae52e14c1b95e5162f4fe492d9b1b0fec">V2HC</link>)&#32;sector&#32;&lt;&lt;=&#32;9;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//转换为字节地址</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00359"/>00359 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(cnt&#32;==&#32;1)&#32;{
<anchor xml:id="_bsp___s_d_8cpp_source_1l00360"/>00360 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1a6bbfe7dc16a19b7f40efcf554b5666ad">CMD17</link>,&#32;sector,&#32;0X01);&#32;&#32;&#32;<emphasis role="comment">//读命令</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00361"/>00361 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(r1&#32;==&#32;0)&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//指令发送成功</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00362"/>00362 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1a242ec4ccd88203b6691cf4ae1e77fdfe">SD_ReceiveData</link>(buf,&#32;512);}&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//接收512个字节</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00363"/>00363 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">else</emphasis>&#32;{
<anchor xml:id="_bsp___s_d_8cpp_source_1l00364"/>00364 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1a3d32c27a6be061b865ba539127278f14">CMD18</link>,&#32;sector,&#32;0X01);&#32;&#32;&#32;<emphasis role="comment">//连续读命令</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00365"/>00365 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">do</emphasis>&#32;{
<anchor xml:id="_bsp___s_d_8cpp_source_1l00366"/>00366 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;r1&#32;=&#32;<link linkend="_classbsp___s_d_1a242ec4ccd88203b6691cf4ae1e77fdfe">SD_ReceiveData</link>(buf,&#32;512);&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//接收512个字节&#32;&#32;&#32;&#32;&#32;</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00367"/>00367 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;buf&#32;+=&#32;512;}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00368"/>00368 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">while</emphasis>(--cnt&#32;&amp;&amp;&#32;r1&#32;==&#32;0);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00369"/>00369 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37">SD_sendcmd</link>(<link linkend="_bsp___s_d_8h_1a8d6283c9b060afbaa0e6d1ff7e5ea7b8">CMD12</link>,&#32;0,&#32;0X01);}&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//发送停止命令</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00370"/>00370 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a3250f411819ed57543b0326d13faddc6">SD_CS</link>(0);&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//取消片选</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00371"/>00371 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;r1;}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00372"/>00372 <emphasis role="comment">//----------------------------------------------------------------------------------------------------</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00373"/><link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">00373</link> <link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;<link linkend="_classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5">bsp_SD::spi_readwrite</link>(<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;Txdata){
<anchor xml:id="_bsp___s_d_8cpp_source_1l00374"/>00374 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;Rxdata;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00375"/>00375 &#32;&#32;&#32;&#32;HAL_SPI_TransmitReceive(<link linkend="_classbsp___s_d_1a227c7eb7a28e89d6adfda085a4217992">hspi</link>,&#32;&amp;Txdata,&#32;&amp;Rxdata,&#32;1,&#32;0xFF);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00376"/>00376 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;Rxdata;}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00377"/>00377 <emphasis role="comment">//----------------------------------------------------------------------------------------------------</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00383"/><link linkend="_classbsp___s_d_1a5ed95b95b141ee21d83ca70c1b06a31a">00383</link> <emphasis role="comment"></emphasis><emphasis role="keywordtype">void</emphasis>&#32;<link linkend="_classbsp___s_d_1a5ed95b95b141ee21d83ca70c1b06a31a">bsp_SD::SPI_setspeed</link>(<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;speed){
<anchor xml:id="_bsp___s_d_8cpp_source_1l00384"/>00384 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a227c7eb7a28e89d6adfda085a4217992">hspi</link>-&gt;Init.BaudRatePrescaler&#32;=&#32;speed;}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00385"/>00385 <emphasis role="comment">//----------------------------------------------------------------------------------------------------</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00393"/><link linkend="_classbsp___s_d_1a164f0bb03133464f2da485f362a52718">00393</link> <emphasis role="comment"></emphasis><link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;<link linkend="_classbsp___s_d_1a164f0bb03133464f2da485f362a52718">bsp_SD::offsetWrite</link>(<link linkend="_varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</link>&#32;offset,<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>*&#32;dat,<link linkend="_varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</link>&#32;datlen)&#32;{
<anchor xml:id="_bsp___s_d_8cpp_source_1l00394"/>00394 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;sectorBuff[512]&#32;=&#32;{&#32;0&#32;};
<anchor xml:id="_bsp___s_d_8cpp_source_1l00395"/>00395 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</link>&#32;sectorBuffptr&#32;=&#32;0;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00396"/>00396 &#32;&#32;&#32;&#32;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00397"/>00397 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</link>&#32;sectorSour&#32;&#32;&#32;&#32;&#32;&#32;=&#32;offset&#32;/&#32;512;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;&#32;起始扇</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00398"/>00398 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</link>&#32;sectorSourlen&#32;&#32;&#32;=&#32;offset&#32;%&#32;512;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;&#32;起始扇内位</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00399"/>00399
<anchor xml:id="_bsp___s_d_8cpp_source_1l00400"/>00400 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;&#32;填入数据</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00401"/>00401 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a96f32b50ec777acc0dd819150cd28937">SD_ReadDisk</link>(sectorBuff,sectorSour,1);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00402"/>00402 &#32;&#32;&#32;&#32;sectorBuffptr&#32;=&#32;sectorSourlen;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00403"/>00403 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">for</emphasis>&#32;(<link linkend="_varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</link>&#32;i&#32;=&#32;0;&#32;i&#32;&lt;&#32;datlen;&#32;i++)&#32;{
<anchor xml:id="_bsp___s_d_8cpp_source_1l00404"/>00404 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;&#32;写入数据</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00405"/>00405 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;sectorBuff[sectorBuffptr]&#32;=&#32;dat[i];
<anchor xml:id="_bsp___s_d_8cpp_source_1l00406"/>00406 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;sectorBuffptr++;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00407"/>00407 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;&#32;扇区回写</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00408"/>00408 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(sectorBuffptr&#32;==&#32;512&#32;||&#32;i&#32;==&#32;datlen&#32;-&#32;1)&#32;{
<anchor xml:id="_bsp___s_d_8cpp_source_1l00409"/>00409 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1af203b65e00206d38ef14640f7b7242b6">SD_WriteDisk</link>(sectorBuff,sectorSour,1);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00410"/>00410 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;sectorBuffptr&#32;=&#32;0;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00411"/>00411 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;sectorSour++;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00412"/>00412 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(i&#32;!=&#32;datlen&#32;-&#32;1)<link linkend="_classbsp___s_d_1a96f32b50ec777acc0dd819150cd28937">SD_ReadDisk</link>(sectorBuff,sectorSour,1);}}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00413"/>00413 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;0;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00414"/>00414 &#32;&#32;&#32;&#32;}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00415"/>00415 <emphasis role="comment">//----------------------------------------------------------------------------------------------------</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00423"/><link linkend="_classbsp___s_d_1a1c78e6f5a72f3bdec600a52331dd4d20">00423</link> <emphasis role="comment"></emphasis><link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;<link linkend="_classbsp___s_d_1a1c78e6f5a72f3bdec600a52331dd4d20">bsp_SD::offsetRead</link>(<link linkend="_varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</link>&#32;offset,<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>*&#32;dat,<link linkend="_varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</link>&#32;datlen)&#32;{
<anchor xml:id="_bsp___s_d_8cpp_source_1l00424"/>00424 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;sectorBuff[512]&#32;=&#32;{&#32;0&#32;};
<anchor xml:id="_bsp___s_d_8cpp_source_1l00425"/>00425 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</link>&#32;sectorBuffptr&#32;=&#32;0;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00426"/>00426 &#32;&#32;&#32;&#32;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00427"/>00427 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</link>&#32;sectorSour&#32;&#32;&#32;&#32;&#32;&#32;=&#32;offset&#32;/&#32;512;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;&#32;起始扇</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00428"/>00428 &#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</link>&#32;sectorSourlen&#32;&#32;&#32;=&#32;offset&#32;%&#32;512;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;&#32;起始扇内位</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00429"/>00429
<anchor xml:id="_bsp___s_d_8cpp_source_1l00430"/>00430 &#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;&#32;填入数据</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00431"/>00431 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a96f32b50ec777acc0dd819150cd28937">SD_ReadDisk</link>(sectorBuff,sectorSour,1);
<anchor xml:id="_bsp___s_d_8cpp_source_1l00432"/>00432 &#32;&#32;&#32;&#32;sectorBuffptr&#32;=&#32;sectorSourlen;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00433"/>00433 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">for</emphasis>&#32;(<link linkend="_varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</link>&#32;i&#32;=&#32;0;&#32;i&#32;&lt;&#32;datlen;&#32;i++)&#32;{
<anchor xml:id="_bsp___s_d_8cpp_source_1l00434"/>00434 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;&#32;写入数据</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00435"/>00435 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;dat[i]=sectorBuff[sectorBuffptr];
<anchor xml:id="_bsp___s_d_8cpp_source_1l00436"/>00436 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;sectorBuffptr++;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00437"/>00437 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="comment">//&#32;&#32;扇区回写</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00438"/>00438 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(sectorBuffptr&#32;==&#32;512&#32;||&#32;i&#32;==&#32;datlen&#32;-&#32;1)&#32;{
<anchor xml:id="_bsp___s_d_8cpp_source_1l00439"/>00439 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;sectorBuffptr&#32;=&#32;0;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00440"/>00440 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;sectorSour++;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00441"/>00441 &#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<emphasis role="keywordflow">if</emphasis>&#32;(i&#32;!=&#32;datlen&#32;-&#32;1)<link linkend="_classbsp___s_d_1a96f32b50ec777acc0dd819150cd28937">SD_ReadDisk</link>(sectorBuff,sectorSour,1);}}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00442"/>00442 &#32;&#32;&#32;&#32;<emphasis role="keywordflow">return</emphasis>&#32;0;}
<anchor xml:id="_bsp___s_d_8cpp_source_1l00444"/>00444 <emphasis role="comment">//----------------------------------------------------------------------------------------------------</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00445"/>00445 <emphasis role="comment">//&#32;&#32;构造函数</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00446"/>00446 <emphasis role="comment">//&#32;&#32;</emphasis>
<anchor xml:id="_bsp___s_d_8cpp_source_1l00447"/><link linkend="_classbsp___s_d_1a9f5ace0a335acc31271c9d131cd6d306">00447</link> <link linkend="_classbsp___s_d_1a9f5ace0a335acc31271c9d131cd6d306">bsp_SD::bsp_SD</link>(
<anchor xml:id="_bsp___s_d_8cpp_source_1l00448"/>00448 &#32;&#32;&#32;&#32;SPI_HandleTypeDef&#32;*hspi,
<anchor xml:id="_bsp___s_d_8cpp_source_1l00449"/>00449 &#32;&#32;&#32;&#32;GPIO_TypeDef&#32;*GPIOx_CS,
<anchor xml:id="_bsp___s_d_8cpp_source_1l00450"/>00450 &#32;&#32;&#32;&#32;uint16_t&#32;GPIO_Pin_CS){
<anchor xml:id="_bsp___s_d_8cpp_source_1l00451"/>00451 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a227c7eb7a28e89d6adfda085a4217992">bsp_SD::hspi</link>=<link linkend="_classbsp___s_d_1a227c7eb7a28e89d6adfda085a4217992">hspi</link>;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00452"/>00452 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1ad7788d2e62152a2fb1a6b307fa902180">bsp_SD::GPIOx_CS</link>=<link linkend="_classbsp___s_d_1ad7788d2e62152a2fb1a6b307fa902180">GPIOx_CS</link>;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00453"/>00453 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a4525b5c0f62e39af1c9adb9a9c22239f">bsp_SD::GPIO_Pin_CS</link>=<link linkend="_classbsp___s_d_1a4525b5c0f62e39af1c9adb9a9c22239f">GPIO_Pin_CS</link>;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00454"/>00454 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a6c68fa82294f18968a92719931cff5fa">bsp_SD::DFF</link>=0xFF;
<anchor xml:id="_bsp___s_d_8cpp_source_1l00455"/>00455 &#32;&#32;&#32;&#32;<link linkend="_classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4">bsp_SD::SD_TYPE</link>=0x00;}
</programlisting></section>