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

377 lines
95 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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>