[其他] 【评测】sd

[复制链接]
6068|0
手机看帖
扫描二维码
随时随地手机跟帖
Gavin3389|  楼主 | 2021-9-24 09:24 | 显示全部楼层 |阅读模式
sd, ST, TE, ck, blocks, se
本帖最后由 Gavin3389 于 2021-9-24 09:26 编辑

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

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

主函数:
/**
*******************************************************************************
** \brief  Main function of project
**
** \param  None
**
** \retval int32_t return value, if needed
**
******************************************************************************/
int32_t main(void)
{
    uint32_t i;
    en_result_t enTestResult = Ok;
    static stc_sd_handle_t stcSdhandle;
    static uint32_t au32WriteBlocks[512];
    static uint32_t au32ReadBlocks[ARRAY_SZ(au32WriteBlocks)];
    stc_sdcard_init_t stcCardInitCfg =
    {
        SdiocBusWidth1Bit,
        SdiocClk25M,
        SdiocNormalSpeedMode,
        NULL,
    };

    /* Write buffer data */
    for (i = 0ul; i < ARRAY_SZ(au32WriteBlocks); i++)
    {
        au32WriteBlocks[i] = i;
    }

    MEM_ZERO_STRUCT(au32ReadBlocks);

    /* BSP initialization */
    BSP_CLK_Init();
    BSP_LED_Init();

    /* Initialize SDIOC pin */
    SdiocInitPins();

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

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

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

    /* Check whether data value is OxFFFFFFFF or 0x00000000 after erase SD card */
    for (i = 0u; i < ARRAY_SZ(au32WriteBlocks); i++)
    {
        if ((au32ReadBlocks[i] != 0xFFFFFFFFul) &&
            (au32ReadBlocks[i] != 0x00000000ul))
        {
            enTestResult = Error;
            break;
        }
    }

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

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

    /* Compare read/write data */
    if (0 != memcmp(au32WriteBlocks, au32ReadBlocks, sizeof(au32ReadBlocks)))
    {
        enTestResult = Error;
    }

    if (Ok == enTestResult)
    {
        BSP_LED_On(LED_GREEN);    /* Test pass && meet the expected */
    }
    else
    {
        BSP_LED_On(LED_RED);    /* Test fail && don't meet the expected */
    }

    while (1)
    {
    }
}

测试效果:
插入卡绿色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:表示测试结果符合预期;

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


结论:测试通过!

使用特权

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

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

本版热帖

本版活跃用户

优质原创写原创,赢大奖

编辑推荐

  • 1 呐咯密密 得到打赏 ¥310.00
  • 2 yanzhengxin1 得到打赏 ¥150.00
  • 3 qbwww 得到打赏 ¥135.00
  • 4 full_stack 得到打赏 ¥100.00
  • 5 laocuo1142 得到打赏 ¥55.00
  • 6 二哲科技 得到打赏 ¥50.00
  • 7 cjseng 得到打赏 ¥50.00
  • 8 zhangjiantao 得到打赏 ¥50.00
  • 9 qintian0303 得到打赏 ¥25.00
  • 10 改名了 得到打赏 ¥20.00
在线客服 快速回复 返回顶部 返回列表