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