DDZZ669 发表于 2020-10-17 21:38

【GD32450I-EVAL】+10SD卡测试

本帖最后由 DDZZ669 于 2020-10-17 21:37 编辑

<p cid="n0" mdtype="paragraph">SD卡,即安全数码卡(Secure Digital ),GD32的SDIO接口可以用来驱动SD卡,另外,SDIO还定义了SD I/O卡、多媒体卡(MMC)和CE-ATA卡主机接口。</p>

<p cid="n2" mdtype="paragraph">&nbsp;</p>

<h1 cid="n3" mdtype="heading">1 SD卡基础介绍</h1>

<h2 cid="n4" mdtype="heading">1.1 接口</h2>

<p cid="n5" mdtype="paragraph">板子上的SD卡接口原理图:</p>

<p cid="n5" mdtype="paragraph"></p>

<h2 cid="n8" mdtype="heading">1.2 SD卡与microSD卡</h2>

<p cid="n9" mdtype="paragraph">microSD卡又叫TF卡,是SD卡的缩小版,平时用的较多也是microSD,也经常习惯把microSD卡叫做SD卡。</p>

<p cid="n9" mdtype="paragraph"></p>

<h2 cid="n11" mdtype="heading">1.3 容量</h2>

<ul>
        <li cid="n12" mdtype="paragraph">SDSC:标准容量卡(Secure Digital Standard Capacity),上限至2GB,支持FAT 12, 16格式</li>
        <li cid="n12" mdtype="paragraph">SDHC:高容量卡(Secure Digital High Capacity),2GB至 32GB,支持FAT 32格式</li>
        <li cid="n12" mdtype="paragraph">SDXC:容量扩大化卡(Secure Digital eXtended Capacity)32GB至2TB,支持exFAT格式</li>
</ul>

<p cid="n13" mdtype="paragraph">&nbsp;</p>

<h1 cid="n14" mdtype="heading">2 SDIO</h1>

<h2 cid="n15" mdtype="heading">2.1 基本结构</h2>

<p cid="n16" mdtype="paragraph">GD32的SDIO 的结构框图如下图,主要由APB 接口和SDIO 适配器两大部分组成。</p>

<p cid="n16" mdtype="paragraph"></p>

<p cid="n19" mdtype="paragraph">APB 接口:包括通过APB2 总线访问的寄存器、用于数据传输的FIFO 单元以及产生中断和DMA 请求信号。</p>

<ul cid="n20" data-mark="-" mdtype="list">
        <li cid="n21" mdtype="list_item">
        <p cid="n22" mdtype="paragraph">寄存器单元:包含所有的系统寄存器,生成信号用于控制卡与控制器之间的通信。</p>
        </li>
        <li cid="n23" mdtype="list_item">
        <p cid="n24" mdtype="paragraph">数据FIFO 单元:有一个数据缓冲区,用于发送和接收 FIFO</p>
        </li>
</ul>

<p cid="n25" mdtype="paragraph">SDIO 适配器:由控制单元、命令单元和数据单元组成。控制单元管理时钟信号,命令单元管理命令的传输,数据单元管理数据的传输。</p>

<ul cid="n26" data-mark="-" mdtype="list">
        <li cid="n27" mdtype="list_item">
        <p cid="n28" mdtype="paragraph">SDIO_CLK:SDIO 控制器提供给卡的时钟。每个时钟周期在命令线(SDIO_CMD)和所有的数据线(SDIO_DAT)上直接发送一位命令或数据。对于SD卡可以在0 MHz 到25 MHz。</p>
        </li>
        <li cid="n29" mdtype="list_item">
        <p cid="n30" mdtype="paragraph">SDIO_CMD:该信号是双向命令通道,用于卡的初始化和命令的传输。命令从SDIO 控制器发送到卡,响应从卡发送到主机。</p>
        </li>
        <li cid="n31" mdtype="list_item">
        <p cid="n32" mdtype="paragraph">SDIO_DAT:这些信号线都是双向数据通道。数据信号线操作在推挽模式。每次只有卡或者主机会驱动这些信号。默认情况下,上电或者复位后仅 DAT0 用于数据传输。</p>
        </li>
</ul>

<h2 cid="n33" mdtype="heading">2.2 寄存器</h2>

