当前位置: 首页 新闻资讯 技术问答

关于SD卡挂载失败解决方法

SD NAND-贴片式TF卡-贴片式SD卡-免费测试2024-01-12690

单片机为STM32F103RBT6,SD卡为金士顿8G。

在SD卡初始化通过后,在挂载SD卡时,遇到了问题,挂载部分代码如下:

//     exfuns_init();                            //为fatfs相关变量申请内存                
    while(FR_OK != f_mount(pfs[0],"0:",1)) //挂载SD卡
    {
        printf("SD Mount Failed ! ");
        LED1=!LED1;//DS1慢闪烁
        delay_ms(800);                
    }
如上所示,挂载函数总是返回 FR_DISK_ERR,错误信息为底层IO的硬件错误,具体一点,是在find_volume()函数的读取0扇区(检查 FAT boot sector)处返回了3号错误:

图片.png

既然是硬件IO错误,那么就应该首先想到的是SD卡模块或者单片机的SPI模块的问题,经过尝试后的解决方法为,

降低SPI通信速度!!!!!!之前初始化完成后,将SPI速度提升到了36M,设置如下:

//SD卡正常工作的时候,可以高速了
void SD_SPI_SpeedHigh(void)
{
     SPI_SetSpeed(SPI_BaudRatePrescaler_2,SD_SPI);//设置到高速模式    
}

从而导致了在传输数据过程中发生了硬件错误,将速度降为18M及以下,成功挂载并读取卡信息!


挂载失败排查方法:

  1. 检查SD卡是否插好。

  2. 检查SD卡是否已经挂载。如果已经挂载,先卸载再重新挂载。

  3. 尝试手动挂载SD卡。使用以下命令:

    sudo mount /dev/sdb1 /mnt/sdcard

    其中,/dev/sdb1应根据系统实际情况修改,/mnt/sdcard为挂载点目录。

    disk_initialize()函数失败移植不成功。

  4. 检查文件系统格式是否正确。SD卡可支持的格式包括FAT、FAT32和exFAT。使用以下命令检查SD卡格式:

    sudo fdisk -l

    如果SD卡格式不正确,需要重新格式化SD卡。使用以下命令格式化SD卡:

    sudo mkfs.vfat -F 32 /dev/sdb1

    其中,/dev/sdb1应根据系统实际情况修改。

  5. 检查外部保护器件用法,是否用错导致检测引脚电平出错。

  6. 如果以上方法都无法解决问题,尝试更换SD卡或更换读卡器。

热门标签:SDNAND贴片式TF卡贴片式SD卡SD FLASHSLC NANDNAND FLASH


SD NAND-贴片式TF卡-贴片式SD卡-免费测试

深圳市芯存者科技有限公司

售前咨询
售前咨询
售后服务
售后服务
联系我们

电话:176-6539-0767

Q Q:135-0379-986

邮箱:1350379986@qq.com

地址:深圳市南山区蛇口街道后海大道1021号B C座C422W8

在线客服 在线客服 QQ客服 微信客服 淘宝店铺 联系我们 返回顶部