[其他] 【评测】sd

[复制链接]
 楼主| Gavin3389 发表于 2021-9-24 09:24 | 显示全部楼层 |阅读模式
本帖最后由 Gavin3389 于 2021-9-24 09:26 编辑

这个没做具体测试和更改,完全把例程编译下载,看效果。

例程出处:
hc32f460_ddl_Rev2.1.0
sd_multi_write_multi_read_1bit_25mhz
卡容量:16G

主函数:
  1. /**
  2. *******************************************************************************
  3. ** \brief  Main function of project
  4. **
  5. ** \param  None
  6. **
  7. ** \retval int32_t return value, if needed
  8. **
  9. ******************************************************************************/
  10. int32_t main(void)
  11. {
  12.     uint32_t i;
  13.     en_result_t enTestResult = Ok;
  14.     static stc_sd_handle_t stcSdhandle;
  15.     static uint32_t au32WriteBlocks[512];
  16.     static uint32_t au32ReadBlocks[ARRAY_SZ(au32WriteBlocks)];
  17.     stc_sdcard_init_t stcCardInitCfg =
  18.     {
  19.         SdiocBusWidth1Bit,
  20.         SdiocClk25M,
  21.         SdiocNormalSpeedMode,
  22.         NULL,
  23.     };

  24.     /* Write buffer data */
  25.     for (i = 0ul; i < ARRAY_SZ(au32WriteBlocks); i++)
  26.     {
  27.         au32WriteBlocks[i] = i;
  28.     }

  29.     MEM_ZERO_STRUCT(au32ReadBlocks);

  30.     /* BSP initialization */
  31.     BSP_CLK_Init();
  32.     BSP_LED_Init();

  33.     /* Initialize SDIOC pin */
  34.     SdiocInitPins();

  35.     /* Initialize SD card */
  36.     stcSdhandle.SDIOCx = SDIOC_UNIT;
  37.     if (Ok != SDCARD_Init(&stcSdhandle, &stcCardInitCfg))
  38.     {
  39.         enTestResult = Error;
  40.     }

  41.     /* Erase SD card */
  42.     if (Ok != SDCARD_Erase(&stcSdhandle, SD_SECTOR_START, SD_SECTOR_COUNT, 20000u))
  43.     {
  44.         enTestResult = Error;
  45.     }

  46.     /* Read SD card */
  47.     if (Ok != SDCARD_ReadBlocks(&stcSdhandle, SD_SECTOR_START, SD_SECTOR_COUNT, (uint8_t *)au32ReadBlocks, 2000u))
  48.     {
  49.         enTestResult = Error;
  50.     }

  51.     /* Check whether data value is OxFFFFFFFF or 0x00000000 after erase SD card */
  52.     for (i = 0u; i < ARRAY_SZ(au32WriteBlocks); i++)
  53.     {
  54.         if ((au32ReadBlocks[i] != 0xFFFFFFFFul) &&
  55.             (au32ReadBlocks[i] != 0x00000000ul))
  56.         {
  57.             enTestResult = Error;
  58.             break;
  59.         }
  60.     }

  61.     /* Write SD card */
  62.     if (Ok != SDCARD_WriteBlocks(&stcSdhandle, SD_SECTOR_START, SD_SECTOR_COUNT, (uint8_t *)au32WriteBlocks, 2000u))
  63.     {
  64.         enTestResult = Error;
  65.     }

  66.     /* Read SD card */
  67.     if (Ok != SDCARD_ReadBlocks(&stcSdhandle, SD_SECTOR_START, SD_SECTOR_COUNT, (uint8_t *)au32ReadBlocks, 20000u))
  68.     {
  69.         enTestResult = Error;
  70.     }

  71.     /* Compare read/write data */
  72.     if (0 != memcmp(au32WriteBlocks, au32ReadBlocks, sizeof(au32ReadBlocks)))
  73.     {
  74.         enTestResult = Error;
  75.     }

  76.     if (Ok == enTestResult)
  77.     {
  78.         BSP_LED_On(LED_GREEN);    /* Test pass && meet the expected */
  79.     }
  80.     else
  81.     {
  82.         BSP_LED_On(LED_RED);    /* Test fail && don't meet the expected */
  83.     }

  84.     while (1)
  85.     {
  86.     }
  87. }

测试效果:
插入卡绿色LED点亮:
79699614d280f19a4d.png

拔除卡红色LED点亮:
16762614d2844bdd80.png

对照例程txt说明:
================================================================================
                                样例使用说明
================================================================================
版本历史
日期          作者         IAR     MDK     GCC     描述
2018-11-08    CDT          7.70    5.16    8.3.1   first version
================================================================================
平台说明
================================================================================
GCC工程,由Eclipse IDE外挂GNU-ARM Toolchain,再结合pyOCD GDB Server实现工程的编译、
链接和调试。在用Eclipse导入工程后,请将xxxx_PyOCDDebug中pyocd-gdbserver和SVD文件
设置为正确的路径;请将xxxx_PyOCDDownload中pyocd设置为正确的路径。注意,这些路径不
能包含非英文字符。


功能描述
================================================================================
本样例主要展示如何通过普通速度模式25MHz,多块1bit模式,读写SD卡。

说明:


================================================================================
测试环境
================================================================================
测试用板:
---------------------
EV-HC32F460-LQFP100-050-V1.3

辅助工具:
---------------------


辅助软件:
---------------------


================================================================================
使用步骤
================================================================================
1)测试板SD卡Socket插入MicroSD卡;
2)打开工程并重新编译;
3)启动IDE的下载和调试功能,全速运行;
4)LED_GREEN点亮,读写数据一致,测试结果符合预期。

================================================================================
注意
================================================================================
LED指示灯说明:
    LED_RED:表示测试结果不符合预期;
    LED_GREEN:表示测试结果符合预期;

================================================================================


结论:测试通过!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

536

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部

30

主题

536

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部