<ul>
        <li cid="n34" mdtype="paragraph">SD卡有一些特殊功能寄存器</li>
        <li cid="n35" mdtype="paragraph">CID:宽度128位,卡标识号,每个读 写( RW )卡应具有唯一的标识号。</li>
        <li cid="n35" mdtype="paragraph">RCA:宽度16位,卡相对地址,在初始化的时候确定。</li>
        <li cid="n35" mdtype="paragraph">CSD:宽度128位,卡描述数据:卡操作条件的信息。</li>
        <li cid="n35" mdtype="paragraph">SCR:宽度64位,SD卡配置寄存器:SD卡特定信息数据。</li>
        <li cid="n35" mdtype="paragraph">OCR:宽度32位,操作条件寄存。</li>
</ul>

<h2 cid="n36" mdtype="heading">2.3 命令</h2>

<p cid="n37" mdtype="paragraph">SDIO通过发送各种命令的方式来操作SD卡,如下图:</p>

<p cid="n37" mdtype="paragraph"></p>

<p>&nbsp;</p>

<p>程序中的命令列表:</p>

<div aria-label="代码段 小部件" contenteditable="false" role="region" tabindex="-1">
<pre data-widget="codesnippet">
<code class="language-cpp hljs"><span class="hljs-comment">/* SD memory card bus commands index */</span>
<span class="hljs-preprocessor">#define SD_CMD_GO_IDLE_STATE                  ((uint8_t)0)   /* CMD0, GO_IDLE_STATE */</span>
<span class="hljs-preprocessor">#define SD_CMD_ALL_SEND_CID                   ((uint8_t)2)   /* CMD2, ALL_SEND_CID */</span>
<span class="hljs-preprocessor">#define SD_CMD_SEND_RELATIVE_ADDR             ((uint8_t)3)   /* CMD3, SEND_RELATIVE_ADDR */</span>
<span class="hljs-preprocessor">#define SD_CMD_SET_DSR                        ((uint8_t)4)   /* CMD4, SET_DSR */</span>
<span class="hljs-preprocessor">#define SD_CMD_SWITCH_FUNC                  ((uint8_t)6)   /* CMD6, SWITCH_FUNC */</span>
<span class="hljs-preprocessor">#define SD_CMD_SELECT_DESELECT_CARD         ((uint8_t)7)   /* CMD7, SELECT_DESELECT_CARD */</span>
<span class="hljs-preprocessor">#define SD_CMD_SEND_IF_COND                   ((uint8_t)8)   /* CMD8, SEND_IF_COND */</span>
<span class="hljs-preprocessor">#define SD_CMD_SEND_CSD                     ((uint8_t)9)   /* CMD9, SEND_CSD */</span>
<span class="hljs-preprocessor">#define SD_CMD_SEND_CID                     ((uint8_t)10)/* CMD10, SEND_CID */</span>
<span class="hljs-preprocessor">#define SD_CMD_STOP_TRANSMISSION            ((uint8_t)12)/* CMD12, STOP_TRANSMISSION */</span>
<span class="hljs-preprocessor">#define SD_CMD_SEND_STATUS                  ((uint8_t)13)/* CMD13, SEND_STATUS */</span>
<span class="hljs-preprocessor">#define SD_CMD_GO_INACTIVE_STATE            ((uint8_t)15)/* CMD15, GO_INACTIVE_STATE */</span>
<span class="hljs-preprocessor">#define SD_CMD_SET_BLOCKLEN                   ((uint8_t)16)/* CMD16, SET_BLOCKLEN */</span>
<span class="hljs-preprocessor">#define SD_CMD_READ_SINGLE_BLOCK            ((uint8_t)17)/* CMD17, READ_SINGLE_BLOCK */</span>
<span class="hljs-preprocessor">#define SD_CMD_READ_MULTIPLE_BLOCK            ((uint8_t)18)/* CMD18, READ_MULTIPLE_BLOCK */</span>
<span class="hljs-preprocessor">#define SD_CMD_WRITE_BLOCK                  ((uint8_t)24)/* CMD24, WRITE_BLOCK */</span>
<span class="hljs-preprocessor">#define SD_CMD_WRITE_MULTIPLE_BLOCK         ((uint8_t)25)/* CMD25, WRITE_MULTIPLE_BLOCK */</span>
<span class="hljs-preprocessor">#define SD_CMD_PROG_CSD                     ((uint8_t)27)/* CMD27, PROG_CSD */</span>
<span class="hljs-preprocessor">#define SD_CMD_SET_WRITE_PROT               ((uint8_t)28)/* CMD28, SET_WRITE_PROT */</span>
<span class="hljs-preprocessor">#define SD_CMD_CLR_WRITE_PROT               ((uint8_t)29)/* CMD29, CLR_WRITE_PROT */</span>
<span class="hljs-preprocessor">#define SD_CMD_SEND_WRITE_PROT                ((uint8_t)30)/* CMD30, SEND_WRITE_PROT */</span>
<span class="hljs-preprocessor">#define SD_CMD_ERASE_WR_BLK_START             ((uint8_t)32)/* CMD32, ERASE_WR_BLK_START */</span>
<span class="hljs-preprocessor">#define SD_CMD_ERASE_WR_BLK_END               ((uint8_t)33)/* CMD33, ERASE_WR_BLK_END */</span>
<span class="hljs-preprocessor">#define SD_CMD_ERASE                        ((uint8_t)38)/* CMD38, ERASE */</span>
<span class="hljs-preprocessor">#define SD_CMD_LOCK_UNLOCK                  ((uint8_t)42)/* CMD42, LOCK_UNLOCK */</span>
<span class="hljs-preprocessor">#define SD_CMD_APP_CMD                        ((uint8_t)55)/* CMD55, APP_CMD */</span>
<span class="hljs-preprocessor">#define SD_CMD_GEN_CMD                        ((uint8_t)56)/* CMD56, GEN_CMD */</span>

