⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmc_8c.html

📁 MP3 Player Source Code
💻 HTML
📖 第 1 页 / 共 5 页
字号:
00208   <span class="comment">/* print out card ident register</span>00209 <span class="comment">  for (c=0; c&lt;30; c++){</span>00210 <span class="comment">    if ((c&amp;0x03)==0) ConsolePutChar(' ');</span>00211 <span class="comment">    ConsolePutHex8(diskSect.raw.buf[c]);</span>00212 <span class="comment">  }</span>00213 <span class="comment">  */</span>00214 00215   <span class="keywordflow">return</span> 0; <span class="comment">/* All OK return */</span>00216 }</div></pre><p>Here is the call graph for this function:<p><center><img src="mmc_8c_a3_cgraph.png" border="0" usemap="#mmc_8c_a3_cgraph_map" alt=""></center><map name="mmc_8c_a3_cgraph_map"><area href="mmc_8c.html#a0" shape="rect" coords="212,55,308,78" alt=""><area href="mmc_8c.html#a2" shape="rect" coords="217,102,302,126" alt=""><area href="mmc_8c.html#a1" shape="rect" coords="205,7,314,31" alt=""><area href="board_8h.html#a48" shape="rect" coords="366,7,441,31" alt=""><area href="board_8c.html#a1" shape="rect" coords="365,55,442,78" alt=""></map>    </td>  </tr></table><a class="anchor" name="a5" doxytag="mmc.c::InitMMC" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"> Public unsigned char InitMMC           </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="mdname1" valign="top" nowrap>          </td>          <td class="md" valign="top">&nbsp;)&nbsp;</td>          <td class="md" nowrap></td>        </tr>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p>Start-up the MMC card. <p><ul><li>Returns 0 when successful and supports seek-before-read</li><li>Returns 0x0e when successful but no support for seek-before-read</li><li>Returns 1 when MMC card is not found</li><li>Returns 2 when MMC card seems to be present but can't be read from. </li></ul><p>Definition at line <a class="el" href="mmc_8c-source.html#l00249">249</a> of file <a class="el" href="mmc_8c-source.html">mmc.c</a>.<p>References <a class="el" href="buffer_8h-source.html#l00107">DiskBlock::Raw::buf</a>, <a class="el" href="board_8c-source.html#l00035">Delay()</a>, <a class="el" href="buffer_8c-source.html#l00010">diskSect</a>, <a class="el" href="mmc_8c-source.html#l00181">GetStorageInformation()</a>, <a class="el" href="board_8h-source.html#l00236">Temp::i</a>, <a class="el" href="board_8h-source.html#l00159">MMC_NOT_SELECTED</a>, <a class="el" href="board_8h-source.html#l00150">MMC_OFF</a>, <a class="el" href="board_8h-source.html#l00153">MMC_XCS</a>, <a class="el" href="mmc_8c-source.html#l00019">MmcCommand()</a>, <a class="el" href="board_8h-source.html#l00147">NO</a>, <a class="el" href="board_8h-source.html#l00262">Public</a>, <a class="el" href="unionDiskBlock.html#o1">DiskBlock::raw</a>, <a class="el" href="mmc_8c-source.html#l00477">ReadPhysicalSector()</a>, <a class="el" href="mmc_8c-source.html#l00221">RebootMMC()</a>, <a class="el" href="mmc_8c-source.html#l00431">SeekSector()</a>, <a class="el" href="board_8h-source.html#l00217">SPIPutChar</a>, <a class="el" href="board_8h-source.html#l00220">SPIPutCharWithoutWaiting</a>, <a class="el" href="board_8h-source.html#l00214">SPIWait</a>, <a class="el" href="board_8c.html#a0">temp</a>, and <a class="el" href="board_8h-source.html#l00144">YES</a>.<p>Referenced by <a class="el" href="storage_8c-source.html#l00043">InitStorage()</a>, and <a class="el" href="filesys_8c-source.html#l00610">OpenFile()</a>.<p><pre class="fragment"><div>00249                               {00250   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c;00251 00252   <span class="comment">//Switch off the MMC power supply</span>00253   <a class="code" href="board_8h.html#a28">MMC_OFF</a> = <a class="code" href="board_8h.html#a26">YES</a>; 00254   ConsoleWrite (<span class="stringliteral">"Init: MMC\r"</span>);00255   <a class="code" href="board_8h.html#a49">Delay</a>(100);00256 00257   <span class="comment">//Switch on the MMC power supply</span>00258   <a class="code" href="board_8h.html#a28">MMC_OFF</a> = <a class="code" href="board_8h.html#a27">NO</a>;00259   <a class="code" href="board_8h.html#a49">Delay</a>(100);00260 00261   <span class="comment">/* Allow MMC some time and clock cycles to reset */</span>00262   <span class="keywordflow">for</span> (c=0; c&lt;200; c++){    00263     <a class="code" href="board_8h.html#a43">SPIPutCharWithoutWaiting</a>(0xff);00264     <a class="code" href="board_8h.html#a41">SPIWait</a>();00265   }00266   <a class="code" href="board_8h.html#a49">Delay</a>(20);00267 00268   <span class="keywordflow">if</span> (<a class="code" href="mmc_8c.html#a4">RebootMMC</a>()) <span class="keywordflow">return</span> 1; <span class="comment">//not able to powerup;</span>00269   <span class="comment">//An existing MMC card should be able to respond now.</span>00270 00271   <a class="code" href="mmc_8c.html#a3">GetStorageInformation</a>();00272   00273   <span class="comment">/* Set Block Size of 512 bytes (2 == 512 &lt;&lt; 8) */</span>00274   <span class="keywordflow">if</span> ((c=<a class="code" href="mmc_8c.html#a0">MmcCommand</a>(0x50,0,0,2,0))) <span class="keywordflow">return</span> c|0x80; <span class="comment">/* blocksize error */</span>00275   00276   ConsoleWrite(<span class="stringliteral">"Scanning storage... "</span>);00277 00278   <span class="comment">/* Check if MMC supports interrupted data transfer */</span>00279   <span class="comment">/* This does a simple checksum check to see if interrupted and </span>00280 <span class="comment">   * non-interrupted read blocks are the same. */</span>00281   <span class="comment">/* This could be a function, so it is in braces for clarity purposes */</span>00282   {  00283     <span class="keywordflow">if</span> (<a class="code" href="mmc_8h.html#a2">SeekSector</a>(0)) <span class="keywordflow">return</span> 2; <span class="comment">//Storage powerup failure    </span>00284     <span class="keywordflow">if</span> (<a class="code" href="mmc_8c.html#a9">ReadPhysicalSector</a>()) <span class="keywordflow">return</span> 2; <span class="comment">//Storage powerup failure</span>00285 00286     <a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o1">i</a> = <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o1">raw</a>.<a class="code" href="structDiskBlock_1_1Raw.html#o0">buf</a>[511];00287     <span class="keywordflow">for</span> (c=0; c&lt;250; c++){00288       <a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o1">i</a> += <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o1">raw</a>.<a class="code" href="structDiskBlock_1_1Raw.html#o0">buf</a>[c];00289     }00290     00291     ConsoleWrite(<span class="stringliteral">"Testing for seek mode..."</span>);00292     <span class="keywordflow">if</span> (<a class="code" href="mmc_8h.html#a2">SeekSector</a>(0)) <span class="keywordflow">return</span> 2;<span class="comment">//Storage powerup failure</span>00293     00294     <span class="comment">/* Send some extra SPI clocks */</span>00295     <a class="code" href="board_8h.html#a29">MMC_XCS</a> = <a class="code" href="board_8h.html#a31">MMC_NOT_SELECTED</a>;00296     <a class="code" href="board_8h.html#a43">SPIPutCharWithoutWaiting</a>(0xff);00297     <span class="keywordflow">for</span> (c=0; c&lt;100; c++){00298       <a class="code" href="board_8h.html#a42">SPIPutChar</a>(0xff);00299     }00300     <a class="code" href="board_8h.html#a41">SPIWait</a>();00301 00302     <span class="keywordflow">if</span> (<a class="code" href="mmc_8c.html#a9">ReadPhysicalSector</a>()){00303       ConsoleWrite(<span class="stringliteral">"Interrupted read failed.\r"</span>);00304       ConsoleWrite(<span class="stringliteral">"Using compatibility mode.\r"</span>);00305       <span class="keywordflow">return</span> 0x0e; <span class="comment">//ok but no support for seek-before-read</span>00306       00307     }<span class="keywordflow">else</span>{      00308       <span class="comment">//Check if received data was same</span>00309       <a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o1">i</a> -= <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o1">raw</a>.<a class="code" href="structDiskBlock_1_1Raw.html#o0">buf</a>[511];00310       <span class="keywordflow">for</span> (c=0; c&lt;250; c++){00311         <a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o1">i</a> -= <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o1">raw</a>.<a class="code" href="structDiskBlock_1_1Raw.html#o0">buf</a>[c];00312       }00313     }00314     00315     <span class="keywordflow">if</span> (<a class="code" href="board_8c.html#a0">temp</a>.<a class="code" href="unionTemp.html#o1">i</a>) { <span class="comment">/* Checksum does not match */</span>00316       ConsoleWrite(<span class="stringliteral">"This MMC has no support for interrupted read. "</span>);00317       ConsoleWrite(<span class="stringliteral">"Using compatibility mode.\r"</span>);00318       <span class="keywordflow">return</span> 0x0e; <span class="comment">//ok but no support for seek-before-read</span>00319     }00320     00321     ConsoleWrite(<span class="stringliteral">"\rInitMMC ok.\r"</span>);00322   }00323 00324   <span class="comment">/* All OK return */</span>00325   <span class="keywordflow">return</span> 0; <span class="comment">//ok and MMC supports seek-before-read</span>00326 00327 }</div></pre><p>Here is the call graph for this function:<p><center><img src="mmc_8c_a5_cgraph.png" border="0" usemap="#mmc_8c_a5_cgraph_map" alt=""></center><map name="mmc_8c_a5_cgraph_map"><area href="board_8h.html#a49" shape="rect" coords="528,34,568,58" alt=""><area href="mmc_8c.html#a3" shape="rect" coords="276,257,412,281" alt=""><area href="mmc_8c.html#a0" shape="rect" coords="500,161,596,185" alt=""><area href="mmc_8c.html#a9" shape="rect" coords="281,306,406,330" alt=""><area href="mmc_8c.html#a4" shape="rect" coords="304,60,384,84" alt=""><area href="mmc_8h.html#a2" shape="rect" coords="121,158,199,182" alt=""><area href="mmc_8c.html#a2" shape="rect" coords="505,209,590,233" alt=""><area href="mmc_8c.html#a1" shape="rect" coords="493,257,602,281" alt=""><area href="board_8h.html#a48" shape="rect" coords="656,257,730,281" alt=""><area href="mmc_8c.html#a6" shape="rect" coords="490,356,605,380" alt=""><area href="mmc_8c.html#a7" shape="rect" coords="247,158,441,182" alt=""></map>    </td>  </tr></table><a class="anchor" name="a0" doxytag="mmc.c::MmcCommand" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"> unsigned char MmcCommand           </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top">unsigned char&nbsp;</td>          <td class="mdname" nowrap> <em>c1</em>, </td>        </tr>        <tr>          <td class="md" nowrap align="right"></td>          <td></td>          <td class="md" nowrap>unsigned char&nbsp;</td>          <td class="mdname" nowrap> <em>c2</em>, </td>        </tr>        <tr>          <td class="md" nowrap align="right"></td>          <td></td>          <td class="md" nowrap>unsigned char&nbsp;</td>          <td class="mdname" nowrap> <em>c3</em>, </td>        </tr>        <tr>          <td class="md" nowrap align="right"></td>          <td></td>          <td class="md" nowrap>unsigned char&nbsp;</td>          <td class="mdname" nowrap> <em>c4</em>, </td>        </tr>        <tr>          <td class="md" nowrap align="right"></td>          <td></td>          <td class="md" nowrap>unsigned char&nbsp;</td>          <td class="mdname" nowrap> <em>c5</em></td>        </tr>        <tr>          <td></td>          <td class="md">)&nbsp;</td>          <td class="md" colspan="2"></td>        </tr>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -