SF32LB52B可以使用SDIO驱动TF卡吗?

配置了使用SDIO,找不到TF卡,示波器测量时钟线没看到有反应。

rt_pin_mode(11, PIN_MODE_INPUT);

while (rt_pin_read(11) == PIN_HIGH)

{

    LOG_W("Please insert TF card.\\n");

    rt_thread_mdelay(1000);

}



LOG_I("TF card detected.\\n");



rt_device_t msd = rt_device_find("sd0");

if (msd == NULL)

{

    LOG_E("Error: the flash device name (sd0) is not found.\\n");

    return false;

}

用的哪个例子,参考

example/rt_device/emmc/project · 思澈科技/SiFli-SDK - 码云 - 开源中国

pinmux要配置对

这个例程尝试过了,也不行,我设置了sdio的功能引脚,设置如下:

HAL_PIN_Set(PAD_PA14, SD1_CLK, PIN_NOPULL, 1);

HAL_PIN_Set(PAD_PA15, SD1_CMD, PIN_NOPULL, 1);

HAL_PIN_Set(PAD_PA16, SD1_DIO0, PIN_NOPULL, 1);

HAL_PIN_Set(PAD_PA17, SD1_DIO1, PIN_NOPULL, 1);

HAL_PIN_Set(PAD_PA12, SD1_DIO2, PIN_NOPULL, 1);

HAL_PIN_Set(PAD_PA13, SD1_DIO3, PIN_NOPULL, 1);

这个是emmc例程打印的设备列表,没有sd0。

现有的52B Nano开发板相关管脚(PA12~PA17)固定连接到外置NorFlash上,因此不支持eMMC。参考许愿,目前sdio资料比较少,希望出一个例程读写emmc 挂载文件系统 - 许愿池 - SiFli BBS

1 个赞

我另外做了板子把SDIO给了TF卡座,尝试配置新板子模板也没修改使用SDIO的头绪,打算把板子开源暂时放下了,不熟悉软件架构也没时间折腾适配 :innocent:

main分支有块板子sf32lb52-core_e8r16,但开发板资料还没开放,是基于SF32LB52J,从SDIO接口的TF卡启动,不使用MPI2,MPI1仍旧接PSRAM,
SF32LB52-CORE_E8R16 - SiFli SDK编程指南 文档

pinmux配置代码参考这里
SiFli-SDK/customer/boards/sf32lb52-core_base/bsp_pinmux.c at main · OpenSiFli/SiFli-SDK

    HAL_PIN_Set(PAD_PA15, SD1_CMD, PIN_PULLUP, 1);
    HAL_PIN_Set(PAD_PA14, SD1_CLK,  PIN_NOPULL, 1);
    HAL_PIN_Set(PAD_PA16, SD1_DIO0, PIN_PULLUP, 1);
    HAL_PIN_Set(PAD_PA17, SD1_DIO1, PIN_PULLUP, 1);
    HAL_PIN_Set(PAD_PA12, SD1_DIO2, PIN_PULLUP, 1);
    HAL_PIN_Set(PAD_PA13, SD1_DIO3, PIN_PULLUP, 1);
    HAL_PIN_Set(PAD_PA11, GPIO_A11, PIN_PULLUP, 1);

使用52B虽然也能避免使用MPI2,从内置的Flash启动,但因为没有了PSRAM,应用场景就比较受限了,内置Flash的容量也有限,放不了太多代码

我有空了再去看看,不带彩屏的应用 片内SRAM以及4M的flash很多时候也够用了,IO都挂在大核上也方便控制以及功耗更低。