<span class="hljs-comment">/* SD memory card application specific commands index */</span>
<span class="hljs-preprocessor">#define SD_APPCMD_SET_BUS_WIDTH               ((uint8_t)6)   /* ACMD6, SET_BUS_WIDTH */</span>
<span class="hljs-preprocessor">#define SD_APPCMD_SD_STATUS                   ((uint8_t)13)/* ACMD13, SD_STATUS */</span>
<span class="hljs-preprocessor">#define SD_APPCMD_SEND_NUM_WR_BLOCKS          ((uint8_t)22)/* ACMD22, SEND_NUM_WR_BLOCKS */</span>
<span class="hljs-preprocessor">#define SD_APPCMD_SET_WR_BLK_ERASE_COUNT      ((uint8_t)23)/* ACMD23, SET_WR_BLK_ERASE_COUNT */</span>
<span class="hljs-preprocessor">#define SD_APPCMD_SD_SEND_OP_COND             ((uint8_t)41)/* ACMD41, SD_SEND_OP_COND */</span>
<span class="hljs-preprocessor">#define SD_APPCMD_SET_CLR_CARD_DETECT         ((uint8_t)42)/* ACMD42, SET_CLR_CARD_DETECT */</span>
<span class="hljs-preprocessor">#define SD_APPCMD_SEND_SCR                  ((uint8_t)51)/* ACMD51, SEND_SCR */</span></code></pre>
<img src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" /><span style="background:rgba(220,220,220,0.5);background-image:url(https://bbs.eeworld.com.cn/static/editor/plugins/widget/images/handle.png)"><img height="15" role="presentation" src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" title="点击并拖拽以移动" width="15" /></span></div>

<h1 cid="n42" mdtype="heading">3 例子程序分析</h1>

<h2 cid="n43" mdtype="heading">3.1 SD卡初始化</h2>

<div aria-label="代码段 小部件" contenteditable="false" role="region" tabindex="-1">
<pre data-widget="codesnippet">
<code class="language-cpp hljs">sd_error_enum sd_config(<span class="hljs-keyword">void</span>)
{
    sd_error_enum status = SD_OK;
    uint32_t cardstate = <span class="hljs-number">0</span>;
       
    <span class="hljs-comment">/* initialize the card */</span>
    status = sd_init();<span class="hljs-comment">//SD卡初始化---GPIO、SDIO</span>
    <span class="hljs-keyword">if</span>(SD_OK == status)
        {
      status = sd_card_information_get(&amp;sd_cardinfo);<span class="hljs-comment">//获取SD卡信息</span>
    }
    <span class="hljs-keyword">if</span>(SD_OK == status)
        {
      status = sd_card_select_deselect(sd_cardinfo.card_rca);<span class="hljs-comment">//挂载SD卡</span>
    }
       
    status = sd_cardstatus_get(&amp;cardstate);
    <span class="hljs-keyword">if</span>(cardstate &amp; <span class="hljs-number">0x02000000</span>)
        {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n the card is locked!&quot;</span>);
      <span class="hljs-keyword">while</span> (<span class="hljs-number">1</span>){
      }
    }
    <span class="hljs-keyword">if</span> ((SD_OK == status) &amp;&amp; (!(cardstate &amp; <span class="hljs-number">0x02000000</span>)))
    {
      <span class="hljs-comment">/* set bus mode */</span>
      status = sd_bus_mode_config(SDIO_BUSMODE_4BIT);<span class="hljs-comment">//配置总线模式</span>
    }
    <span class="hljs-keyword">if</span> (SD_OK == status)
    {
      <span class="hljs-comment">/* set data transfer mode */</span>
      status = sd_transfer_mode_config( SD_POLLING_MODE );<span class="hljs-comment">//配置传输模式</span>
    }
    <span class="hljs-keyword">return</span> status;
}</code></pre>
<img src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" /><span style="background:rgba(220,220,220,0.5);background-image:url(https://bbs.eeworld.com.cn/static/editor/plugins/widget/images/handle.png)"><img height="15" role="presentation" src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" title="点击并拖拽以移动" width="15" /></span></div>

<h2 cid="n45" mdtype="heading">3.2 读取SD卡基本信息</h2>

<p cid="n46" mdtype="paragraph">包括sd卡的版本,类型,容量,块大小与数量等。</p>

<div aria-label="代码段 小部件" contenteditable="false" role="region" tabindex="-1">
<pre data-widget="codesnippet">
<code class="language-cpp hljs"><span class="hljs-keyword">void</span> card_info_get(<span class="hljs-keyword">void</span>)
{
    uint8_t sd_spec, sd_spec3, sd_spec4, sd_security;
    uint32_t block_count, block_size;
    uint16_t temp_ccc;
    <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n Card information:&quot;</span>);
       
        <span class="hljs-comment">//SD卡版本</span>
    sd_spec = (sd_scr[<span class="hljs-number">1</span>] &amp; <span class="hljs-number">0x0F000000</span>) &gt;&gt; <span class="hljs-number">24</span>;
    sd_spec3 = (sd_scr[<span class="hljs-number">1</span>] &amp; <span class="hljs-number">0x00008000</span>) &gt;&gt; <span class="hljs-number">15</span>;
    sd_spec4 = (sd_scr[<span class="hljs-number">1</span>] &amp; <span class="hljs-number">0x00000400</span>) &gt;&gt; <span class="hljs-number">10</span>;
    <span class="hljs-keyword">if</span>(<span class="hljs-number">2</span> == sd_spec)
    {
      <span class="hljs-keyword">if</span>(<span class="hljs-number">1</span> == sd_spec3)
      {
            <span class="hljs-keyword">if</span>(<span class="hljs-number">1</span> == sd_spec4)
            {
                <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## Card version 4.xx ##&quot;</span>);
            }
            <span class="hljs-keyword">else</span>
            {
                <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## Card version 3.0x ##&quot;</span>);
            }
      }
      <span class="hljs-keyword">else</span>
      {
            <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## Card version 2.00 ##&quot;</span>);
      }
    }
    <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(<span class="hljs-number">1</span> == sd_spec)
    {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## Card version 1.10 ##&quot;</span>);
    }
    <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(<span class="hljs-number">0</span> == sd_spec)
    {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## Card version 1.0x ##&quot;</span>);
    }
   
        <span class="hljs-comment">//SD卡类型</span>
    sd_security = (sd_scr[<span class="hljs-number">1</span>] &amp; <span class="hljs-number">0x00700000</span>) &gt;&gt; <span class="hljs-number">20</span>;
    <span class="hljs-keyword">if</span>(<span class="hljs-number">2</span> == sd_security)
    {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## SDSC card ##&quot;</span>);<span class="hljs-comment">//标准容量卡SDSC,最大2G</span>
    }
    <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(<span class="hljs-number">3</span> == sd_security)
    {   
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## SDHC card ##&quot;</span>);<span class="hljs-comment">//高容量卡SDHC,最大32G</span>
    }
    <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(<span class="hljs-number">4</span> == sd_security)
    {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## SDXC card ##&quot;</span>);
    }
   
    block_count = (sd_cardinfo.card_csd.c_size + <span class="hljs-number">1</span>)*<span class="hljs-number">1024</span>;
    block_size = <span class="hljs-number">512</span>;
       
        <span class="hljs-comment">//SD卡容量</span>
    <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## Device size is %dKB ##&quot;</span>, sd_card_capacity_get());
       
        <span class="hljs-comment">//SD卡 块的大小</span>
    <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## Block size is %dB ##&quot;</span>, block_size);
       
        <span class="hljs-comment">//SD卡 块的个数</span>
    <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## Block count is %d ##&quot;</span>, block_count);
   
    <span class="hljs-keyword">if</span>(sd_cardinfo.card_csd.read_bl_partial)
        {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## Partial blocks for read allowed ##&quot;</span> );
    }
    <span class="hljs-keyword">if</span>(sd_cardinfo.card_csd.write_bl_partial)
        {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## Partial blocks for write allowed ##&quot;</span> );
    }
       
        <span class="hljs-comment">//SD卡 卡命令集</span>
    temp_ccc = sd_cardinfo.card_csd.ccc;
    <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## CardCommandClasses is: %x ##&quot;</span>, temp_ccc);
    <span class="hljs-keyword">if</span>((SD_CCC_BLOCK_READ &amp; temp_ccc) &amp;&amp; (SD_CCC_BLOCK_WRITE &amp; temp_ccc))
        {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## Block operation supported ##&quot;</span>);
    }
    <span class="hljs-keyword">if</span>(SD_CCC_ERASE &amp; temp_ccc)
        {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## Erase supported ##&quot;</span>);
    }
    <span class="hljs-keyword">if</span>(SD_CCC_WRITE_PROTECTION &amp; temp_ccc)
        {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## Write protection supported ##&quot;</span>);
    }
    <span class="hljs-keyword">if</span>(SD_CCC_LOCK_CARD &amp; temp_ccc)
        {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## Lock unlock supported ##&quot;</span>);
    }
    <span class="hljs-keyword">if</span>(SD_CCC_APPLICATION_SPECIFIC &amp; temp_ccc)
        {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## Application specific supported ##&quot;</span>);
    }
    <span class="hljs-keyword">if</span>(SD_CCC_IO_MODE &amp; temp_ccc)
        {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## I/O mode supported ##&quot;</span>);
    }
    <span class="hljs-keyword">if</span>(SD_CCC_SWITCH &amp; temp_ccc)
        {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n## Switch function supported ##&quot;</span>);
    }
}</code></pre>
<img src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" /><span style="background:rgba(220,220,220,0.5);background-image:url(https://bbs.eeworld.com.cn/static/editor/plugins/widget/images/handle.png)"><img height="15" role="presentation" src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" title="点击并拖拽以移动" width="15" /></span></div>

<h2 cid="n48" mdtype="heading">3.3 SD卡测试</h2>

<div aria-label="代码段 小部件" contenteditable="false" role="region" tabindex="-1">
<pre data-widget="codesnippet">
<code class="language-cpp hljs"><span class="hljs-comment">//开始SD卡测试</span>
<span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n\r\n Card test:&quot;</span>);

