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

415 lines
114 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'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.9.5" xml:lang="zh">
<compounddef id="bsp___s_d_8cpp" kind="file" language="C++">
<compoundname>bsp_SD.cpp</compoundname>
<includes refid="bsp___s_d_8h" local="yes">bsp_SD.h</includes>
<incdepgraph>
<node id="1">
<label>D:/gitt/MicrochipFor32/bsp_Device/bsp_SD.cpp</label>
<link refid="bsp___s_d_8cpp"/>
<childnode refid="2" relation="include">
</childnode>
</node>
<node id="2">
<label>bsp_SD.h</label>
<link refid="bsp___s_d_8h"/>
<childnode refid="3" relation="include">
</childnode>
<childnode refid="4" relation="include">
</childnode>
</node>
<node id="4">
<label>varint.h</label>
<link refid="varint_8h"/>
<childnode refid="5" relation="include">
</childnode>
</node>
<node id="3">
<label>spi.h</label>
</node>
<node id="5">
<label>stdint.h</label>
</node>
</incdepgraph>
<briefdescription>
<para>操作SD卡的库 </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<programlisting>
<codeline lineno="1"><highlight class="comment">/*----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="2"><highlight class="comment"><sp/>#</highlight></codeline>
<codeline lineno="3"><highlight class="comment"><sp/>#<sp/><sp/>Copyright<sp/>(c)<sp/>2022<sp/>Yuankang<sp/>Liang(XerolySkinner)</highlight></codeline>
<codeline lineno="4"><highlight class="comment"><sp/>#</highlight></codeline>
<codeline lineno="5"><highlight class="comment"><sp/>#<sp/><sp/>本软件按原样提供,无任何明示或暗示</highlight></codeline>
<codeline lineno="6"><highlight class="comment"><sp/>#<sp/><sp/>在任何情况下,作者都不承担任何损害赔偿责任</highlight></codeline>
<codeline lineno="7"><highlight class="comment"><sp/>#</highlight></codeline>
<codeline lineno="8"><highlight class="comment"><sp/>#<sp/><sp/>使用的许可声明:</highlight></codeline>
<codeline lineno="9"><highlight class="comment"><sp/>#<sp/><sp/>1.<sp/><sp/>不得歪曲本软件的来源,你不能声称你编写了原始软件.</highlight></codeline>
<codeline lineno="10"><highlight class="comment"><sp/>#<sp/><sp/>2.<sp/><sp/>免费授予以任何目的,前提是版权声明出现在所有副本中.</highlight></codeline>
<codeline lineno="11"><highlight class="comment"><sp/>#<sp/><sp/><sp/><sp/><sp/><sp/>并且版权声明和许可声明同时出现.</highlight></codeline>
<codeline lineno="12"><highlight class="comment"><sp/>#<sp/><sp/>3.<sp/><sp/>你有使用,复制,修改,分发,和销售本软件的许可.</highlight></codeline>
<codeline lineno="13"><highlight class="comment"><sp/>#<sp/><sp/>4.<sp/><sp/>如果你在产品中使用,产品文档中的声明是赞赏的但不是必须的.</highlight></codeline>
<codeline lineno="14"><highlight class="comment"><sp/>#<sp/><sp/>5.<sp/><sp/>本通知不得从任何来源删除或更改.</highlight></codeline>
<codeline lineno="15"><highlight class="comment"><sp/>#</highlight></codeline>
<codeline lineno="16"><highlight class="comment"><sp/>#<sp/><sp/>Yuankang<sp/>Liang(XerolySkinner)</highlight></codeline>
<codeline lineno="17"><highlight class="comment"><sp/>#<sp/><sp/><sp/><sp/><sp/><sp/>E-mail:zabbcccbbaz@163.com</highlight></codeline>
<codeline lineno="18"><highlight class="comment"><sp/>#<sp/><sp/><sp/><sp/><sp/><sp/>QQ:2715099320</highlight></codeline>
<codeline lineno="19"><highlight class="comment"><sp/>#<sp/><sp/><sp/><sp/><sp/><sp/>Mobile<sp/>Phone:13005636215</highlight></codeline>
<codeline lineno="20"><highlight class="comment"><sp/>#</highlight></codeline>
<codeline lineno="21"><highlight class="comment"><sp/>#<sp/><sp/>All<sp/>rights<sp/>reserved.</highlight></codeline>
<codeline lineno="22"><highlight class="comment"><sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="23"><highlight class="normal"></highlight></codeline>
<codeline lineno="34"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="bsp___s_d_8h" kindref="compound">bsp_SD.h</ref>&quot;</highlight></codeline>
<codeline lineno="36"><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="37"><highlight class="normal"></highlight><highlight class="comment">//<sp/><sp/>程序</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="38"><highlight class="normal"></highlight><highlight class="comment">//<sp/><sp/></highlight></codeline>
<codeline lineno="43" refid="classbsp___s_d_1a3250f411819ed57543b0326d13faddc6" refkind="member"><highlight class="comment"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classbsp___s_d_1a3250f411819ed57543b0326d13faddc6" kindref="member">bsp_SD::SD_CS</ref>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>p){</highlight></codeline>
<codeline lineno="44"><highlight class="normal"><sp/><sp/><sp/><sp/>HAL_GPIO_WritePin(<ref refid="classbsp___s_d_1ad7788d2e62152a2fb1a6b307fa902180" kindref="member">GPIOx_CS</ref>,<sp/><ref refid="classbsp___s_d_1a4525b5c0f62e39af1c9adb9a9c22239f" kindref="member">GPIO_Pin_CS</ref>,<sp/>p<sp/>==<sp/>0<sp/>?<sp/>GPIO_PIN_SET:<sp/>GPIO_PIN_RESET);}</highlight></codeline>
<codeline lineno="45"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="53" refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" refkind="member"><highlight class="comment"></highlight><highlight class="normal"><ref refid="varint_8h_1afaa62991928fb9fb18ff0db62a040aba" kindref="member">u32</ref><sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">bsp_SD::SD_sendcmd</ref>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>cmd,<sp/><ref refid="varint_8h_1afaa62991928fb9fb18ff0db62a040aba" kindref="member">u32</ref><sp/>arg,<sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>crc){</highlight></codeline>
<codeline lineno="54"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>r1;</highlight></codeline>
<codeline lineno="55"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>retry;</highlight></codeline>
<codeline lineno="56"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a3250f411819ed57543b0326d13faddc6" kindref="member">SD_CS</ref>(0);</highlight></codeline>
<codeline lineno="57"><highlight class="normal"><sp/><sp/><sp/><sp/>__nop();</highlight></codeline>
<codeline lineno="58"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a3250f411819ed57543b0326d13faddc6" kindref="member">SD_CS</ref>(1);</highlight></codeline>
<codeline lineno="59"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">do</highlight><highlight class="normal"><sp/>retry<sp/>=<sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(<ref refid="classbsp___s_d_1a6c68fa82294f18968a92719931cff5fa" kindref="member">DFF</ref>);</highlight><highlight class="keywordflow">while</highlight><highlight class="normal">(retry<sp/>!=<sp/>0xFF);</highlight></codeline>
<codeline lineno="60"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(cmd<sp/>|<sp/>0x40);</highlight></codeline>
<codeline lineno="61"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(arg<sp/>&gt;&gt;<sp/>24);</highlight></codeline>
<codeline lineno="62"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(arg<sp/>&gt;&gt;<sp/>16);</highlight></codeline>
<codeline lineno="63"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(arg<sp/>&gt;&gt;<sp/>8);</highlight></codeline>
<codeline lineno="64"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(arg);</highlight></codeline>
<codeline lineno="65"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(crc);</highlight></codeline>
<codeline lineno="66"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(cmd<sp/>==<sp/><ref refid="bsp___s_d_8h_1a8d6283c9b060afbaa0e6d1ff7e5ea7b8" kindref="member">CMD12</ref>)<sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(<ref refid="classbsp___s_d_1a6c68fa82294f18968a92719931cff5fa" kindref="member">DFF</ref>);</highlight></codeline>
<codeline lineno="67"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">do</highlight><highlight class="normal"><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(0xFF);</highlight><highlight class="keywordflow">while</highlight><highlight class="normal">(r1<sp/>&amp;<sp/>0X80);</highlight></codeline>
<codeline lineno="68"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>r1;}</highlight></codeline>
<codeline lineno="69"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="74" refid="classbsp___s_d_1a1e0a3f09367627bcafc8efaaeb90b066" refkind="member"><highlight class="comment"></highlight><highlight class="normal"><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/><ref refid="classbsp___s_d_1a1e0a3f09367627bcafc8efaaeb90b066" kindref="member">bsp_SD::SD_init</ref>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">){</highlight></codeline>
<codeline lineno="75"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/><sp/><sp/><sp/><sp/><sp/>r1;</highlight></codeline>
<codeline lineno="76"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/><sp/><sp/><sp/><sp/><sp/>buff[6]<sp/>=<sp/>{0};</highlight></codeline>
<codeline lineno="77"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/><sp/><sp/><sp/><sp/>retry;</highlight></codeline>
<codeline lineno="78"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/><sp/><sp/><sp/><sp/><sp/>i;</highlight></codeline>
<codeline lineno="79"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>MX_SPI3_Init();</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="80"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a5ed95b95b141ee21d83ca70c1b06a31a" kindref="member">SPI_setspeed</ref>(SPI_BAUDRATEPRESCALER_256);</highlight></codeline>
<codeline lineno="81"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a3250f411819ed57543b0326d13faddc6" kindref="member">SD_CS</ref>(0);</highlight></codeline>
<codeline lineno="82"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(retry<sp/>=<sp/>0;<sp/>retry<sp/>&lt;<sp/>10;<sp/>retry++)<sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(<ref refid="classbsp___s_d_1a6c68fa82294f18968a92719931cff5fa" kindref="member">DFF</ref>);</highlight></codeline>
<codeline lineno="83"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>SD卡进入IDLE状态</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="84"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">do</highlight><highlight class="normal"><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1a938c1466755f12fb04ac0d1b775584d1" kindref="member">CMD0</ref>,<sp/>0,<sp/>0x95);</highlight><highlight class="keywordflow">while</highlight><highlight class="normal">(r1<sp/>!=<sp/>0x01);</highlight></codeline>
<codeline lineno="85"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>查看SD卡的类型</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="86"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4" kindref="member">SD_TYPE</ref><sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="87"><highlight class="normal"><sp/><sp/><sp/><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1ac75b3e0ad1fb013ea946fb49bbe65668" kindref="member">CMD8</ref>,<sp/>0x1AA,<sp/>0x87);</highlight></codeline>
<codeline lineno="88"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(r1<sp/>==<sp/>0x01)<sp/>{</highlight></codeline>
<codeline lineno="89"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>4;<sp/>i++)<sp/>buff[i]<sp/>=<sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(<ref refid="classbsp___s_d_1a6c68fa82294f18968a92719931cff5fa" kindref="member">DFF</ref>);<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//Get<sp/>trailing<sp/>return<sp/>value<sp/>of<sp/>R7<sp/>resp</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="90"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(buff[2]<sp/>==<sp/>0X01<sp/>&amp;&amp;<sp/>buff[3]<sp/>==<sp/>0XAA)<sp/>{<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//卡是否支持2.7~3.6V</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="91"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>retry<sp/>=<sp/>0XFFFE;</highlight></codeline>
<codeline lineno="92"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">do</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="93"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1a78289a7a85ffcfddd626694105dc0780" kindref="member">CMD55</ref>,<sp/>0,<sp/>0X01);<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//发送CMD55</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="94"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1a3ca1450d0ac55d2705aab03537bf2865" kindref="member">CMD41</ref>,<sp/>0x40000000,<sp/>0X01);<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//发送CMD41</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="95"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight><highlight class="keywordflow">while</highlight><highlight class="normal">(r1<sp/>&amp;&amp;<sp/>retry--);</highlight></codeline>
<codeline lineno="96"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(retry<sp/>&amp;&amp;<sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1aa7a26b2cf17e1ff5967820a1fa41a7aa" kindref="member">CMD58</ref>,<sp/>0,<sp/>0X01)<sp/>==<sp/>0)<sp/>{<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//鉴别SD2.0卡版本开始</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="97"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>4;<sp/>i++)<sp/>buff[i]<sp/>=<sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(0XFF);<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//得到OCR值</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="98"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(buff[0]<sp/>&amp;0x40)<sp/><ref refid="classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4" kindref="member">SD_TYPE</ref><sp/>=<sp/><ref refid="bsp___s_d_8h_1ae52e14c1b95e5162f4fe492d9b1b0fec" kindref="member">V2HC</ref>;</highlight></codeline>
<codeline lineno="99"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/><ref refid="classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4" kindref="member">SD_TYPE</ref><sp/>=<sp/><ref refid="bsp___s_d_8h_1a9173468f90b474471bfff59f8487cbc1" kindref="member">V2</ref>;}}</highlight></codeline>
<codeline lineno="100"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="101"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1a78289a7a85ffcfddd626694105dc0780" kindref="member">CMD55</ref>,<sp/>0,<sp/>0X01);<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//发送CMD55</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="102"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1a3ca1450d0ac55d2705aab03537bf2865" kindref="member">CMD41</ref>,<sp/>0,<sp/>0X01);<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//发送CMD41</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="103"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(r1<sp/>&lt;=<sp/>1)<sp/>{</highlight></codeline>
<codeline lineno="104"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4" kindref="member">SD_TYPE</ref><sp/>=<sp/><ref refid="bsp___s_d_8h_1ae21a9518b4dd62d2baeab430c89a657a" kindref="member">V1</ref>;</highlight></codeline>
<codeline lineno="105"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>retry<sp/>=<sp/>0XFFFE;</highlight></codeline>
<codeline lineno="106"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">do</highlight><highlight class="normal"><sp/>{<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//等待退出IDLE模式</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="107"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1a78289a7a85ffcfddd626694105dc0780" kindref="member">CMD55</ref>,<sp/>0,<sp/>0X01);<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//发送CMD55</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="108"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1a3ca1450d0ac55d2705aab03537bf2865" kindref="member">CMD41</ref>,<sp/>0,<sp/>0X01);<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//发送CMD41</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="109"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight><highlight class="keywordflow">while</highlight><highlight class="normal">(r1<sp/>&amp;&amp;<sp/>retry--);}</highlight></codeline>
<codeline lineno="110"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//MMC卡不支持CMD55+CMD41识别</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="111"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4" kindref="member">SD_TYPE</ref><sp/>=<sp/><ref refid="bsp___s_d_8h_1ab5a7d5477e55758bde614bda3250a93c" kindref="member">MMC</ref>;<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//MMC<sp/>V3</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="112"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>retry<sp/>=<sp/>0XFFFE;</highlight></codeline>
<codeline lineno="113"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">do</highlight><highlight class="normal"><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1aca9979f299fa78c1128d778084478673" kindref="member">CMD1</ref>,<sp/>0,<sp/>0X01);</highlight><highlight class="keywordflow">while</highlight><highlight class="normal">(r1<sp/>&amp;&amp;<sp/>retry--);}<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//等待退出IDLE模式</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="114"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(retry<sp/>==<sp/>0<sp/>||<sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1aaeab261b94f2031ba41a1d4d857c3541" kindref="member">CMD16</ref>,<sp/>512,<sp/>0X01)<sp/>!=<sp/>0)<sp/><ref refid="classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4" kindref="member">SD_TYPE</ref><sp/>=<sp/><ref refid="bsp___s_d_8h_1a735563036dced0b7d6cc98f97ea4978b" kindref="member">ERR</ref>;}<sp/><sp/><sp/><sp/></highlight><highlight class="comment">//错误的卡</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="115"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="116"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a3250f411819ed57543b0326d13faddc6" kindref="member">SD_CS</ref>(0);</highlight></codeline>
<codeline lineno="117"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a5ed95b95b141ee21d83ca70c1b06a31a" kindref="member">SPI_setspeed</ref>(SPI_BAUDRATEPRESCALER_2);</highlight></codeline>
<codeline lineno="118"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4" kindref="member">SD_TYPE</ref>)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0;</highlight></codeline>
<codeline lineno="119"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>1;}</highlight></codeline>
<codeline lineno="120"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="127" refid="classbsp___s_d_1a242ec4ccd88203b6691cf4ae1e77fdfe" refkind="member"><highlight class="comment"></highlight><highlight class="normal"><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/><ref refid="classbsp___s_d_1a242ec4ccd88203b6691cf4ae1e77fdfe" kindref="member">bsp_SD::SD_ReceiveData</ref>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>*<sp/>data,<sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>len){</highlight></codeline>
<codeline lineno="128"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>r1;</highlight></codeline>
<codeline lineno="129"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a3250f411819ed57543b0326d13faddc6" kindref="member">SD_CS</ref>(1);</highlight></codeline>
<codeline lineno="130"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">do</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="131"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(0xFF);</highlight></codeline>
<codeline lineno="132"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>__nop();</highlight></codeline>
<codeline lineno="133"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight><highlight class="keywordflow">while</highlight><highlight class="normal">(r1<sp/>!=<sp/>0xFE);</highlight></codeline>
<codeline lineno="134"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">while</highlight><highlight class="normal"><sp/>(len--)<sp/>{</highlight></codeline>
<codeline lineno="135"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>*data<sp/>=<sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(0xFF);</highlight></codeline>
<codeline lineno="136"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>data++;}</highlight></codeline>
<codeline lineno="137"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(0xFF);</highlight></codeline>
<codeline lineno="138"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(0xFF);</highlight></codeline>
<codeline lineno="139"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0;}</highlight></codeline>
<codeline lineno="140"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="147" refid="classbsp___s_d_1a2df843979bb4c764422a37b255c184ea" refkind="member"><highlight class="comment"></highlight><highlight class="normal"><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/><ref refid="classbsp___s_d_1a2df843979bb4c764422a37b255c184ea" kindref="member">bsp_SD::SD_SendBlock</ref>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>*<sp/>buf,<sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>cmd){</highlight></codeline>
<codeline lineno="148"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/>t;</highlight></codeline>
<codeline lineno="149"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>r1;</highlight></codeline>
<codeline lineno="150"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">do</highlight><highlight class="normal"><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(0xFF);</highlight><highlight class="keywordflow">while</highlight><highlight class="normal">(r1<sp/>!=<sp/>0xFF);</highlight></codeline>
<codeline lineno="151"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(cmd);</highlight></codeline>
<codeline lineno="152"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(cmd<sp/>!=<sp/>0XFD)<sp/>{<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//不是结束指令</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="153"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(t<sp/>=<sp/>0;<sp/>t<sp/>&lt;<sp/>512;<sp/>t++)<sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(buf[t]);<sp/><sp/><sp/><sp/></highlight><highlight class="comment">//提高速度,减少函数传参时间</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="154"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(0xFF);<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//忽略crc</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="155"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(0xFF);</highlight></codeline>
<codeline lineno="156"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>t<sp/>=<sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">spi_readwrite</ref>(0xFF);<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//接收响应</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="157"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>((t<sp/>&amp;<sp/>0x1F)<sp/>!=<sp/>0x05)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>2;}<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//响应错误</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="158"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0;}<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//写入成功</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="159"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="164" refid="classbsp___s_d_1a25bc03ff69d0c3c9a73153c71c84a8b0" refkind="member"><highlight class="comment"></highlight><highlight class="normal"><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/><ref refid="classbsp___s_d_1a25bc03ff69d0c3c9a73153c71c84a8b0" kindref="member">bsp_SD::SD_GETCID</ref>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>*<sp/>cid_data){</highlight></codeline>
<codeline lineno="165"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>r1;</highlight></codeline>
<codeline lineno="166"><highlight class="normal"><sp/><sp/><sp/><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1ae7b800ed8e7bd52e6f570a5ce72b8104" kindref="member">CMD10</ref>,<sp/>0,<sp/>0x01);<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//读取CID寄存器</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="167"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(r1<sp/>==<sp/>0x00)<sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1a242ec4ccd88203b6691cf4ae1e77fdfe" kindref="member">SD_ReceiveData</ref>(cid_data,<sp/>16);</highlight></codeline>
<codeline lineno="168"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a3250f411819ed57543b0326d13faddc6" kindref="member">SD_CS</ref>(0);</highlight></codeline>
<codeline lineno="169"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(r1)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>1;</highlight></codeline>
<codeline lineno="170"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0;}</highlight></codeline>
<codeline lineno="171"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="176" refid="classbsp___s_d_1ad0426f6a4b550e60a926c95724d81665" refkind="member"><highlight class="comment"></highlight><highlight class="normal"><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/><ref refid="classbsp___s_d_1ad0426f6a4b550e60a926c95724d81665" kindref="member">bsp_SD::SD_GETCSD</ref>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>*<sp/>csd_data){</highlight></codeline>
<codeline lineno="177"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>r1;</highlight></codeline>
<codeline lineno="178"><highlight class="normal"><sp/><sp/><sp/><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1a1fac6a251d7e7dc204d21639bf521459" kindref="member">CMD9</ref>,<sp/>0,<sp/>0x01);<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//发CMD9命令读CSD寄存器</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="179"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(r1<sp/>==<sp/>0)<sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1a242ec4ccd88203b6691cf4ae1e77fdfe" kindref="member">SD_ReceiveData</ref>(csd_data,<sp/>16);<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//接收16个字节的数据<sp/></highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="180"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a3250f411819ed57543b0326d13faddc6" kindref="member">SD_CS</ref>(0);<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//取消片选</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="181"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(r1)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>1;</highlight></codeline>
<codeline lineno="182"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0;}</highlight></codeline>
<codeline lineno="183"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="188" refid="classbsp___s_d_1a600cc886dc5da6d34f75d0bf226c1b92" refkind="member"><highlight class="comment"></highlight><highlight class="normal"><ref refid="varint_8h_1afaa62991928fb9fb18ff0db62a040aba" kindref="member">u32</ref><sp/><ref refid="classbsp___s_d_1a600cc886dc5da6d34f75d0bf226c1b92" kindref="member">bsp_SD::SD_GetSectorCount</ref>(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">){</highlight></codeline>
<codeline lineno="189"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/><sp/><sp/><sp/><sp/><sp/>csd[16];</highlight></codeline>
<codeline lineno="190"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1afaa62991928fb9fb18ff0db62a040aba" kindref="member">u32</ref><sp/><sp/><sp/><sp/><sp/>Capacity;</highlight></codeline>
<codeline lineno="191"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/><sp/><sp/><sp/><sp/><sp/>n;</highlight></codeline>
<codeline lineno="192"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref><sp/><sp/><sp/><sp/><sp/>csize;</highlight></codeline>
<codeline lineno="193"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//取CSD信息如果期间出错返回0</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="194"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="classbsp___s_d_1ad0426f6a4b550e60a926c95724d81665" kindref="member">SD_GETCSD</ref>(csd)<sp/>!=<sp/>0)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0;</highlight></codeline>
<codeline lineno="195"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//如果为SDHC卡按照下面方式计算</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="196"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>((csd[0]<sp/>&amp;0xC0)<sp/>==<sp/>0x40)<sp/>{<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//V2.00的卡</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="197"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>csize<sp/>=<sp/>csd[9]<sp/>+<sp/>((<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref>)<sp/>csd[8]<sp/>&lt;&lt;<sp/>8)<sp/>+<sp/>1;</highlight></codeline>
<codeline lineno="198"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Capacity<sp/>=<sp/>(<ref refid="varint_8h_1afaa62991928fb9fb18ff0db62a040aba" kindref="member">u32</ref>)</highlight></codeline>
<codeline lineno="199"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>csize<sp/>&lt;&lt;<sp/>10;}<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//得到扇区数</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="200"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//V1.XX的卡</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="201"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>n<sp/>=<sp/>(csd[5]<sp/>&amp;15)<sp/>+<sp/>((csd[10]<sp/>&amp;128)<sp/>&gt;&gt;<sp/>7)<sp/>+<sp/>((csd[9]<sp/>&amp;3)<sp/>&lt;&lt;<sp/>1)<sp/>+<sp/>2;</highlight></codeline>
<codeline lineno="202"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>csize<sp/>=<sp/>(csd[8]<sp/>&gt;&gt;<sp/>6)<sp/>+<sp/>((<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref>)<sp/>csd[7]<sp/>&lt;&lt;<sp/>2)<sp/>+<sp/>((<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref>)<sp/>(csd[6]<sp/>&amp;3)<sp/>&lt;&lt;<sp/>10)<sp/>+<sp/>1;</highlight></codeline>
<codeline lineno="203"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Capacity<sp/>=<sp/>(<ref refid="varint_8h_1afaa62991928fb9fb18ff0db62a040aba" kindref="member">u32</ref>)</highlight></codeline>
<codeline lineno="204"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>csize<sp/>&lt;&lt;<sp/>(n<sp/>-<sp/>9);}<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//得到扇区数</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="205"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>Capacity;}</highlight></codeline>
<codeline lineno="206"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="207" refid="classbsp___s_d_1aaf2d27cc9275f3ffa71556124f143d12" refkind="member"><highlight class="normal"></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="classbsp___s_d_1aaf2d27cc9275f3ffa71556124f143d12" kindref="member">bsp_SD::MSD0_GetCardInfo</ref>(<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o" kindref="compound">PMSD_CARDINFO</ref><sp/><ref refid="bsp___s_d_8h_1a2c85a6a257358283b46ba829ae0c2dba" kindref="member">SD0_CardInfo</ref>){</highlight></codeline>
<codeline lineno="208"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/><sp/><sp/><sp/><sp/><sp/>r1;</highlight></codeline>
<codeline lineno="209"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/><sp/><sp/><sp/><sp/><sp/>CSD_Tab[16];</highlight></codeline>
<codeline lineno="210"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/><sp/><sp/><sp/><sp/><sp/>CID_Tab[16];</highlight></codeline>
<codeline lineno="211"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Send<sp/>CMD9,<sp/>Read<sp/>CSD<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="212"><highlight class="normal"><sp/><sp/><sp/><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1a1fac6a251d7e7dc204d21639bf521459" kindref="member">CMD9</ref>,<sp/>0,<sp/>0xFF);</highlight></codeline>
<codeline lineno="213"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(r1<sp/>!=<sp/>0x00)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>r1;</highlight></codeline>
<codeline lineno="214"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="classbsp___s_d_1a242ec4ccd88203b6691cf4ae1e77fdfe" kindref="member">SD_ReceiveData</ref>(CSD_Tab,<sp/>16))<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>1;</highlight></codeline>
<codeline lineno="215"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Send<sp/>CMD10,<sp/>Read<sp/>CID<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="216"><highlight class="normal"><sp/><sp/><sp/><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1ae7b800ed8e7bd52e6f570a5ce72b8104" kindref="member">CMD10</ref>,<sp/>0,<sp/>0xFF);</highlight></codeline>
<codeline lineno="217"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(r1<sp/>!=<sp/>0x00)<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>r1;</highlight></codeline>
<codeline lineno="218"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="classbsp___s_d_1a242ec4ccd88203b6691cf4ae1e77fdfe" kindref="member">SD_ReceiveData</ref>(CID_Tab,<sp/>16))<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>2;</highlight></codeline>
<codeline lineno="219"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>0<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="220"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a53c6d82426462a5f31a0e07bc2014d97" kindref="member">CSDStruct</ref><sp/>=<sp/>(CSD_Tab[0]<sp/>&amp;0xC0)<sp/>&gt;&gt;<sp/>6;</highlight></codeline>
<codeline lineno="221"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a8709246fbcaa2984e8752e5d028a25e1" kindref="member">SysSpecVersion</ref><sp/>=<sp/>(CSD_Tab[0]<sp/>&amp;0x3C)<sp/>&gt;&gt;<sp/>2;</highlight></codeline>
<codeline lineno="222"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a43d9f48b7a10b9b16700cc4df7f944c0" kindref="member">Reserved1</ref><sp/>=<sp/>CSD_Tab[0]<sp/>&amp;0x03;</highlight></codeline>
<codeline lineno="223"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>1<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="224"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1ac80ef2c5f8eedf6e361b9d48da66d98d" kindref="member">TAAC</ref><sp/>=<sp/>CSD_Tab[1];</highlight></codeline>
<codeline lineno="225"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>2<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="226"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1ae9fdc21394cb38fc96de03821b5b1f5b" kindref="member">NSAC</ref><sp/>=<sp/>CSD_Tab[2];</highlight></codeline>
<codeline lineno="227"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>3<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="228"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1ae4fe7f59ec2c0fec2d5c5edc912de487" kindref="member">MaxBusClkFrec</ref><sp/>=<sp/>CSD_Tab[3];</highlight></codeline>
<codeline lineno="229"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>4<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="230"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a235ebfcf7116a28eb8f7e2348b46c279" kindref="member">CardComdClasses</ref><sp/>=<sp/>CSD_Tab[4]<sp/>&lt;&lt;<sp/>4;</highlight></codeline>
<codeline lineno="231"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>5<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="232"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a235ebfcf7116a28eb8f7e2348b46c279" kindref="member">CardComdClasses</ref><sp/>|=<sp/>(CSD_Tab[5]<sp/>&amp;0xF0)<sp/>&gt;&gt;<sp/>4;</highlight></codeline>
<codeline lineno="233"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a0d503ea30e3553e3dbf1d259c1835bca" kindref="member">RdBlockLen</ref><sp/>=<sp/>CSD_Tab[5]<sp/>&amp;0x0F;</highlight></codeline>
<codeline lineno="234"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>6<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="235"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a7e302d0f797f25a53205bf683fcb9315" kindref="member">PartBlockRead</ref><sp/>=<sp/>(CSD_Tab[6]<sp/>&amp;0x80)<sp/>&gt;&gt;<sp/>7;</highlight></codeline>
<codeline lineno="236"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1aaf61be1914d24eeef107b78d57f96f66" kindref="member">WrBlockMisalign</ref><sp/>=<sp/>(CSD_Tab[6]<sp/>&amp;0x40)<sp/>&gt;&gt;<sp/>6;</highlight></codeline>
<codeline lineno="237"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1ad4c2ce16da22ad02424466d1b42d04b0" kindref="member">RdBlockMisalign</ref><sp/>=<sp/>(CSD_Tab[6]<sp/>&amp;0x20)<sp/>&gt;&gt;<sp/>5;</highlight></codeline>
<codeline lineno="238"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a6010a523c29470b3fca2a179608bb165" kindref="member">DSRImpl</ref><sp/>=<sp/>(CSD_Tab[6]<sp/>&amp;0x10)<sp/>&gt;&gt;<sp/>4;</highlight></codeline>
<codeline lineno="239"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1af46b7c72145239d75dcf08e97a8015cb" kindref="member">Reserved2</ref><sp/>=<sp/>0;<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Reserved<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="240"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1ab2341b019f101f621817ab7f13f85321" kindref="member">DeviceSize</ref><sp/>=<sp/>(CSD_Tab[6]<sp/>&amp;0x03)<sp/>&lt;&lt;<sp/>10;</highlight></codeline>
<codeline lineno="241"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>7<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="242"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1ab2341b019f101f621817ab7f13f85321" kindref="member">DeviceSize</ref><sp/>|=<sp/>(CSD_Tab[7])<sp/>&lt;&lt;<sp/>2;</highlight></codeline>
<codeline lineno="243"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>8<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="244"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1ab2341b019f101f621817ab7f13f85321" kindref="member">DeviceSize</ref><sp/>|=<sp/>(CSD_Tab[8]<sp/>&amp;0xC0)<sp/>&gt;&gt;<sp/>6;</highlight></codeline>
<codeline lineno="245"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a5f028ae76ae390e7efc7581863f86fa4" kindref="member">MaxRdCurrentVDDMin</ref><sp/>=<sp/>(CSD_Tab[8]<sp/>&amp;0x38)<sp/>&gt;&gt;<sp/>3;</highlight></codeline>
<codeline lineno="246"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a81dee06837a4a641a428af5271ce7881" kindref="member">MaxRdCurrentVDDMax</ref><sp/>=<sp/>(CSD_Tab[8]<sp/>&amp;0x07);</highlight></codeline>
<codeline lineno="247"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>9<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="248"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a4312d08d19360f8cda0fdcefea8c58a8" kindref="member">MaxWrCurrentVDDMin</ref><sp/>=<sp/>(CSD_Tab[9]<sp/>&amp;0xE0)<sp/>&gt;&gt;<sp/>5;</highlight></codeline>
<codeline lineno="249"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a5a4157c022770f5f2a22da59f1287ec1" kindref="member">MaxWrCurrentVDDMax</ref><sp/>=<sp/>(CSD_Tab[9]<sp/>&amp;0x1C)<sp/>&gt;&gt;<sp/>2;</highlight></codeline>
<codeline lineno="250"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a021add43b09781e1c4feb5a911bab718" kindref="member">DeviceSizeMul</ref><sp/>=<sp/>(CSD_Tab[9]<sp/>&amp;0x03)<sp/>&lt;&lt;<sp/>1;</highlight></codeline>
<codeline lineno="251"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>10<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="252"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a021add43b09781e1c4feb5a911bab718" kindref="member">DeviceSizeMul</ref><sp/>|=<sp/>(CSD_Tab[10]<sp/>&amp;0x80)<sp/>&gt;&gt;<sp/>7;</highlight></codeline>
<codeline lineno="253"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a3217bd2b49b77943bcb3e5a6f5f0e419" kindref="member">EraseGrSize</ref><sp/>=<sp/>(CSD_Tab[10]<sp/>&amp;0x7C)<sp/>&gt;&gt;<sp/>2;</highlight></codeline>
<codeline lineno="254"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a6d4b83a1a42edb0e08f674fa6e611d28" kindref="member">EraseGrMul</ref><sp/>=<sp/>(CSD_Tab[10]<sp/>&amp;0x03)<sp/>&lt;&lt;<sp/>3;</highlight></codeline>
<codeline lineno="255"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>11<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="256"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a6d4b83a1a42edb0e08f674fa6e611d28" kindref="member">EraseGrMul</ref><sp/>|=<sp/>(CSD_Tab[11]<sp/>&amp;0xE0)<sp/>&gt;&gt;<sp/>5;</highlight></codeline>
<codeline lineno="257"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1aa21f77c612167167e40003b6d3784689" kindref="member">WrProtectGrSize</ref><sp/>=<sp/>(CSD_Tab[11]<sp/>&amp;0x1F);</highlight></codeline>
<codeline lineno="258"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>12<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="259"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a0d11fc6f8c1e51d1b63887603eee8915" kindref="member">WrProtectGrEnable</ref><sp/>=<sp/>(CSD_Tab[12]<sp/>&amp;0x80)<sp/>&gt;&gt;<sp/>7;</highlight></codeline>
<codeline lineno="260"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a1ee9e5144b15487f92f6d9ce59835428" kindref="member">ManDeflECC</ref><sp/>=<sp/>(CSD_Tab[12]<sp/>&amp;0x60)<sp/>&gt;&gt;<sp/>5;</highlight></codeline>
<codeline lineno="261"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a3ededd192a17234569a584cbd72b12ae" kindref="member">WrSpeedFact</ref><sp/>=<sp/>(CSD_Tab[12]<sp/>&amp;0x1C)<sp/>&gt;&gt;<sp/>2;</highlight></codeline>
<codeline lineno="262"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a0dcba500cb60f6ce8d95864ae2eaa307" kindref="member">MaxWrBlockLen</ref><sp/>=<sp/>(CSD_Tab[12]<sp/>&amp;0x03)<sp/>&lt;&lt;<sp/>2;</highlight></codeline>
<codeline lineno="263"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>13<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="264"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a0dcba500cb60f6ce8d95864ae2eaa307" kindref="member">MaxWrBlockLen</ref><sp/>|=<sp/>(CSD_Tab[13]<sp/>&amp;0xc0)<sp/>&gt;&gt;<sp/>6;</highlight></codeline>
<codeline lineno="265"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a3c32bff0de0b6cba1f9bd3205159e6e4" kindref="member">WriteBlockPaPartial</ref><sp/>=<sp/>(CSD_Tab[13]<sp/>&amp;0x20)<sp/>&gt;&gt;<sp/>5;</highlight></codeline>
<codeline lineno="266"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a83b44a54e8cefcfffdfb5a744d0bf3d5" kindref="member">Reserved3</ref><sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="267"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1aaadb152d2dce1323e589580ef0099fec" kindref="member">ContentProtectAppli</ref><sp/>=<sp/>(CSD_Tab[13]<sp/>&amp;0x01);</highlight></codeline>
<codeline lineno="268"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>14<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="269"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a08f8247c46de7ef2b0677886470d7792" kindref="member">FileFormatGrouop</ref><sp/>=<sp/>(CSD_Tab[14]<sp/>&amp;0x80)<sp/>&gt;&gt;<sp/>7;</highlight></codeline>
<codeline lineno="270"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a17f58dd1f98e6e6376efe142f352cb59" kindref="member">CopyFlag</ref><sp/>=<sp/>(CSD_Tab[14]<sp/>&amp;0x40)<sp/>&gt;&gt;<sp/>6;</highlight></codeline>
<codeline lineno="271"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a150bf25ff42008d58320a6b7e531c9ab" kindref="member">PermWrProtect</ref><sp/>=<sp/>(CSD_Tab[14]<sp/>&amp;0x20)<sp/>&gt;&gt;<sp/>5;</highlight></codeline>
<codeline lineno="272"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a3f2c48bb307e7779173e3563bbd5038f" kindref="member">TempWrProtect</ref><sp/>=<sp/>(CSD_Tab[14]<sp/>&amp;0x10)<sp/>&gt;&gt;<sp/>4;</highlight></codeline>
<codeline lineno="273"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1ac3510e157155d4b9d9f67591b1cb0c8e" kindref="member">FileFormat</ref><sp/>=<sp/>(CSD_Tab[14]<sp/>&amp;0x0C)<sp/>&gt;&gt;<sp/>2;</highlight></codeline>
<codeline lineno="274"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a1e153d660ffe4bbafa596d4b0b8c2906" kindref="member">ECC</ref><sp/>=<sp/>(CSD_Tab[14]<sp/>&amp;0x03);</highlight></codeline>
<codeline lineno="275"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>15<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="276"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a81e9f99cdd87dd2e0305b3b191aa5226" kindref="member">CSD_CRC</ref><sp/>=<sp/>(CSD_Tab[15]<sp/>&amp;0xFE)<sp/>&gt;&gt;<sp/>1;</highlight></codeline>
<codeline lineno="277"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1a36b124f6ffc0716dc0dc93c407b975d1" kindref="member">Reserved4</ref><sp/>=<sp/>1;</highlight></codeline>
<codeline lineno="278"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a8f29efd96df6abb8cd6353787eebca04" kindref="member">CardType</ref><sp/>==<sp/><ref refid="bsp___s_d_8h_1ae52e14c1b95e5162f4fe492d9b1b0fec" kindref="member">V2HC</ref>)<sp/>{</highlight></codeline>
<codeline lineno="279"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>7<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="280"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1ab2341b019f101f621817ab7f13f85321" kindref="member">DeviceSize</ref><sp/>=<sp/>(<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref>)<sp/>(CSD_Tab[8])<sp/>*<sp/>256;</highlight></codeline>
<codeline lineno="281"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>8<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="282"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1ab2341b019f101f621817ab7f13f85321" kindref="member">DeviceSize</ref><sp/>+=<sp/>CSD_Tab[9];}</highlight></codeline>
<codeline lineno="283"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a4e5da8ba91229ac3ccb2d3f11f1ab4bf" kindref="member">Capacity</ref><sp/>=<sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1a9893f18007a0897aa45869e703f4cc2a" kindref="member">CSD</ref>.<ref refid="struct_m_s_d___c_s_d_1ab2341b019f101f621817ab7f13f85321" kindref="member">DeviceSize</ref><sp/>*<sp/><ref refid="bsp___s_d_8h_1a5bda0c70032a9b8625ae5a3c55d21c38" kindref="member">MSD_BLOCKSIZE</ref><sp/>*<sp/>1024;</highlight></codeline>
<codeline lineno="284"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1aadaf986217b3c403be1cc4a2fd2fd148" kindref="member">BlockSize</ref><sp/>=<sp/><ref refid="bsp___s_d_8h_1a5bda0c70032a9b8625ae5a3c55d21c38" kindref="member">MSD_BLOCKSIZE</ref>;</highlight></codeline>
<codeline lineno="285"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>0<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="286"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509" kindref="member">CID</ref>.<ref refid="struct_m_s_d___c_i_d_1a5ae9ad5d65182a34e20b87fa2752010e" kindref="member">ManufacturerID</ref><sp/>=<sp/>CID_Tab[0];</highlight></codeline>
<codeline lineno="287"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>1<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="288"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509" kindref="member">CID</ref>.<ref refid="struct_m_s_d___c_i_d_1acd04644e46f7ceca82bbe9bdc80f1d53" kindref="member">OEM_AppliID</ref><sp/>=<sp/>CID_Tab[1]<sp/>&lt;&lt;<sp/>8;</highlight></codeline>
<codeline lineno="289"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>2<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="290"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509" kindref="member">CID</ref>.<ref refid="struct_m_s_d___c_i_d_1acd04644e46f7ceca82bbe9bdc80f1d53" kindref="member">OEM_AppliID</ref><sp/>|=<sp/>CID_Tab[2];</highlight></codeline>
<codeline lineno="291"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>3<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="292"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509" kindref="member">CID</ref>.<ref refid="struct_m_s_d___c_i_d_1ab7e359a09fecf1fa2d1b18e708dcc292" kindref="member">ProdName1</ref><sp/>=<sp/>CID_Tab[3]<sp/>&lt;&lt;<sp/>24;</highlight></codeline>
<codeline lineno="293"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>4<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="294"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509" kindref="member">CID</ref>.<ref refid="struct_m_s_d___c_i_d_1ab7e359a09fecf1fa2d1b18e708dcc292" kindref="member">ProdName1</ref><sp/>|=<sp/>CID_Tab[4]<sp/>&lt;&lt;<sp/>16;</highlight></codeline>
<codeline lineno="295"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>5<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="296"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509" kindref="member">CID</ref>.<ref refid="struct_m_s_d___c_i_d_1ab7e359a09fecf1fa2d1b18e708dcc292" kindref="member">ProdName1</ref><sp/>|=<sp/>CID_Tab[5]<sp/>&lt;&lt;<sp/>8;</highlight></codeline>
<codeline lineno="297"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>6<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="298"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509" kindref="member">CID</ref>.<ref refid="struct_m_s_d___c_i_d_1ab7e359a09fecf1fa2d1b18e708dcc292" kindref="member">ProdName1</ref><sp/>|=<sp/>CID_Tab[6];</highlight></codeline>
<codeline lineno="299"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>7<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="300"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509" kindref="member">CID</ref>.<ref refid="struct_m_s_d___c_i_d_1ad0d7606f38a0140075647fb3f66614ea" kindref="member">ProdName2</ref><sp/>=<sp/>CID_Tab[7];</highlight></codeline>
<codeline lineno="301"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>8<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="302"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509" kindref="member">CID</ref>.<ref refid="struct_m_s_d___c_i_d_1acd9fbacd30fdff0eef7d885ad4ec438b" kindref="member">ProdRev</ref><sp/>=<sp/>CID_Tab[8];</highlight></codeline>
<codeline lineno="303"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>9<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="304"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509" kindref="member">CID</ref>.<ref refid="struct_m_s_d___c_i_d_1a0c5c88d258f73f17a496f3b92d9cfd5c" kindref="member">ProdSN</ref><sp/>=<sp/>CID_Tab[9]<sp/>&lt;&lt;<sp/>24;</highlight></codeline>
<codeline lineno="305"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>10<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="306"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509" kindref="member">CID</ref>.<ref refid="struct_m_s_d___c_i_d_1a0c5c88d258f73f17a496f3b92d9cfd5c" kindref="member">ProdSN</ref><sp/>|=<sp/>CID_Tab[10]<sp/>&lt;&lt;<sp/>16;</highlight></codeline>
<codeline lineno="307"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>11<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="308"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509" kindref="member">CID</ref>.<ref refid="struct_m_s_d___c_i_d_1a0c5c88d258f73f17a496f3b92d9cfd5c" kindref="member">ProdSN</ref><sp/>|=<sp/>CID_Tab[11]<sp/>&lt;&lt;<sp/>8;</highlight></codeline>
<codeline lineno="309"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>12<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="310"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509" kindref="member">CID</ref>.<ref refid="struct_m_s_d___c_i_d_1a0c5c88d258f73f17a496f3b92d9cfd5c" kindref="member">ProdSN</ref><sp/>|=<sp/>CID_Tab[12];</highlight></codeline>
<codeline lineno="311"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>13<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="312"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509" kindref="member">CID</ref>.<ref refid="struct_m_s_d___c_i_d_1a1be2e4d82c95f2d158ce5f5157a7fd5b" kindref="member">Reserved1</ref><sp/>|=<sp/>(CID_Tab[13]<sp/>&amp;0xF0)<sp/>&gt;&gt;<sp/>4;</highlight></codeline>
<codeline lineno="313"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>14<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="314"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509" kindref="member">CID</ref>.<ref refid="struct_m_s_d___c_i_d_1a55015d75002e50ff4f23cd19c9b5c90a" kindref="member">ManufactDate</ref><sp/>=<sp/>(CID_Tab[13]<sp/>&amp;0x0F)<sp/>&lt;&lt;<sp/>8;</highlight></codeline>
<codeline lineno="315"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>15<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="316"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509" kindref="member">CID</ref>.<ref refid="struct_m_s_d___c_i_d_1a55015d75002e50ff4f23cd19c9b5c90a" kindref="member">ManufactDate</ref><sp/>|=<sp/>CID_Tab[14];</highlight></codeline>
<codeline lineno="317"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*<sp/>Byte<sp/>16<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="318"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509" kindref="member">CID</ref>.<ref refid="struct_m_s_d___c_i_d_1a61fe89c386eb7bf7b8e2ba44545168de" kindref="member">CID_CRC</ref><sp/>=<sp/>(CID_Tab[15]<sp/>&amp;0xFE)<sp/>&gt;&gt;<sp/>1;</highlight></codeline>
<codeline lineno="319"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1aab1487286ac43dc9110e65b52c850de4" kindref="member">SD0_CardInfo</ref>-&gt;<ref refid="struct_m_s_d___c_a_r_d_i_n_f_o_1ab267c45d70fa28f9ff17829fa8753509" kindref="member">CID</ref>.<ref refid="struct_m_s_d___c_i_d_1aac8e73e305ea1ff29ae195a6c0a63e05" kindref="member">Reserved2</ref><sp/>=<sp/>1;</highlight></codeline>
<codeline lineno="320"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0;}</highlight></codeline>
<codeline lineno="321"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="329" refid="classbsp___s_d_1af203b65e00206d38ef14640f7b7242b6" refkind="member"><highlight class="comment"></highlight><highlight class="normal"><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/><ref refid="classbsp___s_d_1af203b65e00206d38ef14640f7b7242b6" kindref="member">bsp_SD::SD_WriteDisk</ref>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>*<sp/>buf,<sp/><ref refid="varint_8h_1afaa62991928fb9fb18ff0db62a040aba" kindref="member">u32</ref><sp/>sector,<sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>cnt){</highlight></codeline>
<codeline lineno="330"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>r1;</highlight></codeline>
<codeline lineno="331"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4" kindref="member">SD_TYPE</ref><sp/>!=<sp/><ref refid="bsp___s_d_8h_1ae52e14c1b95e5162f4fe492d9b1b0fec" kindref="member">V2HC</ref>)<sp/>sector<sp/>*=<sp/>512;<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//转换为字节地址</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="332"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(cnt<sp/>==<sp/>1){</highlight></codeline>
<codeline lineno="333"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1a252300302c6f7960df547a7f5c25be85" kindref="member">CMD24</ref>,<sp/>sector,<sp/>0X01);<sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//读命令</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="334"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(r1<sp/>==<sp/>0)<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//指令发送成功</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="335"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1a2df843979bb4c764422a37b255c184ea" kindref="member">SD_SendBlock</ref>(buf,<sp/>0xFE);}<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//写512个字节</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="336"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="337"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4" kindref="member">SD_TYPE</ref><sp/>!=<sp/><ref refid="bsp___s_d_8h_1ab5a7d5477e55758bde614bda3250a93c" kindref="member">MMC</ref>)<sp/>{</highlight></codeline>
<codeline lineno="338"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1a78289a7a85ffcfddd626694105dc0780" kindref="member">CMD55</ref>,<sp/>0,<sp/>0X01);</highlight></codeline>
<codeline lineno="339"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1a14506e981f38b6177bc36f72c2ca18b1" kindref="member">CMD23</ref>,<sp/>cnt,<sp/>0X01);}<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//发送指令</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="340"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1aee2c673fba987178f4642531fdeefe9e" kindref="member">CMD25</ref>,<sp/>sector,<sp/>0X01);<sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//连续读命令</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="341"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(r1<sp/>==<sp/>0)<sp/>{</highlight></codeline>
<codeline lineno="342"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">do</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="343"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1a2df843979bb4c764422a37b255c184ea" kindref="member">SD_SendBlock</ref>(buf,<sp/>0xFC);<sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//接收512个字节</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="344"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>buf<sp/>+=<sp/>512;}</highlight><highlight class="keywordflow">while</highlight><highlight class="normal">(--cnt<sp/>&amp;&amp;<sp/>r1<sp/>==<sp/>0);</highlight></codeline>
<codeline lineno="345"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1a2df843979bb4c764422a37b255c184ea" kindref="member">SD_SendBlock</ref>(0,<sp/>0xFD);}}<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//接收512个字节</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="346"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a3250f411819ed57543b0326d13faddc6" kindref="member">SD_CS</ref>(0);<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//取消片选</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="347"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>r1;}</highlight></codeline>
<codeline lineno="348"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="356" refid="classbsp___s_d_1a96f32b50ec777acc0dd819150cd28937" refkind="member"><highlight class="comment"></highlight><highlight class="normal"><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/><ref refid="classbsp___s_d_1a96f32b50ec777acc0dd819150cd28937" kindref="member">bsp_SD::SD_ReadDisk</ref>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>*<sp/>buf,<sp/><ref refid="varint_8h_1afaa62991928fb9fb18ff0db62a040aba" kindref="member">u32</ref><sp/>sector,<sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>cnt){</highlight></codeline>
<codeline lineno="357"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>r1;</highlight></codeline>
<codeline lineno="358"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(<ref refid="classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4" kindref="member">SD_TYPE</ref><sp/>!=<sp/><ref refid="bsp___s_d_8h_1ae52e14c1b95e5162f4fe492d9b1b0fec" kindref="member">V2HC</ref>)<sp/>sector<sp/>&lt;&lt;=<sp/>9;<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//转换为字节地址</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="359"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(cnt<sp/>==<sp/>1)<sp/>{</highlight></codeline>
<codeline lineno="360"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1a6bbfe7dc16a19b7f40efcf554b5666ad" kindref="member">CMD17</ref>,<sp/>sector,<sp/>0X01);<sp/><sp/><sp/></highlight><highlight class="comment">//读命令</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="361"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(r1<sp/>==<sp/>0)<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//指令发送成功</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="362"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1a242ec4ccd88203b6691cf4ae1e77fdfe" kindref="member">SD_ReceiveData</ref>(buf,<sp/>512);}<sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//接收512个字节</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="363"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="364"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1a3d32c27a6be061b865ba539127278f14" kindref="member">CMD18</ref>,<sp/>sector,<sp/>0X01);<sp/><sp/><sp/></highlight><highlight class="comment">//连续读命令</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="365"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">do</highlight><highlight class="normal"><sp/>{</highlight></codeline>
<codeline lineno="366"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>r1<sp/>=<sp/><ref refid="classbsp___s_d_1a242ec4ccd88203b6691cf4ae1e77fdfe" kindref="member">SD_ReceiveData</ref>(buf,<sp/>512);<sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//接收512个字节<sp/><sp/><sp/></highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="367"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>buf<sp/>+=<sp/>512;}</highlight></codeline>
<codeline lineno="368"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">while</highlight><highlight class="normal">(--cnt<sp/>&amp;&amp;<sp/>r1<sp/>==<sp/>0);</highlight></codeline>
<codeline lineno="369"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1ab799d7d8ebaf4c304bf62722ba10ba37" kindref="member">SD_sendcmd</ref>(<ref refid="bsp___s_d_8h_1a8d6283c9b060afbaa0e6d1ff7e5ea7b8" kindref="member">CMD12</ref>,<sp/>0,<sp/>0X01);}<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//发送停止命令</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="370"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a3250f411819ed57543b0326d13faddc6" kindref="member">SD_CS</ref>(0);<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//取消片选</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="371"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>r1;}</highlight></codeline>
<codeline lineno="372"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="373" refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" refkind="member"><highlight class="normal"><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/><ref refid="classbsp___s_d_1a36d1110bcbe2404ddd5796dc078ce1f5" kindref="member">bsp_SD::spi_readwrite</ref>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>Txdata){</highlight></codeline>
<codeline lineno="374"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>Rxdata;</highlight></codeline>
<codeline lineno="375"><highlight class="normal"><sp/><sp/><sp/><sp/>HAL_SPI_TransmitReceive(<ref refid="classbsp___s_d_1a227c7eb7a28e89d6adfda085a4217992" kindref="member">hspi</ref>,<sp/>&amp;Txdata,<sp/>&amp;Rxdata,<sp/>1,<sp/>0xFF);</highlight></codeline>
<codeline lineno="376"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>Rxdata;}</highlight></codeline>
<codeline lineno="377"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="383" refid="classbsp___s_d_1a5ed95b95b141ee21d83ca70c1b06a31a" refkind="member"><highlight class="comment"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classbsp___s_d_1a5ed95b95b141ee21d83ca70c1b06a31a" kindref="member">bsp_SD::SPI_setspeed</ref>(<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>speed){</highlight></codeline>
<codeline lineno="384"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a227c7eb7a28e89d6adfda085a4217992" kindref="member">hspi</ref>-&gt;Init.BaudRatePrescaler<sp/>=<sp/>speed;}</highlight></codeline>
<codeline lineno="385"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="393" refid="classbsp___s_d_1a164f0bb03133464f2da485f362a52718" refkind="member"><highlight class="comment"></highlight><highlight class="normal"><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/><ref refid="classbsp___s_d_1a164f0bb03133464f2da485f362a52718" kindref="member">bsp_SD::offsetWrite</ref>(<ref refid="varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234" kindref="member">u64</ref><sp/>offset,<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*<sp/>dat,<ref refid="varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234" kindref="member">u64</ref><sp/>datlen)<sp/>{</highlight></codeline>
<codeline lineno="394"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>sectorBuff[512]<sp/>=<sp/>{<sp/>0<sp/>};</highlight></codeline>
<codeline lineno="395"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234" kindref="member">u64</ref><sp/>sectorBuffptr<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="396"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="397"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234" kindref="member">u64</ref><sp/>sectorSour<sp/><sp/><sp/><sp/><sp/><sp/>=<sp/>offset<sp/>/<sp/>512;<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>起始扇</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="398"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234" kindref="member">u64</ref><sp/>sectorSourlen<sp/><sp/><sp/>=<sp/>offset<sp/>%<sp/>512;<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>起始扇内位</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="399"><highlight class="normal"></highlight></codeline>
<codeline lineno="400"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>填入数据</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="401"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a96f32b50ec777acc0dd819150cd28937" kindref="member">SD_ReadDisk</ref>(sectorBuff,sectorSour,1);</highlight></codeline>
<codeline lineno="402"><highlight class="normal"><sp/><sp/><sp/><sp/>sectorBuffptr<sp/>=<sp/>sectorSourlen;</highlight></codeline>
<codeline lineno="403"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(<ref refid="varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234" kindref="member">u64</ref><sp/>i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>datlen;<sp/>i++)<sp/>{</highlight></codeline>
<codeline lineno="404"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>写入数据</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="405"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sectorBuff[sectorBuffptr]<sp/>=<sp/>dat[i];</highlight></codeline>
<codeline lineno="406"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sectorBuffptr++;</highlight></codeline>
<codeline lineno="407"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>扇区回写</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="408"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(sectorBuffptr<sp/>==<sp/>512<sp/>||<sp/>i<sp/>==<sp/>datlen<sp/>-<sp/>1)<sp/>{</highlight></codeline>
<codeline lineno="409"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1af203b65e00206d38ef14640f7b7242b6" kindref="member">SD_WriteDisk</ref>(sectorBuff,sectorSour,1);</highlight></codeline>
<codeline lineno="410"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sectorBuffptr<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="411"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sectorSour++;</highlight></codeline>
<codeline lineno="412"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(i<sp/>!=<sp/>datlen<sp/>-<sp/>1)<ref refid="classbsp___s_d_1a96f32b50ec777acc0dd819150cd28937" kindref="member">SD_ReadDisk</ref>(sectorBuff,sectorSour,1);}}</highlight></codeline>
<codeline lineno="413"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0;</highlight></codeline>
<codeline lineno="414"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="415"><highlight class="normal"></highlight><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight></codeline>
<codeline lineno="423" refid="classbsp___s_d_1a1c78e6f5a72f3bdec600a52331dd4d20" refkind="member"><highlight class="comment"></highlight><highlight class="normal"><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/><ref refid="classbsp___s_d_1a1c78e6f5a72f3bdec600a52331dd4d20" kindref="member">bsp_SD::offsetRead</ref>(<ref refid="varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234" kindref="member">u64</ref><sp/>offset,<ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref>*<sp/>dat,<ref refid="varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234" kindref="member">u64</ref><sp/>datlen)<sp/>{</highlight></codeline>
<codeline lineno="424"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca" kindref="member">u8</ref><sp/>sectorBuff[512]<sp/>=<sp/>{<sp/>0<sp/>};</highlight></codeline>
<codeline lineno="425"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234" kindref="member">u64</ref><sp/>sectorBuffptr<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="426"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="427"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234" kindref="member">u64</ref><sp/>sectorSour<sp/><sp/><sp/><sp/><sp/><sp/>=<sp/>offset<sp/>/<sp/>512;<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>起始扇</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="428"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234" kindref="member">u64</ref><sp/>sectorSourlen<sp/><sp/><sp/>=<sp/>offset<sp/>%<sp/>512;<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>起始扇内位</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="429"><highlight class="normal"></highlight></codeline>
<codeline lineno="430"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>填入数据</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="431"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a96f32b50ec777acc0dd819150cd28937" kindref="member">SD_ReadDisk</ref>(sectorBuff,sectorSour,1);</highlight></codeline>
<codeline lineno="432"><highlight class="normal"><sp/><sp/><sp/><sp/>sectorBuffptr<sp/>=<sp/>sectorSourlen;</highlight></codeline>
<codeline lineno="433"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(<ref refid="varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234" kindref="member">u64</ref><sp/>i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>datlen;<sp/>i++)<sp/>{</highlight></codeline>
<codeline lineno="434"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>写入数据</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="435"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>dat[i]=sectorBuff[sectorBuffptr];</highlight></codeline>
<codeline lineno="436"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sectorBuffptr++;</highlight></codeline>
<codeline lineno="437"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/><sp/>扇区回写</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="438"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(sectorBuffptr<sp/>==<sp/>512<sp/>||<sp/>i<sp/>==<sp/>datlen<sp/>-<sp/>1)<sp/>{</highlight></codeline>
<codeline lineno="439"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sectorBuffptr<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="440"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>sectorSour++;</highlight></codeline>
<codeline lineno="441"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(i<sp/>!=<sp/>datlen<sp/>-<sp/>1)<ref refid="classbsp___s_d_1a96f32b50ec777acc0dd819150cd28937" kindref="member">SD_ReadDisk</ref>(sectorBuff,sectorSour,1);}}</highlight></codeline>
<codeline lineno="442"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>0;}</highlight></codeline>
<codeline lineno="444"><highlight class="comment">//----------------------------------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="445"><highlight class="normal"></highlight><highlight class="comment">//<sp/><sp/>构造函数</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="446"><highlight class="normal"></highlight><highlight class="comment">//<sp/><sp/></highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="447" refid="classbsp___s_d_1a9f5ace0a335acc31271c9d131cd6d306" refkind="member"><highlight class="normal"><ref refid="classbsp___s_d_1a9f5ace0a335acc31271c9d131cd6d306" kindref="member">bsp_SD::bsp_SD</ref>(</highlight></codeline>
<codeline lineno="448"><highlight class="normal"><sp/><sp/><sp/><sp/>SPI_HandleTypeDef<sp/>*hspi,</highlight></codeline>
<codeline lineno="449"><highlight class="normal"><sp/><sp/><sp/><sp/>GPIO_TypeDef<sp/>*GPIOx_CS,</highlight></codeline>
<codeline lineno="450"><highlight class="normal"><sp/><sp/><sp/><sp/>uint16_t<sp/>GPIO_Pin_CS){</highlight></codeline>
<codeline lineno="451"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a227c7eb7a28e89d6adfda085a4217992" kindref="member">bsp_SD::hspi</ref>=<ref refid="classbsp___s_d_1a227c7eb7a28e89d6adfda085a4217992" kindref="member">hspi</ref>;</highlight></codeline>
<codeline lineno="452"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1ad7788d2e62152a2fb1a6b307fa902180" kindref="member">bsp_SD::GPIOx_CS</ref>=<ref refid="classbsp___s_d_1ad7788d2e62152a2fb1a6b307fa902180" kindref="member">GPIOx_CS</ref>;</highlight></codeline>
<codeline lineno="453"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a4525b5c0f62e39af1c9adb9a9c22239f" kindref="member">bsp_SD::GPIO_Pin_CS</ref>=<ref refid="classbsp___s_d_1a4525b5c0f62e39af1c9adb9a9c22239f" kindref="member">GPIO_Pin_CS</ref>;</highlight></codeline>
<codeline lineno="454"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a6c68fa82294f18968a92719931cff5fa" kindref="member">bsp_SD::DFF</ref>=0xFF;</highlight></codeline>
<codeline lineno="455"><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="classbsp___s_d_1a2350601b90ad75bd434094a9c31475c4" kindref="member">bsp_SD::SD_TYPE</ref>=0x00;}</highlight></codeline>
</programlisting>
<location file="D:/gitt/MicrochipFor32/bsp_Device/bsp_SD.cpp"/>
</compounddef>
</doxygen>