415 lines
114 KiB
XML
415 lines
114 KiB
XML
<?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/>"<ref refid="bsp___s_d_8h" kindref="compound">bsp_SD.h</ref>"</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/>>><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/>>><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/>>><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/>&<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/><<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/><<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/>&&<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/>&&<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/>&&<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/><<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/>&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/><=<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/>&&<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/>&&<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/><<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/>&<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/>&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/><<<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/><<<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/>&15)<sp/>+<sp/>((csd[10]<sp/>&128)<sp/>>><sp/>7)<sp/>+<sp/>((csd[9]<sp/>&3)<sp/><<<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/>>><sp/>6)<sp/>+<sp/>((<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref>)<sp/>csd[7]<sp/><<<sp/>2)<sp/>+<sp/>((<ref refid="varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa" kindref="member">u16</ref>)<sp/>(csd[6]<sp/>&3)<sp/><<<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/><<<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>-><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/>&0xC0)<sp/>>><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>-><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/>&0x3C)<sp/>>><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>-><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/>&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>-><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>-><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>-><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>-><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/><<<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>-><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/>&0xF0)<sp/>>><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>-><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/>&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>-><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/>&0x80)<sp/>>><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>-><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/>&0x40)<sp/>>><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>-><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/>&0x20)<sp/>>><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>-><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/>&0x10)<sp/>>><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>-><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>-><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/>&0x03)<sp/><<<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>-><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/><<<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>-><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/>&0xC0)<sp/>>><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>-><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/>&0x38)<sp/>>><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>-><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/>&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>-><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/>&0xE0)<sp/>>><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>-><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/>&0x1C)<sp/>>><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>-><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/>&0x03)<sp/><<<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>-><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/>&0x80)<sp/>>><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>-><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/>&0x7C)<sp/>>><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>-><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/>&0x03)<sp/><<<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>-><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/>&0xE0)<sp/>>><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>-><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/>&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>-><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/>&0x80)<sp/>>><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>-><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/>&0x60)<sp/>>><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>-><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/>&0x1C)<sp/>>><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>-><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/>&0x03)<sp/><<<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>-><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/>&0xc0)<sp/>>><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>-><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/>&0x20)<sp/>>><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>-><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>-><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/>&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>-><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/>&0x80)<sp/>>><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>-><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/>&0x40)<sp/>>><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>-><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/>&0x20)<sp/>>><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>-><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/>&0x10)<sp/>>><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>-><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/>&0x0C)<sp/>>><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>-><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/>&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>-><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/>&0xFE)<sp/>>><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>-><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>-><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>-><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>-><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>-><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>-><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>-><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>-><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>-><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/><<<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>-><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>-><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/><<<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>-><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/><<<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>-><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/><<<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>-><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>-><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>-><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>-><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/><<<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>-><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/><<<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>-><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/><<<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>-><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>-><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/>&0xF0)<sp/>>><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>-><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/>&0x0F)<sp/><<<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>-><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>-><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/>&0xFE)<sp/>>><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>-><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/>&&<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/><<=<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/>&&<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/>&Txdata,<sp/>&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>->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/><<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/><<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>
|