<span class="hljs-comment">/* single block operation test=============单个块读写测试============= */</span>
sd_error = sd_block_write(buf_write, <span class="hljs-number">100</span>*<span class="hljs-number">512</span>, <span class="hljs-number">512</span>);<span class="hljs-comment">//---------写入数据</span>
<span class="hljs-keyword">if</span>(SD_OK != sd_error)
{
    <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n Block write fail!&quot;</span>);
    <span class="hljs-comment">/* turn on LED1, LED3 and turn off LED2 */</span>
    gd_eval_led_on(LED1);
    gd_eval_led_on(LED3);
    gd_eval_led_off(LED2);
    <span class="hljs-keyword">while</span> (<span class="hljs-number">1</span>)
    {
    }
}
<span class="hljs-keyword">else</span>
{
    <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n Block write success!&quot;</span>);
}

sd_error = sd_block_read(buf_read, <span class="hljs-number">100</span>*<span class="hljs-number">512</span>, <span class="hljs-number">512</span>);<span class="hljs-comment">//-----------读取数据</span>
<span class="hljs-keyword">if</span>(SD_OK != sd_error)
{
    <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n Block read fail!&quot;</span>);
    <span class="hljs-comment">/* turn on LED1, LED3 and turn off LED2 */</span>
    gd_eval_led_on(LED1);
    gd_eval_led_on(LED3);
    gd_eval_led_off(LED2);
    <span class="hljs-keyword">while</span> (<span class="hljs-number">1</span>)
    {
    }
}<span class="hljs-keyword">else</span>
{
    <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n Block read success!&quot;</span>);
    <span class="hljs-comment">//打印读取到的数据</span>
    pdata = (uint8_t *)buf_read;
    <span class="hljs-comment">/* print data by USART */</span>
    <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n&quot;</span>);
    <span class="hljs-keyword">for</span>(i = <span class="hljs-number">0</span>; i &lt; <span class="hljs-number">128</span>; i++)
    {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot; %3d %3d %3d %3d &quot;</span>, *pdata, *(pdata+<span class="hljs-number">1</span>), *(pdata+<span class="hljs-number">2</span>), *(pdata+<span class="hljs-number">3</span>));
      pdata += <span class="hljs-number">4</span>;
      <span class="hljs-keyword">if</span>(<span class="hljs-number">0</span> == (i + <span class="hljs-number">1</span>) % <span class="hljs-number">4</span>)
      {
            <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n&quot;</span>);
      }
    }
}

