打印
[其他]

【评测】sd

[复制链接]
6801|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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点亮:


拔除卡红色LED点亮:


对照例程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

粉丝