<span class="hljs-comment">/* lock and unlock operation test */</span>
<span class="hljs-keyword">if</span>(SD_CCC_LOCK_CARD &amp; sd_cardinfo.card_csd.ccc)
{
    <span class="hljs-comment">/* lock the card */</span>
    sd_error = sd_lock_unlock(SD_LOCK); <span class="hljs-comment">//-----------SD卡加锁</span>
    <span class="hljs-keyword">if</span>(SD_OK != sd_error)
    {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n Lock failed!&quot;</span>);
      <span class="hljs-comment">/* turn on LED1, LED3 and turn off LED2 */</span>
      gd_eval_led_on(LED1);
      gd_eval_led_on(LED3);
      gd_eval_led_off(LED2);
      <span class="hljs-keyword">while</span> (<span class="hljs-number">1</span>)
      {

      }
    }<span class="hljs-keyword">else</span>
    {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n The card is locked!&quot;</span>);
    }
    sd_error = sd_erase(<span class="hljs-number">100</span>*<span class="hljs-number">512</span>, <span class="hljs-number">101</span>*<span class="hljs-number">512</span>);<span class="hljs-comment">//-------------SD卡擦除</span>
    <span class="hljs-keyword">if</span>(SD_OK != sd_error)
    {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n Erase failed!&quot;</span>);
    }
    <span class="hljs-keyword">else</span>
    {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n Erase success!&quot;</span>);
    }

    <span class="hljs-comment">/* unlock the card */</span>
    sd_error = sd_lock_unlock(SD_UNLOCK);<span class="hljs-comment">//--------------SD卡解锁</span>
    <span class="hljs-keyword">if</span>(SD_OK != sd_error)
    {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n Unlock failed!&quot;</span>);
      <span class="hljs-comment">/* turn on LED1, LED3 and turn off LED2 */</span>
      gd_eval_led_on(LED1);
      gd_eval_led_on(LED3);
      gd_eval_led_off(LED2);
      <span class="hljs-keyword">while</span> (<span class="hljs-number">1</span>){
      }
    }
    <span class="hljs-keyword">else</span>
    {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n The card is unlocked!&quot;</span>);
    }
    sd_error = sd_erase(<span class="hljs-number">100</span>*<span class="hljs-number">512</span>, <span class="hljs-number">101</span>*<span class="hljs-number">512</span>);<span class="hljs-comment">//------------SD卡擦除</span>
    <span class="hljs-keyword">if</span>(SD_OK != sd_error){
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n Erase failed!&quot;</span>);
    }<span class="hljs-keyword">else</span>{
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n Erase success!&quot;</span>);
    }

    sd_error = sd_block_read(buf_read, <span class="hljs-number">100</span>*<span class="hljs-number">512</span>, <span class="hljs-number">512</span>);<span class="hljs-comment">//--------------SD卡读取</span>
    <span class="hljs-keyword">if</span>(SD_OK != sd_error)
    {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n Block read fail!&quot;</span>);
      <span class="hljs-comment">/* turn on LED1, LED3 and turn off LED2 */</span>
      gd_eval_led_on(LED1);
      gd_eval_led_on(LED3);
      gd_eval_led_off(LED2);
      <span class="hljs-keyword">while</span> (<span class="hljs-number">1</span>){
      }
    }
    <span class="hljs-keyword">else</span>
    {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n Block read success!&quot;</span>);
      pdata = (uint8_t *)buf_read;
      <span class="hljs-comment">/* print data by USART */</span>
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n&quot;</span>);
      <span class="hljs-keyword">for</span>(i = <span class="hljs-number">0</span>; i &lt; <span class="hljs-number">128</span>; i++)
      {
            <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot; %3d %3d %3d %3d &quot;</span>, *pdata, *(pdata+<span class="hljs-number">1</span>), *(pdata+<span class="hljs-number">2</span>), *(pdata+<span class="hljs-number">3</span>));
            pdata += <span class="hljs-number">4</span>;
            <span class="hljs-keyword">if</span>(<span class="hljs-number">0</span> == (i + <span class="hljs-number">1</span>) % <span class="hljs-number">4</span>)
            {
                <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n&quot;</span>);
            }
      }               
    }
}

<span class="hljs-comment">/* multiple blocks operation test =============多个块读写测试============= */</span>
sd_error = sd_multiblocks_write(buf_write, <span class="hljs-number">200</span>*<span class="hljs-number">512</span>, <span class="hljs-number">512</span>, <span class="hljs-number">3</span>);<span class="hljs-comment">//----------多个块写入数据</span>
<span class="hljs-keyword">if</span>(SD_OK != sd_error)
{
    <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n Multiple block write fail!&quot;</span>);
    <span class="hljs-comment">/* turn on LED1, LED3 and turn off LED2 */</span>
    gd_eval_led_on(LED1);
    gd_eval_led_on(LED3);
    gd_eval_led_off(LED2);
    <span class="hljs-keyword">while</span> (<span class="hljs-number">1</span>){
    }
}
<span class="hljs-keyword">else</span>
{
    <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n Multiple block write success!&quot;</span>);
}
sd_error = sd_multiblocks_read(buf_read, <span class="hljs-number">200</span>*<span class="hljs-number">512</span>, <span class="hljs-number">512</span>, <span class="hljs-number">3</span>);<span class="hljs-comment">//------------多个块读取数据</span>
<span class="hljs-keyword">if</span>(SD_OK != sd_error)
{
    <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n Multiple block read fail!&quot;</span>);
    <span class="hljs-comment">/* turn on LED1, LED3 and turn off LED2 */</span>
    gd_eval_led_on(LED1);
    gd_eval_led_on(LED3);
    gd_eval_led_off(LED2);
    <span class="hljs-keyword">while</span> (<span class="hljs-number">1</span>){
    }
}
<span class="hljs-keyword">else</span>
{
    <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n Multiple block read success!&quot;</span>);
    pdata = (uint8_t *)buf_read;
    <span class="hljs-comment">/* print data by USART */</span>
    <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n&quot;</span>);
    <span class="hljs-keyword">for</span>(i = <span class="hljs-number">0</span>; i &lt; <span class="hljs-number">512</span>; i++)
    {
      <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot; %3d %3d %3d %3d &quot;</span>, *pdata, *(pdata+<span class="hljs-number">1</span>), *(pdata+<span class="hljs-number">2</span>), *(pdata+<span class="hljs-number">3</span>));
      pdata += <span class="hljs-number">4</span>;
      <span class="hljs-keyword">if</span>(<span class="hljs-number">0</span> == (i + <span class="hljs-number">1</span>) % <span class="hljs-number">4</span>)
      {
            <span class="hljs-built_in">printf</span>(<span class="hljs-string">&quot;\r\n&quot;</span>);
      }
    }
}</code></pre>
<img src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" /><span style="background:rgba(220,220,220,0.5);background-image:url(https://bbs.eeworld.com.cn/static/editor/plugins/widget/images/handle.png)"><img height="15" role="presentation" src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" title="点击并拖拽以移动" width="15" /></span></div>

<h2 cid="n50" mdtype="heading">3.4 测试结果</h2>

<p cid="n51" mdtype="paragraph">通过串口打印测试结果,从结果来看,测试用到的microSD卡为:4.xx版的SDHC大容量卡,16GB(15441920KB),支持块操作,支持加锁解锁操作。</p>

<p cid="n52" mdtype="paragraph">数据读写测试了单个块写入读取与多个块写入读取正常,在加锁后则无法读取,解锁后可正常读取。</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<div aria-label="代码段 小部件" contenteditable="false" role="region" tabindex="-1">
<pre data-widget="codesnippet">
<code class="language-bash hljs">Card init success!

Card information:
<span class="hljs-comment">## Card version 4.xx ##</span>
<span class="hljs-comment">## SDHC card ##</span>
<span class="hljs-comment">## Device size is 15441920KB ##</span>
<span class="hljs-comment">## Block size is 512B ##</span>
<span class="hljs-comment">## Block count is 30883840 ##</span>
<span class="hljs-comment">## CardCommandClasses is: db7 ##</span>
<span class="hljs-comment">## Block operation supported ##</span>
<span class="hljs-comment">## Erase supported ##</span>
<span class="hljs-comment">## Lock unlock supported ##</span>
<span class="hljs-comment">## Application specific supported ##</span>
<span class="hljs-comment">## Switch function supported ##</span>

Card test:
Block write success!
Block <span class="hljs-built_in">read</span> success!
   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">2</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">3</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
   <span class="hljs-number">4</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">5</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">6</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">7</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
...略去若干行
<span class="hljs-number">112</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">113</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">114</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">115</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
<span class="hljs-number">116</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">117</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">118</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">119</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
<span class="hljs-number">120</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">121</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">122</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">123</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
<span class="hljs-number">124</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">125</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">126</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">127</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>

The card is locked!
Erase failed!
The card is unlocked!
Erase success!
Block <span class="hljs-built_in">read</span> success!
   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
...略去若干行
   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>

Multiple block write success!
Multiple block <span class="hljs-built_in">read</span> success!
   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">2</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">3</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
   <span class="hljs-number">4</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">5</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">6</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">7</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
...略去若干行
<span class="hljs-number">112</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">113</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">114</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">115</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
<span class="hljs-number">116</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">117</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">118</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">119</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
<span class="hljs-number">120</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">121</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">122</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">123</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
<span class="hljs-number">124</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">125</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">126</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">127</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
<span class="hljs-number">128</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">129</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">130</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">131</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
<span class="hljs-number">132</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">133</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">134</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">135</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
...略去若干行
<span class="hljs-number">236</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">237</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">238</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">239</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
<span class="hljs-number">240</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">241</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">242</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">243</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
<span class="hljs-number">244</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">245</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">246</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">247</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
<span class="hljs-number">248</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">249</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">250</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">251</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
<span class="hljs-number">252</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">253</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">254</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">255</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
   <span class="hljs-number">0</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">1</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">2</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">3</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
   <span class="hljs-number">4</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">5</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">6</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">7</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
...略去若干行
<span class="hljs-number">112</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">113</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">114</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">115</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
<span class="hljs-number">116</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">117</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">118</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">119</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
<span class="hljs-number">120</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">121</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">122</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">123</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
<span class="hljs-number">124</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">125</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">126</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span><span class="hljs-number">127</span>   <span class="hljs-number">1</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
...略去若干行
   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>   <span class="hljs-number">0</span>
</code></pre>
<img src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" /><span style="background:rgba(220,220,220,0.5);background-image:url(https://bbs.eeworld.com.cn/static/editor/plugins/widget/images/handle.png)"><img height="15" role="presentation" src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" title="点击并拖拽以移动" width="15" /></span></div>

<p>&nbsp;</p>

w494143467 发表于 2020-10-18 18:16

<p>感谢分享,每一个测评都做得这么认真!</p>

okhxyyo 发表于 2020-10-19 10:22

<p><a href="https://bbs.eeworld.com.cn/thread-1140981-1-1.html" target="_blank">兆易GD32450I-EVAL</a></p>

<p>汇总贴:<a href="https://bbs.eeworld.com.cn/thread-1140981-1-1.html">https://bbs.eeworld.com.cn/thread-1140981-1-1.html</a></p>
页: [1]
查看完整版本: 【GD32450I-EVAL】+10SD卡测试